From 2cb3813389985eabf0aaf436e2b99e53e95921f5 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Mon, 12 Apr 2010 17:15:58 +0000 Subject: [PATCH] *** empty log message *** --- gbe_ecp2m/feeder.vhd | 620 ++ gbe_ecp2m/ip_configurator.vhd | 337 ++ gbe_ecp2m/ipcores/.cvsignore | 6 + gbe_ecp2m/ipcores/fifo_2048x8.lpc | 47 + gbe_ecp2m/ipcores/fifo_2048x8.vhd | 1913 ++++++ gbe_ecp2m/ipcores/fifo_2048x8_tmpl.vhd | 18 + gbe_ecp2m/ipcores/fifo_32kx16x8_mb.lpc | 47 + gbe_ecp2m/ipcores/fifo_32kx16x8_mb.vhd | 5245 +++++++++++++++++ gbe_ecp2m/ipcores/fifo_32kx16x8_mb_tmpl.vhd | 26 + gbe_ecp2m/ipcores/fifo_4096x32.lpc | 47 + gbe_ecp2m/ipcores/fifo_4096x32.vhd | 2415 ++++++++ gbe_ecp2m/ipcores/fifo_4096x32_tmpl.vhd | 18 + gbe_ecp2m/ipcores/fifo_4096x9.lpc | 47 + gbe_ecp2m/ipcores/fifo_4096x9.vhd | 2171 +++++++ gbe_ecp2m/ipcores/fifo_4096x9_tmpl.vhd | 18 + gbe_ecp2m/ipcores/fifo_64kx8.lpc | 47 + gbe_ecp2m/ipcores/fifo_64kx8.vhd | 4435 ++++++++++++++ gbe_ecp2m/ipcores/fifo_64kx8_tmpl.vhd | 18 + gbe_ecp2m/ipcores/ip_mem.lpc | 57 + gbe_ecp2m/ipcores/ip_mem.mem | 277 + gbe_ecp2m/ipcores/ip_mem.vhd | 606 ++ gbe_ecp2m/ipcores/ip_mem_tmpl.vhd | 23 + gbe_ecp2m/ipcores/macInitDataInvWithMac.mem | 59 + gbe_ecp2m/ipcores/mac_init_mem.lpc | 45 + gbe_ecp2m/ipcores/mac_init_mem.vhd | 413 ++ gbe_ecp2m/ipcores/mac_init_mem_tmpl.vhd | 15 + gbe_ecp2m/ipcores/serdes/.cvsignore | 9 + .../serdes/serdes_gbe_0_extclock_8b.lpc | 140 + .../serdes/serdes_gbe_0_extclock_8b.txt | 49 + .../serdes/serdes_gbe_0_extclock_8b.vhd | 2182 +++++++ gbe_ecp2m/ipcores/sgmii_gbe_pcs32/.cvsignore | 11 + .../pmi_fifo_dcLEan71301616161010.ngo | Bin 0 -> 35501 bytes .../sgmii_gbe_pcs32/sgmii_gbe_pcs32.lpc | 26 + .../sgmii_gbe_pcs32/sgmii_gbe_pcs32.ngo | Bin 0 -> 378259 bytes .../sgmii_gbe_pcs32/sgmii_pcs_eval.tar | Bin 0 -> 1116160 bytes gbe_ecp2m/ipcores/tb_fifo_2048x8_tmpl.vhd | 102 + .../ipcores/tb_fifo_32kx16x8_mb_tmpl.vhd | 115 + gbe_ecp2m/ipcores/tb_fifo_32kx16x8_tmpl.vhd | 106 + gbe_ecp2m/ipcores/tb_fifo_4096x32_tmpl.vhd | 102 + gbe_ecp2m/ipcores/tb_fifo_4096x9_tmpl.vhd | 102 + gbe_ecp2m/ipcores/tb_fifo_64kx8_tmpl.vhd | 102 + gbe_ecp2m/ipcores/tb_ip_mem_tmpl.vhd | 174 + gbe_ecp2m/ipcores/tb_mac_init_mem_tmpl.vhd | 64 + gbe_ecp2m/ipcores/tsmac3/.cvsignore | 9 + .../pmi_ram_dpEbnonessdn208256208256.ngo | Bin 0 -> 11294 bytes .../tsmac3/pmi_ram_dpEbnonessdn96649664.ngo | Bin 0 -> 8775 bytes gbe_ecp2m/ipcores/tsmac3/ts_mac_eval.tar | Bin 0 -> 368640 bytes gbe_ecp2m/ipcores/tsmac3/tsmac3.lpc | 28 + gbe_ecp2m/ipcores/tsmac3/tsmac3.ngo | Bin 0 -> 861338 bytes gbe_ecp2m/mb_mac_sim.vhd | 331 ++ gbe_ecp2m/tb_feeder.vhd | 300 + gbe_ecp2m/tb_gbe_buf.vhd | 688 +++ gbe_ecp2m/tb_ip_configurator.vhd | 145 + gbe_ecp2m/tb_ipu2gbe.vhd | 428 ++ gbe_ecp2m/tb_lsm.vhd | 113 + gbe_ecp2m/tb_pc.vhd | 310 + gbe_ecp2m/tb_slv_mac_memory.vhd | 114 + gbe_ecp2m/trb_net16_gbe_buf.vhd | 1268 ++++ gbe_ecp2m/trb_net16_gbe_frame_constr.vhd | 500 ++ gbe_ecp2m/trb_net16_gbe_frame_trans.vhd | 579 ++ gbe_ecp2m/trb_net16_gbe_packet_constr.vhd | 901 +++ gbe_ecp2m/trb_net16_ipu2gbe.vhd | 898 +++ gbe_ecp2m/trb_net16_lsm_sfp_gbe.vhd | 236 + gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd | 373 ++ 64 files changed, 29475 insertions(+) create mode 100755 gbe_ecp2m/feeder.vhd create mode 100755 gbe_ecp2m/ip_configurator.vhd create mode 100644 gbe_ecp2m/ipcores/.cvsignore create mode 100755 gbe_ecp2m/ipcores/fifo_2048x8.lpc create mode 100755 gbe_ecp2m/ipcores/fifo_2048x8.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_2048x8_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_32kx16x8_mb.lpc create mode 100755 gbe_ecp2m/ipcores/fifo_32kx16x8_mb.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_32kx16x8_mb_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_4096x32.lpc create mode 100755 gbe_ecp2m/ipcores/fifo_4096x32.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_4096x32_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_4096x9.lpc create mode 100755 gbe_ecp2m/ipcores/fifo_4096x9.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_4096x9_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_64kx8.lpc create mode 100755 gbe_ecp2m/ipcores/fifo_64kx8.vhd create mode 100755 gbe_ecp2m/ipcores/fifo_64kx8_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/ip_mem.lpc create mode 100755 gbe_ecp2m/ipcores/ip_mem.mem create mode 100755 gbe_ecp2m/ipcores/ip_mem.vhd create mode 100755 gbe_ecp2m/ipcores/ip_mem_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/macInitDataInvWithMac.mem create mode 100755 gbe_ecp2m/ipcores/mac_init_mem.lpc create mode 100755 gbe_ecp2m/ipcores/mac_init_mem.vhd create mode 100755 gbe_ecp2m/ipcores/mac_init_mem_tmpl.vhd create mode 100644 gbe_ecp2m/ipcores/serdes/.cvsignore create mode 100755 gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.lpc create mode 100755 gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.txt create mode 100755 gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.vhd create mode 100644 gbe_ecp2m/ipcores/sgmii_gbe_pcs32/.cvsignore create mode 100755 gbe_ecp2m/ipcores/sgmii_gbe_pcs32/pmi_fifo_dcLEan71301616161010.ngo create mode 100755 gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.lpc create mode 100755 gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.ngo create mode 100644 gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_pcs_eval.tar create mode 100755 gbe_ecp2m/ipcores/tb_fifo_2048x8_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_fifo_32kx16x8_mb_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_fifo_32kx16x8_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_fifo_4096x32_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_fifo_4096x9_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_fifo_64kx8_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_ip_mem_tmpl.vhd create mode 100755 gbe_ecp2m/ipcores/tb_mac_init_mem_tmpl.vhd create mode 100644 gbe_ecp2m/ipcores/tsmac3/.cvsignore create mode 100755 gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn208256208256.ngo create mode 100755 gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn96649664.ngo create mode 100644 gbe_ecp2m/ipcores/tsmac3/ts_mac_eval.tar create mode 100755 gbe_ecp2m/ipcores/tsmac3/tsmac3.lpc create mode 100755 gbe_ecp2m/ipcores/tsmac3/tsmac3.ngo create mode 100755 gbe_ecp2m/mb_mac_sim.vhd create mode 100755 gbe_ecp2m/tb_feeder.vhd create mode 100755 gbe_ecp2m/tb_gbe_buf.vhd create mode 100755 gbe_ecp2m/tb_ip_configurator.vhd create mode 100755 gbe_ecp2m/tb_ipu2gbe.vhd create mode 100755 gbe_ecp2m/tb_lsm.vhd create mode 100755 gbe_ecp2m/tb_pc.vhd create mode 100755 gbe_ecp2m/tb_slv_mac_memory.vhd create mode 100755 gbe_ecp2m/trb_net16_gbe_buf.vhd create mode 100755 gbe_ecp2m/trb_net16_gbe_frame_constr.vhd create mode 100755 gbe_ecp2m/trb_net16_gbe_frame_trans.vhd create mode 100755 gbe_ecp2m/trb_net16_gbe_packet_constr.vhd create mode 100755 gbe_ecp2m/trb_net16_ipu2gbe.vhd create mode 100755 gbe_ecp2m/trb_net16_lsm_sfp_gbe.vhd create mode 100755 gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd diff --git a/gbe_ecp2m/feeder.vhd b/gbe_ecp2m/feeder.vhd new file mode 100755 index 0000000..57fb2c2 --- /dev/null +++ b/gbe_ecp2m/feeder.vhd @@ -0,0 +1,620 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; + +entity feeder is +port( CLK : in std_logic; + RESET : in std_logic; + -- IPU interface directed toward the CTS + CTS_NUMBER_IN : in std_logic_vector (15 downto 0); + CTS_CODE_IN : in std_logic_vector (7 downto 0); + CTS_INFORMATION_IN : in std_logic_vector (7 downto 0); + CTS_READOUT_TYPE_IN : in std_logic_vector (3 downto 0); + CTS_START_READOUT_IN : in std_logic; + CTS_READ_IN : in std_logic; + CTS_DATA_OUT : out std_logic_vector (31 downto 0); + CTS_DATAREADY_OUT : out std_logic; + CTS_READOUT_FINISHED_OUT : out std_logic; --no more data, end transfer, send TRM + CTS_LENGTH_OUT : out std_logic_vector (15 downto 0); + CTS_ERROR_PATTERN_OUT : out std_logic_vector (31 downto 0); + -- Data from Frontends + FEE_DATA_IN : in std_logic_vector (15 downto 0); + FEE_DATAREADY_IN : in std_logic; + FEE_READ_OUT : out std_logic; + FEE_BUSY_IN : in std_logic; + FEE_STATUS_BITS_IN : in std_logic_vector (31 downto 0); + -- PacketConstructor interface + PC_WR_EN_OUT : out std_logic; + PC_DATA_OUT : out std_logic_vector (7 downto 0); + PC_READY_IN : in std_logic; + PC_SOS_OUT : out std_logic; + PC_EOD_OUT : out std_logic; + PC_SUB_SIZE_OUT : out std_logic_vector(31 downto 0); + PC_TRIG_NR_OUT : out std_logic_vector(31 downto 0); + PC_PADDING_OUT : out std_logic; + -- Debug + BSM_SAVE_OUT : out std_logic_vector(3 downto 0); + BSM_LOAD_OUT : out std_logic_vector(3 downto 0); + DBG_REM_CTR_OUT : out std_logic_vector(3 downto 0); + DBG_CTS_CTR_OUT : out std_logic_vector(2 downto 0); + DBG_SF_WCNT_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RCNT_OUT : out std_logic_vector(16 downto 0); + DBG_SF_DATA_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RD_EN_OUT : out std_logic; + DBG_SF_WR_EN_OUT : out std_logic; + DBG_SF_EMPTY_OUT : out std_logic; + DBG_SF_FULL_OUT : out std_logic; + DBG_SF_AFULL_OUT : out std_logic; + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end entity; + +architecture feeder of feeder is + +component fifo_32kx16x8_mb +port( Data : in std_logic_vector(15 downto 0); + WrClock : in std_logic; + RdClock : in std_logic; + WrEn : in std_logic; + RdEn : in std_logic; + Reset : in std_logic; + RPReset : in std_logic; + AmFullThresh : in std_logic_vector(14 downto 0); + Q : out std_logic_vector(7 downto 0); + WCNT : out std_logic_vector(15 downto 0); + RCNT : out std_logic_vector(16 downto 0); + Empty : out std_logic; + Full : out std_logic; + AlmostFull : out std_logic + ); +end component; + +type saveStates is (SIDLE, WAIT_FOR_DATA, SAVE_DATA, TERMINATE, SCLOSE); +signal saveCurrentState, saveNextState : saveStates; +signal state : std_logic_vector(3 downto 0); +signal data_req_comb : std_logic; +signal data_req : std_logic; -- request data signal, will be used for fee_read generation +signal rst_saved_ctr_comb : std_logic; +signal rst_saved_ctr : std_logic; + +signal fee_read_comb : std_logic; +signal fee_read : std_logic; -- fee_read signal +signal saved_ctr : std_logic_vector(16 downto 0); +signal ce_saved_ctr : std_logic; + +-- header data +signal cts_rnd : std_logic_vector(15 downto 0); +signal cts_rnd_saved : std_logic; +signal cts_trg : std_logic_vector(15 downto 0); +signal cts_trg_saved : std_logic; +signal cts_len : std_logic_vector(16 downto 0); +signal cts_len_saved : std_logic; + +-- CTS interface +signal cts_error_pattern : std_logic_vector(31 downto 0); +signal cts_length : std_logic_vector(15 downto 0); +signal cts_readout_finished : std_logic; +signal cts_dataready : std_logic; +signal cts_data : std_logic_vector(31 downto 0); + +-- Split FIFO signals +signal sf_data : std_logic_vector(15 downto 0); +signal sf_wr_en_comb : std_logic; +signal sf_wr_en : std_logic; -- write signal for FIFO +signal sf_rd_en : std_logic; +signal sf_wcnt : std_logic_vector(15 downto 0); +signal sf_rcnt : std_logic_vector(16 downto 0); +signal sf_empty : std_logic; +signal sf_full : std_logic; +signal sf_afull : std_logic; + +------------------------------------------------------------------- +type loadStates is (LIDLE, INIT, REMOVE, CALCA, CALCB, LOAD, PAD0, PAD1, PAD2, PAD3, WAIT_PC, CLOSE); +signal loadCurrentState, loadNextState : loadStates; +signal state2 : std_logic_vector(3 downto 0); + +signal rem_ctr : std_logic_vector(3 downto 0); -- counter for stripping / storing header data +signal rst_rem_ctr_comb : std_logic; +signal rst_rem_ctr : std_logic; +signal rst_regs_comb : std_logic; +signal rst_regs : std_logic; +signal ce_rem_ctr_comb : std_logic; +signal ce_rem_ctr : std_logic; +signal remove_done_comb : std_logic; +signal remove_done : std_logic; -- end of header stripping process +signal load_done_comb : std_logic; +signal load_done : std_logic; -- end of data transfer into PC +signal calc_pad_comb : std_logic; +signal calc_pad : std_logic; -- add padding bytes, if needed +signal read_data_comb : std_logic; +signal read_data : std_logic; -- fetch data from split fifo +signal data_phase_comb : std_logic; +signal data_phase : std_logic; -- data transport phase from split fifo to PC +signal pc_sos_comb : std_logic; +signal pc_sos : std_logic; -- start of data signal +signal pc_eod_comb : std_logic; +signal pc_eod : std_logic; -- end of data signal +signal pad_data_comb : std_logic; +signal pad_data : std_logic; -- insert padding bytes + +signal pc_data : std_logic_vector(7 downto 0); +signal pc_data_q : std_logic_vector(7 downto 0); +signal pc_trig_nr : std_logic_vector(15 downto 0); +signal pc_sub_size : std_logic_vector(17 downto 0); +signal read_size : std_logic_vector(17 downto 0); -- number of byte to be read from split fifo +signal padding_needed : std_logic; +signal pc_wr_en_q : std_logic; +signal pc_wr_en_qq : std_logic; +signal pc_eod_q : std_logic; + +signal debug : std_logic_vector(31 downto 0); + +begin + +-- CTS interface signals +cts_error_pattern <= (others => '0'); -- FAKE +cts_dataready <= '1'; -- FAKE + +cts_length <= x"0000"; -- length of data payload is always 0 +cts_data <= b"0001" & cts_rnd(11 downto 0) & cts_trg; -- reserved bits = '0', pack bit = '1' + +cts_readout_finished <= '1' when (saveCurrentState = SCLOSE) else '0'; + + +-- Sync all critical pathes +THE_SYNC_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + sf_data <= FEE_DATA_IN; + sf_wr_en <= sf_wr_en_comb; + fee_read <= fee_read_comb; + load_done <= load_done_comb; + pc_eod_q <= pc_eod; + pc_wr_en_qq <= pc_wr_en_q; + pc_wr_en_q <= data_phase; + end if; +end process THE_SYNC_PROC; + +-- combinatorial read signal for the FEE data interface, DO NOT USE DIRECTLY +fee_read_comb <= '1' when ( (sf_afull = '0') and (data_req = '1') ) + else '0'; + +-- combinatorial write signal for the split FIFO, DO NOT USE DIRECTLY +sf_wr_en_comb <= '1' when ( (fee_read = '1') and (FEE_DATAREADY_IN = '1') ) + else '0'; + +-- Counter for header word storage +THE_CTS_SAVED_CTR: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + saved_ctr <= (others => '0'); + elsif( ce_saved_ctr = '1' ) then + saved_ctr <= saved_ctr + 1; + end if; + end if; +end process THE_CTS_SAVED_CTR; + +ce_saved_ctr <= sf_wr_en; + +-- Statemachine for reading data payload, handling IPU channel and storing data in the SPLIT_FIFO +saveMachineProc: process( CLK ) +begin + if rising_edge(CLK) then + if RESET = '1' then + saveCurrentState <= SIDLE; + data_req <= '0'; + rst_saved_ctr <= '0'; + else + saveCurrentState <= saveNextState; + data_req <= data_req_comb; + rst_saved_ctr <= rst_saved_ctr_comb; + end if; + end if; +end process saveMachineProc; + +saveMachine: process( saveCurrentState, CTS_START_READOUT_IN, FEE_BUSY_IN, CTS_READ_IN ) +begin + saveNextState <= SIDLE; + data_req_comb <= '0'; + rst_saved_ctr_comb <= '0'; + case saveCurrentState is + when SIDLE => + state <= x"0"; + if (CTS_START_READOUT_IN = '1') then + saveNextState <= WAIT_FOR_DATA; + data_req_comb <= '1'; + rst_saved_ctr_comb <= '1'; + else + saveNextState <= SIDLE; + end if; + when WAIT_FOR_DATA => + state <= x"1"; + if (FEE_BUSY_IN = '1') then + saveNextState <= SAVE_DATA; + data_req_comb <= '1'; + else + saveNextState <= WAIT_FOR_DATA; + data_req_comb <= '1'; + end if; + when SAVE_DATA => + state <= x"2"; + if (FEE_BUSY_IN = '0') then + saveNextState <= TERMINATE; + else + saveNextState <= SAVE_DATA; + data_req_comb <= '1'; + end if; + when TERMINATE => + state <= x"3"; + if (CTS_READ_IN = '1') then + saveNextState <= SCLOSE; + else + saveNextState <= TERMINATE; + end if; + when SCLOSE => + state <= x"4"; + if (CTS_START_READOUT_IN = '0') then + saveNextState <= SIDLE; + else + saveNextState <= SCLOSE; + end if; + when others => + state <= x"f"; + saveNextState <= SIDLE; + end case; +end process saveMachine; + +-- save triggerRnd from incoming data for cts response +CTS_RND_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_rnd <= (others => '0'); + cts_rnd_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"000") and (sf_wr_en = '1') and (cts_rnd_saved = '0') ) then + cts_rnd <= sf_data; + cts_rnd_saved <= '1'; + end if; + end if; +end process CTS_RND_PROC; + +-- save triggerNr from incoming data for cts response +CTS_TRG_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_trg <= (others => '0'); + cts_trg_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"001") and (sf_wr_en = '1') and (cts_trg_saved = '0') ) then + cts_trg <= sf_data; + cts_trg_saved <= '1'; + end if; + end if; +end process CTS_TRG_PROC; + +-- save size from incoming data for cts response (future) and to get rid of padding +CTS_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_len <= (others => '0'); + cts_len_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"010") and (sf_wr_en = '1') and (cts_len_saved = '0') ) then + cts_len(16 downto 1) <= sf_data; -- change from 32b words to 16b words + elsif( (saved_ctr(2 downto 0) = b"011") and (cts_len_saved = '0') ) then + cts_len <= cts_len + x"4"; + cts_len_saved <= '1'; + end if; + end if; +end process CTS_SIZE_PROC; + +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- Split FIFO +THE_SPLIT_FIFO: fifo_32kx16x8_mb +port map( Data => sf_data, + WrClock => CLK, + RdClock => CLK, + WrEn => sf_wr_en, + RdEn => sf_rd_en, + Reset => RESET, + RPReset => RESET, + AmFullThresh => b"111_1111_1110_1111", -- 0x7fef = 32751 + Q => pc_data, --open, + WCNT => sf_wcnt, + RCNT => sf_rcnt, + Empty => sf_empty, + Full => sf_full, + AlmostFull => sf_afull + ); + +sf_rd_en <= read_data; +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- FIFO data delay process (also forces padding bytes to known value) +THE_DATA_DELAY_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if( pad_data = '1' ) then + pc_data_q <= x"ee"; + else + pc_data_q <= pc_data; + end if; + end if; +end process THE_DATA_DELAY_PROC; + +-- Statemachine for reading the data payload from the SPLIT_FIFO and feeding +-- it into the packet constructor +loadMachineProc : process(CLK) +begin + if rising_edge(CLK) then + if RESET = '1' then + loadCurrentState <= LIDLE; + rst_regs <= '0'; + rst_rem_ctr <= '0'; + ce_rem_ctr <= '0'; + calc_pad <= '0'; + read_data <= '0'; + data_phase <= '0'; + pc_sos <= '0'; + pc_eod <= '0'; + pad_data <= '0'; + else + loadCurrentState <= loadNextState; + rst_regs <= rst_regs_comb; + rst_rem_ctr <= rst_rem_ctr_comb; + ce_rem_ctr <= ce_rem_ctr_comb; + calc_pad <= calc_pad_comb; + read_data <= read_data_comb; + data_phase <= data_phase_comb; + pc_sos <= pc_sos_comb; + pc_eod <= pc_eod_comb; + pad_data <= pad_data_comb; + end if; + end if; +end process loadMachineProc; + +loadMachine : process( loadCurrentState, sf_empty, remove_done, load_done, padding_needed, PC_READY_IN ) +begin + loadNextState <= LIDLE; + rst_regs_comb <= '0'; + rst_rem_ctr_comb <= '0'; + ce_rem_ctr_comb <= '0'; + calc_pad_comb <= '0'; + read_data_comb <= '0'; + data_phase_comb <= '0'; + pc_sos_comb <= '0'; + pc_eod_comb <= '0'; + pad_data_comb <= '0'; + case loadCurrentState is + when LIDLE => + state2 <= x"0"; + if( (sf_empty = '0') and (PC_READY_IN = '1') ) then + loadNextState <= INIT; + rst_regs_comb <= '1'; + rst_rem_ctr_comb <= '1'; + else + loadNextState <= LIDLE; + end if; + when INIT => + state2 <= x"1"; + loadNextState <= REMOVE; + ce_rem_ctr_comb <= '1'; + read_data_comb <= '1'; + when REMOVE => + state2 <= x"2"; + if( remove_done = '1' ) then + loadNextState <= CALCA; + calc_pad_comb <= '1'; + else + loadNextState <= REMOVE; + ce_rem_ctr_comb <= '1'; + read_data_comb <= '1'; + end if; + when CALCA => + state2 <= x"3"; + loadNextState <= CALCB; + when CALCB => + -- we need a branch in case of length "0"!!!! + state2 <= x"4"; + loadNextState <= LOAD; + read_data_comb <= '1'; + data_phase_comb <= '1'; + pc_sos_comb <= '1'; + when LOAD => + state2 <= x"5"; + if ( (load_done = '1') and (padding_needed = '0') ) then + loadNextState <= CLOSE; + elsif( (load_done = '1') and (padding_needed = '1') ) then + loadNextState <= PAD0; + data_phase_comb <= '1'; + else + loadNextState <= LOAD; + read_data_comb <= '1'; + data_phase_comb <= '1'; + end if; + when PAD0 => + state2 <= x"5"; + loadNextState <= PAD1; + data_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD1 => + state2 <= x"6"; + loadNextState <= PAD2; + data_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD2 => + state2 <= x"7"; + loadNextState <= PAD3; + data_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD3 => + state2 <= x"8"; + loadNextState <= CLOSE; + pad_data_comb <= '1'; + when CLOSE => + state2 <= x"9"; + loadNextState <= WAIT_PC; + pc_eod_comb <= '1'; + when WAIT_PC => + state2 <= x"a"; + if( PC_READY_IN = '1' ) then + loadNextState <= LIDLE; + rst_rem_ctr_comb <= '1'; + rst_regs_comb <= '1'; + else + loadNextState <= WAIT_PC; + end if; + when others => + state2 <= x"f"; + loadNextState <= LIDLE; + end case; +end process loadMachine; + +-- Counter for stripping the unneeded parts of the data stream, and saving the important parts +THE_REMOVE_CTR: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + rem_ctr <= (others => '0'); + elsif( ce_rem_ctr = '1' ) then + rem_ctr <= rem_ctr + 1; + end if; + end if; +end process THE_REMOVE_CTR; + +remove_done_comb <= '1' when ( rem_ctr = x"6" ) else '0'; + +THE_REM_DONE_SYNC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + remove_done <= '0'; + else + remove_done <= remove_done_comb; + end if; + end if; +end process THE_REM_DONE_SYNC; + +-- extract the trigger number from splitfifo data +THE_TRG_NR_PROC: process( CLK ) +begin + if rising_edge(CLK) then + if ( (RESET = '1') or (rst_regs = '1') ) then + pc_trig_nr <= (others => '0'); + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"3") ) then + pc_trig_nr(7 downto 0) <= pc_data; + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"4") ) then + pc_trig_nr(15 downto 8) <= pc_data; + end if; + end if; +end process THE_TRG_NR_PROC; + +-- check for padding +THE_PADDING_NEEDED_PROC: process( CLK ) +begin + if rising_edge(CLK) then + if ( (RESET = '1') or (rst_regs = '1') ) then + padding_needed <= '0'; + elsif( (remove_done = '1') and (pc_sub_size(2) = '1') ) then + padding_needed <= '1'; + elsif( (remove_done = '1') and (pc_sub_size(2) = '0') ) then + padding_needed <= '0'; + end if; + end if; +end process THE_PADDING_NEEDED_PROC; + +-- extract the subevent size from the splitfifo data, convert it from 32b to 8b units, +-- and in case of padding needed increase it accordingly +THE_SUB_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_regs = '1') ) then + pc_sub_size <= (others => '0'); + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"5") ) then + pc_sub_size(9 downto 2) <= pc_data; + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"6") ) then + pc_sub_size(17 downto 10) <= pc_data; + elsif( (calc_pad = '1') and (padding_needed = '1') ) then + pc_sub_size <= pc_sub_size + 4; + end if; + end if; +end process THE_SUB_SIZE_PROC; + +-- number of bytes to read from split fifo +THE_READ_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + read_size <= (others => '0'); + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"5") ) then + read_size(9 downto 2) <= pc_data; + elsif( (ce_rem_ctr = '1') and (rem_ctr = x"6") ) then + read_size(17 downto 10) <= pc_data; + elsif( ((calc_pad = '1') and (load_done = '0')) ) then + read_size <= read_size - 2; + elsif( ((read_data = '1') and (data_phase = '1')) ) then + read_size <= read_size - 1; + end if; + end if; +end process THE_READ_SIZE_PROC; + +load_done_comb <= '1' when (read_size = 0) else '0'; + +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- Debug signals +debug(31) <= remove_done; +debug(30) <= load_done; +debug(29) <= ce_rem_ctr; +debug(28) <= rst_rem_ctr; +debug(27) <= rst_regs; +debug(26) <= data_phase; +debug(25) <= read_data; +debug(24) <= pad_data; +debug(23 downto 18) <= (others => '0'); +debug(17 downto 0) <= read_size; + +-- Outputs +FEE_READ_OUT <= fee_read; +CTS_ERROR_PATTERN_OUT <= cts_error_pattern; +CTS_DATA_OUT <= cts_data; +CTS_DATAREADY_OUT <= cts_dataready; +CTS_READOUT_FINISHED_OUT <= cts_readout_finished; +CTS_LENGTH_OUT <= cts_length; + +PC_SOS_OUT <= pc_sos; +PC_EOD_OUT <= pc_eod_q; +PC_DATA_OUT <= pc_data_q; +PC_WR_EN_OUT <= pc_wr_en_qq; +PC_TRIG_NR_OUT <= x"0000" & pc_trig_nr; +PC_SUB_SIZE_OUT <= b"0000_0000_0000_00" & pc_sub_size; +PC_PADDING_OUT <= padding_needed; + +BSM_SAVE_OUT <= state; +BSM_LOAD_OUT <= state2; +DBG_CTS_CTR_OUT <= saved_ctr(2 downto 0); +DBG_REM_CTR_OUT <= rem_ctr; +DBG_SF_DATA_OUT <= sf_data; +DBG_SF_WCNT_OUT <= sf_wcnt; +DBG_SF_RCNT_OUT <= sf_rcnt; +DBG_SF_RD_EN_OUT <= sf_rd_en; +DBG_SF_WR_EN_OUT <= sf_wr_en; +DBG_SF_EMPTY_OUT <= sf_empty; +DBG_SF_FULL_OUT <= sf_full; +DBG_SF_AFULL_OUT <= sf_afull; + +DEBUG_OUT <= debug; + +end architecture; \ No newline at end of file diff --git a/gbe_ecp2m/ip_configurator.vhd b/gbe_ecp2m/ip_configurator.vhd new file mode 100755 index 0000000..887f562 --- /dev/null +++ b/gbe_ecp2m/ip_configurator.vhd @@ -0,0 +1,337 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; + +entity ip_configurator is +port( + CLK : in std_logic; + RESET : in std_logic; + -- configuration interface + START_CONFIG_IN : in std_logic; -- start configuration run + BANK_SELECT_IN : in std_logic_vector(3 downto 0); -- selects config bank + CONFIG_DONE_OUT : out std_logic; -- configuration run ended, new values can be used + MEM_ADDR_OUT : out std_logic_vector(7 downto 0); -- address for + MEM_DATA_IN : in std_logic_vector(31 downto 0); -- data from IP memory + MEM_CLK_OUT : out std_logic; -- clock for BlockRAM + -- information for IP cores + DEST_MAC_OUT : out std_logic_vector(47 downto 0); -- destination MAC address + DEST_IP_OUT : out std_logic_vector(31 downto 0); -- destination IP address + DEST_UDP_OUT : out std_logic_vector(15 downto 0); -- destination port + SRC_MAC_OUT : out std_logic_vector(47 downto 0); -- source MAC address + SRC_IP_OUT : out std_logic_vector(31 downto 0); -- source IP address + SRC_UDP_OUT : out std_logic_vector(15 downto 0); -- source port + MTU_OUT : out std_logic_vector(15 downto 0); -- MTU size (max frame size) + -- Debug + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end entity; + +architecture ip_configurator of ip_configurator is + +type STATES is (IDLE, LOAD_REG, DELAY0, DELAY1, DELAY2, LOAD_DONE); +signal CURRENT_STATE, NEXT_STATE : STATES; +signal bsm : std_logic_vector(3 downto 0); +signal ce_ctr_comb : std_logic; +signal ce_ctr : std_logic; +signal rst_ctr_comb : std_logic; +signal rst_ctr : std_logic; +signal cfg_done_comb : std_logic; +signal cfg_done : std_logic; + +signal ctr_done_comb : std_logic; +signal ctr_done : std_logic; + +signal wr_select_comb : std_logic_vector(15 downto 0); +signal wr_select : std_logic_vector(15 downto 0); +signal wr_select_q : std_logic_vector(15 downto 0); + +signal addr_ctr : std_logic_vector(3 downto 0); +signal dest_mac : std_logic_vector(47 downto 0); +signal dest_ip : std_logic_vector(31 downto 0); +signal dest_udp : std_logic_vector(15 downto 0); +signal src_mac : std_logic_vector(47 downto 0); +signal src_ip : std_logic_vector(31 downto 0); +signal src_udp : std_logic_vector(15 downto 0); +signal mtu : std_logic_vector(15 downto 0); + +signal debug : std_logic_vector(31 downto 0); + +begin + + +-- Statemachine for reading data payload, handling IPU channel and storing data in the SPLIT_FIFO +STATE_MACHINE_PROC: process( CLK ) +begin + if rising_edge(CLK) then + if RESET = '1' then + CURRENT_STATE <= IDLE; + ce_ctr <= '0'; + rst_ctr <= '0'; + cfg_done <= '0'; + else + CURRENT_STATE <= NEXT_STATE; + ce_ctr <= ce_ctr_comb; + rst_ctr <= rst_ctr_comb; + cfg_done <= cfg_done_comb; + end if; + end if; +end process STATE_MACHINE_PROC; + +STATE_MACHINE_TRANS: process( CURRENT_STATE, START_CONFIG_IN, ctr_done ) +begin + NEXT_STATE <= IDLE; + ce_ctr_comb <= '0'; + rst_ctr_comb <= '0'; + cfg_done_comb <= '0'; + case CURRENT_STATE is + when IDLE => + bsm <= x"0"; + if( START_CONFIG_IN = '1' ) then + NEXT_STATE <= LOAD_REG; + ce_ctr_comb <= '1'; + else + NEXT_STATE <= IDLE; + end if; + when LOAD_REG => + bsm <= x"1"; + if( ctr_done = '1' ) then + NEXT_STATE <= DELAY0; + rst_ctr_comb <= '1'; + else + NEXT_STATE <= LOAD_REG; + ce_ctr_comb <= '1'; + end if; + when DELAY0 => + bsm <= x"2"; + NEXT_STATE <= DELAY1; + when DELAY1 => + bsm <= x"3"; + NEXT_STATE <= DELAY2; + when DELAY2 => + bsm <= x"4"; + NEXT_STATE <= LOAD_DONE; + cfg_done_comb <= '1'; + when LOAD_DONE => + bsm <= x"2"; + if( START_CONFIG_IN = '0' ) then + NEXT_STATE <= IDLE; + else + NEXT_STATE <= LOAD_DONE; + cfg_done_comb <= '1'; + end if; + when others => + bsm <= x"f"; + NEXT_STATE <= IDLE; + end case; +end process STATE_MACHINE_TRANS; + +-- address counter +THE_ADDR_CTR_PROC: process( CLK ) +begin + if ( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_ctr = '1') ) then + addr_ctr <= (others => '0'); + elsif( ce_ctr = '1' ) then + addr_ctr <= addr_ctr + 1; + end if; + end if; +end process THE_ADDR_CTR_PROC; + +ctr_done_comb <= '1' when (addr_ctr = x"e") else '0'; + +THE_SYNC_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + ctr_done <= ctr_done_comb; + wr_select_q <= wr_select; + wr_select <= wr_select_comb; + end if; +end process THE_SYNC_PROC; + +-- generate combinatorial write select signals, register and delay the (output registers in EBR!) +wr_select_comb(0) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"0") ) else '0'; -- dest MAC low +wr_select_comb(1) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"1") ) else '0'; -- dest MAC high +wr_select_comb(2) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"2") ) else '0'; -- dest IP +wr_select_comb(3) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"3") ) else '0'; -- dest port +wr_select_comb(4) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"4") ) else '0'; -- src MAC low +wr_select_comb(5) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"5") ) else '0'; -- src MAC high +wr_select_comb(6) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"6") ) else '0'; -- src IP +wr_select_comb(7) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"7") ) else '0'; -- src port +wr_select_comb(8) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"8") ) else '0'; -- MTU +wr_select_comb(9) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"9") ) else '0'; +wr_select_comb(10) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"a") ) else '0'; +wr_select_comb(11) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"b") ) else '0'; +wr_select_comb(12) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"c") ) else '0'; +wr_select_comb(13) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"d") ) else '0'; +wr_select_comb(14) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"e") ) else '0'; +wr_select_comb(15) <= '1' when ( (ce_ctr = '1') and (addr_ctr = x"f") ) else '0'; + +-- destination MAC low register +THE_D_MAC_LOW_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + dest_mac(31 downto 0) <= (others => '0'); + elsif( wr_select_q(0) = '1') then + dest_mac(31 downto 0) <= mem_data_in; + end if; + end if; +end process THE_D_MAC_LOW_PROC; + +-- destination MAC high register +THE_D_MAC_HIGH_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + dest_mac(47 downto 32) <= (others => '0'); + elsif( wr_select_q(1) = '1') then + dest_mac(47 downto 32) <= mem_data_in(15 downto 0); + end if; + end if; +end process THE_D_MAC_HIGH_PROC; + +-- destination IP register +THE_D_IP_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + dest_ip <= (others => '0'); + elsif( wr_select_q(2) = '1') then + dest_ip <= mem_data_in; + end if; + end if; +end process THE_D_IP_PROC; + +-- destination PORT register +THE_D_PORT_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + dest_udp <= (others => '0'); + elsif( wr_select_q(3) = '1') then + dest_udp <= mem_data_in(15 downto 0); + end if; + end if; +end process THE_D_PORT_PROC; + +-- source MAC low register +THE_S_MAC_LOW_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + src_mac(31 downto 0) <= (others => '0'); + elsif( wr_select_q(4) = '1') then + src_mac(31 downto 0) <= mem_data_in; + end if; + end if; +end process THE_S_MAC_LOW_PROC; + +-- source MAC high register +THE_S_MAC_HIGH_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + src_mac(47 downto 32) <= (others => '0'); + elsif( wr_select_q(5) = '1') then + src_mac(47 downto 32) <= mem_data_in(15 downto 0); + end if; + end if; +end process THE_S_MAC_HIGH_PROC; + +-- source IP register +THE_S_IP_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + src_ip <= (others => '0'); + elsif( wr_select_q(6) = '1') then + src_ip <= mem_data_in; + end if; + end if; +end process THE_S_IP_PROC; + +-- source PORT register +THE_S_PORT_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + src_udp <= (others => '0'); + elsif( wr_select_q(7) = '1') then + src_udp <= mem_data_in(15 downto 0); + end if; + end if; +end process THE_S_PORT_PROC; + +-- MTU size register +THE_MTU_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( RESET = '1' ) then + mtu <= (others => '0'); + elsif( wr_select_q(8) = '1') then + mtu <= mem_data_in(15 downto 0); + end if; + end if; +end process THE_MTU_PROC; + + +-- Debug signals +debug(31 downto 12) <= (others => '0'); +debug(11 downto 8) <= addr_ctr; +debug(7) <= '0'; +debug(6) <= ctr_done; +debug(5) <= ce_ctr; +debug(4) <= rst_ctr; +debug(3 downto 0) <= bsm; +-- Outputs +MEM_ADDR_OUT(7 downto 4) <= BANK_SELECT_IN; +MEM_ADDR_OUT(3 downto 0) <= addr_ctr; +MEM_CLK_OUT <= CLK; +CONFIG_DONE_OUT <= cfg_done; + +-- destination MAC address - swap for user convinience +DEST_MAC_OUT(47 downto 40) <= dest_mac(7 downto 0); +DEST_MAC_OUT(39 downto 32) <= dest_mac(15 downto 8); +DEST_MAC_OUT(31 downto 24) <= dest_mac(23 downto 16); +DEST_MAC_OUT(23 downto 16) <= dest_mac(31 downto 24); +DEST_MAC_OUT(15 downto 8) <= dest_mac(39 downto 32); +DEST_MAC_OUT(7 downto 0) <= dest_mac(47 downto 40); + +-- destination IP address - swap for user convinience +DEST_IP_OUT(31 downto 24) <= dest_ip(7 downto 0); +DEST_IP_OUT(23 downto 16) <= dest_ip(15 downto 8); +DEST_IP_OUT(15 downto 8) <= dest_ip(23 downto 16); +DEST_IP_OUT(7 downto 0) <= dest_ip(31 downto 24); + +-- destination port address - swap for user convinience +DEST_UDP_OUT(15 downto 8) <= dest_udp(7 downto 0); +DEST_UDP_OUT(7 downto 0) <= dest_udp(15 downto 8); + +-- source MAC address - swap for user convinience +SRC_MAC_OUT(47 downto 40) <= src_mac(7 downto 0); +SRC_MAC_OUT(39 downto 32) <= src_mac(15 downto 8); +SRC_MAC_OUT(31 downto 24) <= src_mac(23 downto 16); +SRC_MAC_OUT(23 downto 16) <= src_mac(31 downto 24); +SRC_MAC_OUT(15 downto 8) <= src_mac(39 downto 32); +SRC_MAC_OUT(7 downto 0) <= src_mac(47 downto 40); + +-- source IP address - swap for user convinience +SRC_IP_OUT(31 downto 24) <= src_ip(7 downto 0); +SRC_IP_OUT(23 downto 16) <= src_ip(15 downto 8); +SRC_IP_OUT(15 downto 8) <= src_ip(23 downto 16); +SRC_IP_OUT(7 downto 0) <= src_ip(31 downto 24); + +-- source port address - swap for user convinience +SRC_UDP_OUT(15 downto 8) <= src_udp(7 downto 0); +SRC_UDP_OUT(7 downto 0) <= src_udp(15 downto 8); + +-- DO NOT SWAP! +MTU_OUT <= mtu; + +DEBUG_OUT <= debug; + +end architecture; \ No newline at end of file diff --git a/gbe_ecp2m/ipcores/.cvsignore b/gbe_ecp2m/ipcores/.cvsignore new file mode 100644 index 0000000..25a5568 --- /dev/null +++ b/gbe_ecp2m/ipcores/.cvsignore @@ -0,0 +1,6 @@ +*.jhd +*.naf +*.srp +*.sym +*.log +*tmpl.vhd diff --git a/gbe_ecp2m/ipcores/fifo_2048x8.lpc b/gbe_ecp2m/ipcores/fifo_2048x8.lpc new file mode 100755 index 0000000..542bbe2 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_2048x8.lpc @@ -0,0 +1,47 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=FIFO_DC +CoreRevision=5.2 +ModuleName=fifo_2048x8 +SourceFormat=VHDL +ParameterFileVersion=1.0 +Date=12/26/2009 +Time=00:12:59 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +FIFOImp=EBR Based +Depth=2048 +Width=8 +RDepth=2048 +RWidth=8 +regout=0 +CtrlByRdEn=0 +EmpFlg=0 +PeMode=Static - Dual Threshold +PeAssert=10 +PeDeassert=12 +FullFlg=0 +PfMode=Static - Dual Threshold +PfAssert=508 +PfDeassert=506 +RDataCount=0 +WDataCount=0 +EnECC=0 diff --git a/gbe_ecp2m/ipcores/fifo_2048x8.vhd b/gbe_ecp2m/ipcores/fifo_2048x8.vhd new file mode 100755 index 0000000..2b75855 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_2048x8.vhd @@ -0,0 +1,1913 @@ +-- VHDL netlist generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +--/opt/lattice/ispLEVER7.2/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type ebfifo -depth 2048 -width 8 -depth 2048 -rdata_width 8 -no_enable -pe -1 -pf -1 -e + +-- Sat Dec 26 00:12:59 2009 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity fifo_2048x8 is + port ( + Data: in std_logic_vector(7 downto 0); + WrClock: in std_logic; + RdClock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + RPReset: in std_logic; + Q: out std_logic_vector(7 downto 0); + Empty: out std_logic; + Full: out std_logic); +end fifo_2048x8; + +architecture Structure of fifo_2048x8 is + + -- internal signal declarations + signal invout_1: std_logic; + signal invout_0: std_logic; + signal w_g2b_xor_cluster_2_1: std_logic; + signal w_g2b_xor_cluster_2: std_logic; + signal w_g2b_xor_cluster_1: std_logic; + signal r_g2b_xor_cluster_2_1: std_logic; + signal r_g2b_xor_cluster_2: std_logic; + signal r_g2b_xor_cluster_1: std_logic; + signal w_gdata_0: std_logic; + signal w_gdata_1: std_logic; + signal w_gdata_2: std_logic; + signal w_gdata_3: std_logic; + signal w_gdata_4: std_logic; + signal w_gdata_5: std_logic; + signal w_gdata_6: std_logic; + signal w_gdata_7: std_logic; + signal w_gdata_8: std_logic; + signal w_gdata_9: std_logic; + signal w_gdata_10: std_logic; + signal wptr_0: std_logic; + signal wptr_1: std_logic; + signal wptr_2: std_logic; + signal wptr_3: std_logic; + signal wptr_4: std_logic; + signal wptr_5: std_logic; + signal wptr_6: std_logic; + signal wptr_7: std_logic; + signal wptr_8: std_logic; + signal wptr_9: std_logic; + signal wptr_10: std_logic; + signal wptr_11: std_logic; + signal r_gdata_0: std_logic; + signal r_gdata_1: std_logic; + signal r_gdata_2: std_logic; + signal r_gdata_3: std_logic; + signal r_gdata_4: std_logic; + signal r_gdata_5: std_logic; + signal r_gdata_6: std_logic; + signal r_gdata_7: std_logic; + signal r_gdata_8: std_logic; + signal r_gdata_9: std_logic; + signal r_gdata_10: std_logic; + signal rptr_0: std_logic; + signal rptr_1: std_logic; + signal rptr_2: std_logic; + signal rptr_3: std_logic; + signal rptr_4: std_logic; + signal rptr_5: std_logic; + signal rptr_6: std_logic; + signal rptr_7: std_logic; + signal rptr_8: std_logic; + signal rptr_9: std_logic; + signal rptr_10: std_logic; + signal rptr_11: std_logic; + signal w_gcount_0: std_logic; + signal w_gcount_1: std_logic; + signal w_gcount_2: std_logic; + signal w_gcount_3: std_logic; + signal w_gcount_4: std_logic; + signal w_gcount_5: std_logic; + signal w_gcount_6: std_logic; + signal w_gcount_7: std_logic; + signal w_gcount_8: std_logic; + signal w_gcount_9: std_logic; + signal w_gcount_10: std_logic; + signal w_gcount_11: std_logic; + signal r_gcount_0: std_logic; + signal r_gcount_1: std_logic; + signal r_gcount_2: std_logic; + signal r_gcount_3: std_logic; + signal r_gcount_4: std_logic; + signal r_gcount_5: std_logic; + signal r_gcount_6: std_logic; + signal r_gcount_7: std_logic; + signal r_gcount_8: std_logic; + signal r_gcount_9: std_logic; + signal r_gcount_10: std_logic; + signal r_gcount_11: std_logic; + signal w_gcount_r20: std_logic; + signal w_gcount_r0: std_logic; + signal w_gcount_r21: std_logic; + signal w_gcount_r1: std_logic; + signal w_gcount_r22: std_logic; + signal w_gcount_r2: std_logic; + signal w_gcount_r23: std_logic; + signal w_gcount_r3: std_logic; + signal w_gcount_r24: std_logic; + signal w_gcount_r4: std_logic; + signal w_gcount_r25: std_logic; + signal w_gcount_r5: std_logic; + signal w_gcount_r26: std_logic; + signal w_gcount_r6: std_logic; + signal w_gcount_r27: std_logic; + signal w_gcount_r7: std_logic; + signal w_gcount_r28: std_logic; + signal w_gcount_r8: std_logic; + signal w_gcount_r29: std_logic; + signal w_gcount_r9: std_logic; + signal w_gcount_r210: std_logic; + signal w_gcount_r10: std_logic; + signal w_gcount_r211: std_logic; + signal w_gcount_r11: std_logic; + signal r_gcount_w20: std_logic; + signal r_gcount_w0: std_logic; + signal r_gcount_w21: std_logic; + signal r_gcount_w1: std_logic; + signal r_gcount_w22: std_logic; + signal r_gcount_w2: std_logic; + signal r_gcount_w23: std_logic; + signal r_gcount_w3: std_logic; + signal r_gcount_w24: std_logic; + signal r_gcount_w4: std_logic; + signal r_gcount_w25: std_logic; + signal r_gcount_w5: std_logic; + signal r_gcount_w26: std_logic; + signal r_gcount_w6: std_logic; + signal r_gcount_w27: std_logic; + signal r_gcount_w7: std_logic; + signal r_gcount_w28: std_logic; + signal r_gcount_w8: std_logic; + signal r_gcount_w29: std_logic; + signal r_gcount_w9: std_logic; + signal r_gcount_w210: std_logic; + signal r_gcount_w10: std_logic; + signal r_gcount_w211: std_logic; + signal r_gcount_w11: std_logic; + signal empty_i: std_logic; + signal rRst: std_logic; + signal full_i: std_logic; + signal iwcount_0: std_logic; + signal iwcount_1: std_logic; + signal w_gctr_ci: std_logic; + signal iwcount_2: std_logic; + signal iwcount_3: std_logic; + signal co0: std_logic; + signal iwcount_4: std_logic; + signal iwcount_5: std_logic; + signal co1: std_logic; + signal iwcount_6: std_logic; + signal iwcount_7: std_logic; + signal co2: std_logic; + signal iwcount_8: std_logic; + signal iwcount_9: std_logic; + signal co3: std_logic; + signal iwcount_10: std_logic; + signal iwcount_11: std_logic; + signal co5: std_logic; + signal wcount_11: std_logic; + signal co4: std_logic; + signal scuba_vhi: std_logic; + signal ircount_0: std_logic; + signal ircount_1: std_logic; + signal r_gctr_ci: std_logic; + signal ircount_2: std_logic; + signal ircount_3: std_logic; + signal co0_1: std_logic; + signal ircount_4: std_logic; + signal ircount_5: std_logic; + signal co1_1: std_logic; + signal ircount_6: std_logic; + signal ircount_7: std_logic; + signal co2_1: std_logic; + signal ircount_8: std_logic; + signal ircount_9: std_logic; + signal co3_1: std_logic; + signal ircount_10: std_logic; + signal ircount_11: std_logic; + signal co5_1: std_logic; + signal rcount_11: std_logic; + signal co4_1: std_logic; + signal rden_i: std_logic; + signal cmp_ci: std_logic; + signal wcount_r0: std_logic; + signal wcount_r1: std_logic; + signal rcount_0: std_logic; + signal rcount_1: std_logic; + signal co0_2: std_logic; + signal wcount_r2: std_logic; + signal wcount_r3: std_logic; + signal rcount_2: std_logic; + signal rcount_3: std_logic; + signal co1_2: std_logic; + signal wcount_r4: std_logic; + signal wcount_r5: std_logic; + signal rcount_4: std_logic; + signal rcount_5: std_logic; + signal co2_2: std_logic; + signal wcount_r6: std_logic; + signal wcount_r7: std_logic; + signal rcount_6: std_logic; + signal rcount_7: std_logic; + signal co3_2: std_logic; + signal w_g2b_xor_cluster_0: std_logic; + signal wcount_r9: std_logic; + signal rcount_8: std_logic; + signal rcount_9: std_logic; + signal co4_2: std_logic; + signal wcount_r10: std_logic; + signal empty_cmp_clr: std_logic; + signal rcount_10: std_logic; + signal empty_cmp_set: std_logic; + signal empty_d: std_logic; + signal empty_d_c: std_logic; + signal wren_i: std_logic; + signal cmp_ci_1: std_logic; + signal rcount_w0: std_logic; + signal rcount_w1: std_logic; + signal wcount_0: std_logic; + signal wcount_1: std_logic; + signal co0_3: std_logic; + signal rcount_w2: std_logic; + signal rcount_w3: std_logic; + signal wcount_2: std_logic; + signal wcount_3: std_logic; + signal co1_3: std_logic; + signal rcount_w4: std_logic; + signal rcount_w5: std_logic; + signal wcount_4: std_logic; + signal wcount_5: std_logic; + signal co2_3: std_logic; + signal rcount_w6: std_logic; + signal rcount_w7: std_logic; + signal wcount_6: std_logic; + signal wcount_7: std_logic; + signal co3_3: std_logic; + signal r_g2b_xor_cluster_0: std_logic; + signal rcount_w9: std_logic; + signal wcount_8: std_logic; + signal wcount_9: std_logic; + signal co4_3: std_logic; + signal rcount_w10: std_logic; + signal full_cmp_clr: std_logic; + signal wcount_10: std_logic; + signal full_cmp_set: std_logic; + signal full_d: std_logic; + signal full_d_c: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component AGEB2 + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; GE: out std_logic); + end component; + component AND2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component CU2 + port (CI: in std_logic; PC0: in std_logic; PC1: in std_logic; + CO: out std_logic; NC0: out std_logic; NC1: out std_logic); + end component; + component FADD2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; COUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FD1P3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + PD: in std_logic; Q: out std_logic); + end component; + component FD1P3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + CD: in std_logic; Q: out std_logic); + end component; + component FD1S3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; PD: in std_logic; + Q: out std_logic); + end component; + component FD1S3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; CD: in std_logic; + Q: out std_logic); + end component; + component INV + port (A: in std_logic; Z: out std_logic); + end component; + component OR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component ROM16X1 + -- synopsys translate_off + generic (initval : in String); + -- synopsys translate_on + port (AD3: in std_logic; AD2: in std_logic; AD1: in std_logic; + AD0: in std_logic; DO0: out std_logic); + end component; + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component XOR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute initval : string; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute GSR : string; + attribute initval of LUT4_31 : label is "0x6996"; + attribute initval of LUT4_30 : label is "0x6996"; + attribute initval of LUT4_29 : label is "0x6996"; + attribute initval of LUT4_28 : label is "0x6996"; + attribute initval of LUT4_27 : label is "0x6996"; + attribute initval of LUT4_26 : label is "0x6996"; + attribute initval of LUT4_25 : label is "0x6996"; + attribute initval of LUT4_24 : label is "0x6996"; + attribute initval of LUT4_23 : label is "0x6996"; + attribute initval of LUT4_22 : label is "0x6996"; + attribute initval of LUT4_21 : label is "0x6996"; + attribute initval of LUT4_20 : label is "0x6996"; + attribute initval of LUT4_19 : label is "0x6996"; + attribute initval of LUT4_18 : label is "0x6996"; + attribute initval of LUT4_17 : label is "0x6996"; + attribute initval of LUT4_16 : label is "0x6996"; + attribute initval of LUT4_15 : label is "0x6996"; + attribute initval of LUT4_14 : label is "0x6996"; + attribute initval of LUT4_13 : label is "0x6996"; + attribute initval of LUT4_12 : label is "0x6996"; + attribute initval of LUT4_11 : label is "0x6996"; + attribute initval of LUT4_10 : label is "0x6996"; + attribute initval of LUT4_9 : label is "0x6996"; + attribute initval of LUT4_8 : label is "0x6996"; + attribute initval of LUT4_7 : label is "0x6996"; + attribute initval of LUT4_6 : label is "0x6996"; + attribute initval of LUT4_5 : label is "0x6996"; + attribute initval of LUT4_4 : label is "0x6996"; + attribute initval of LUT4_3 : label is "0x0410"; + attribute initval of LUT4_2 : label is "0x1004"; + attribute initval of LUT4_1 : label is "0x0140"; + attribute initval of LUT4_0 : label is "0x4001"; + attribute MEM_LPC_FILE of pdp_ram_0_0_0 : label is "fifo_2048x8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_0_0 : label is ""; + attribute CSDECODE_B of pdp_ram_0_0_0 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_0_0 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_0_0 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_0_0 : label is "NORMAL"; + attribute GSR of pdp_ram_0_0_0 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_0_0 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_0_0 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_0_0 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_0_0 : label is "9"; + attribute DATA_WIDTH_A of pdp_ram_0_0_0 : label is "9"; + attribute GSR of FF_121 : label is "ENABLED"; + attribute GSR of FF_120 : label is "ENABLED"; + attribute GSR of FF_119 : label is "ENABLED"; + attribute GSR of FF_118 : label is "ENABLED"; + attribute GSR of FF_117 : label is "ENABLED"; + attribute GSR of FF_116 : label is "ENABLED"; + attribute GSR of FF_115 : label is "ENABLED"; + attribute GSR of FF_114 : label is "ENABLED"; + attribute GSR of FF_113 : label is "ENABLED"; + attribute GSR of FF_112 : label is "ENABLED"; + attribute GSR of FF_111 : label is "ENABLED"; + attribute GSR of FF_110 : label is "ENABLED"; + attribute GSR of FF_109 : label is "ENABLED"; + attribute GSR of FF_108 : label is "ENABLED"; + attribute GSR of FF_107 : label is "ENABLED"; + attribute GSR of FF_106 : label is "ENABLED"; + attribute GSR of FF_105 : label is "ENABLED"; + attribute GSR of FF_104 : label is "ENABLED"; + attribute GSR of FF_103 : label is "ENABLED"; + attribute GSR of FF_102 : label is "ENABLED"; + attribute GSR of FF_101 : label is "ENABLED"; + attribute GSR of FF_100 : label is "ENABLED"; + attribute GSR of FF_99 : label is "ENABLED"; + attribute GSR of FF_98 : label is "ENABLED"; + attribute GSR of FF_97 : label is "ENABLED"; + attribute GSR of FF_96 : label is "ENABLED"; + attribute GSR of FF_95 : label is "ENABLED"; + attribute GSR of FF_94 : label is "ENABLED"; + attribute GSR of FF_93 : label is "ENABLED"; + attribute GSR of FF_92 : label is "ENABLED"; + attribute GSR of FF_91 : label is "ENABLED"; + attribute GSR of FF_90 : label is "ENABLED"; + attribute GSR of FF_89 : label is "ENABLED"; + attribute GSR of FF_88 : label is "ENABLED"; + attribute GSR of FF_87 : label is "ENABLED"; + attribute GSR of FF_86 : label is "ENABLED"; + attribute GSR of FF_85 : label is "ENABLED"; + attribute GSR of FF_84 : label is "ENABLED"; + attribute GSR of FF_83 : label is "ENABLED"; + attribute GSR of FF_82 : label is "ENABLED"; + attribute GSR of FF_81 : label is "ENABLED"; + attribute GSR of FF_80 : label is "ENABLED"; + attribute GSR of FF_79 : label is "ENABLED"; + attribute GSR of FF_78 : label is "ENABLED"; + attribute GSR of FF_77 : label is "ENABLED"; + attribute GSR of FF_76 : label is "ENABLED"; + attribute GSR of FF_75 : label is "ENABLED"; + attribute GSR of FF_74 : label is "ENABLED"; + attribute GSR of FF_73 : label is "ENABLED"; + attribute GSR of FF_72 : label is "ENABLED"; + attribute GSR of FF_71 : label is "ENABLED"; + attribute GSR of FF_70 : label is "ENABLED"; + attribute GSR of FF_69 : label is "ENABLED"; + attribute GSR of FF_68 : label is "ENABLED"; + attribute GSR of FF_67 : label is "ENABLED"; + attribute GSR of FF_66 : label is "ENABLED"; + attribute GSR of FF_65 : label is "ENABLED"; + attribute GSR of FF_64 : label is "ENABLED"; + attribute GSR of FF_63 : label is "ENABLED"; + attribute GSR of FF_62 : label is "ENABLED"; + attribute GSR of FF_61 : label is "ENABLED"; + attribute GSR of FF_60 : label is "ENABLED"; + attribute GSR of FF_59 : label is "ENABLED"; + attribute GSR of FF_58 : label is "ENABLED"; + attribute GSR of FF_57 : label is "ENABLED"; + attribute GSR of FF_56 : label is "ENABLED"; + attribute GSR of FF_55 : label is "ENABLED"; + attribute GSR of FF_54 : label is "ENABLED"; + attribute GSR of FF_53 : label is "ENABLED"; + attribute GSR of FF_52 : label is "ENABLED"; + attribute GSR of FF_51 : label is "ENABLED"; + attribute GSR of FF_50 : label is "ENABLED"; + attribute GSR of FF_49 : label is "ENABLED"; + attribute GSR of FF_48 : label is "ENABLED"; + attribute GSR of FF_47 : label is "ENABLED"; + attribute GSR of FF_46 : label is "ENABLED"; + attribute GSR of FF_45 : label is "ENABLED"; + attribute GSR of FF_44 : label is "ENABLED"; + attribute GSR of FF_43 : label is "ENABLED"; + attribute GSR of FF_42 : label is "ENABLED"; + attribute GSR of FF_41 : label is "ENABLED"; + attribute GSR of FF_40 : label is "ENABLED"; + attribute GSR of FF_39 : label is "ENABLED"; + attribute GSR of FF_38 : label is "ENABLED"; + attribute GSR of FF_37 : label is "ENABLED"; + attribute GSR of FF_36 : label is "ENABLED"; + attribute GSR of FF_35 : label is "ENABLED"; + attribute GSR of FF_34 : label is "ENABLED"; + attribute GSR of FF_33 : label is "ENABLED"; + attribute GSR of FF_32 : label is "ENABLED"; + attribute GSR of FF_31 : label is "ENABLED"; + attribute GSR of FF_30 : label is "ENABLED"; + attribute GSR of FF_29 : label is "ENABLED"; + attribute GSR of FF_28 : label is "ENABLED"; + attribute GSR of FF_27 : label is "ENABLED"; + attribute GSR of FF_26 : label is "ENABLED"; + attribute GSR of FF_25 : label is "ENABLED"; + attribute GSR of FF_24 : label is "ENABLED"; + attribute GSR of FF_23 : label is "ENABLED"; + attribute GSR of FF_22 : label is "ENABLED"; + attribute GSR of FF_21 : label is "ENABLED"; + attribute GSR of FF_20 : label is "ENABLED"; + attribute GSR of FF_19 : label is "ENABLED"; + attribute GSR of FF_18 : label is "ENABLED"; + attribute GSR of FF_17 : label is "ENABLED"; + attribute GSR of FF_16 : label is "ENABLED"; + attribute GSR of FF_15 : label is "ENABLED"; + attribute GSR of FF_14 : label is "ENABLED"; + attribute GSR of FF_13 : label is "ENABLED"; + attribute GSR of FF_12 : label is "ENABLED"; + attribute GSR of FF_11 : label is "ENABLED"; + attribute GSR of FF_10 : label is "ENABLED"; + attribute GSR of FF_9 : label is "ENABLED"; + attribute GSR of FF_8 : label is "ENABLED"; + attribute GSR of FF_7 : label is "ENABLED"; + attribute GSR of FF_6 : label is "ENABLED"; + attribute GSR of FF_5 : label is "ENABLED"; + attribute GSR of FF_4 : label is "ENABLED"; + attribute GSR of FF_3 : label is "ENABLED"; + attribute GSR of FF_2 : label is "ENABLED"; + attribute GSR of FF_1 : label is "ENABLED"; + attribute GSR of FF_0 : label is "ENABLED"; + attribute syn_keep : boolean; + +begin + -- component instantiation statements + AND2_t24: AND2 + port map (A=>WrEn, B=>invout_1, Z=>wren_i); + + INV_1: INV + port map (A=>full_i, Z=>invout_1); + + AND2_t23: AND2 + port map (A=>RdEn, B=>invout_0, Z=>rden_i); + + INV_0: INV + port map (A=>empty_i, Z=>invout_0); + + OR2_t22: OR2 + port map (A=>Reset, B=>RPReset, Z=>rRst); + + XOR2_t21: XOR2 + port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); + + XOR2_t20: XOR2 + port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); + + XOR2_t19: XOR2 + port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); + + XOR2_t18: XOR2 + port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); + + XOR2_t17: XOR2 + port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); + + XOR2_t16: XOR2 + port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); + + XOR2_t15: XOR2 + port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); + + XOR2_t14: XOR2 + port map (A=>wcount_7, B=>wcount_8, Z=>w_gdata_7); + + XOR2_t13: XOR2 + port map (A=>wcount_8, B=>wcount_9, Z=>w_gdata_8); + + XOR2_t12: XOR2 + port map (A=>wcount_9, B=>wcount_10, Z=>w_gdata_9); + + XOR2_t11: XOR2 + port map (A=>wcount_10, B=>wcount_11, Z=>w_gdata_10); + + XOR2_t10: XOR2 + port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); + + XOR2_t9: XOR2 + port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); + + XOR2_t8: XOR2 + port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); + + XOR2_t7: XOR2 + port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); + + XOR2_t6: XOR2 + port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); + + XOR2_t5: XOR2 + port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); + + XOR2_t4: XOR2 + port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); + + XOR2_t3: XOR2 + port map (A=>rcount_7, B=>rcount_8, Z=>r_gdata_7); + + XOR2_t2: XOR2 + port map (A=>rcount_8, B=>rcount_9, Z=>r_gdata_8); + + XOR2_t1: XOR2 + port map (A=>rcount_9, B=>rcount_10, Z=>r_gdata_9); + + XOR2_t0: XOR2 + port map (A=>rcount_10, B=>rcount_11, Z=>r_gdata_10); + + LUT4_31: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r28, AD2=>w_gcount_r29, + AD1=>w_gcount_r210, AD0=>w_gcount_r211, + DO0=>w_g2b_xor_cluster_0); + + LUT4_30: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r24, AD2=>w_gcount_r25, + AD1=>w_gcount_r26, AD0=>w_gcount_r27, + DO0=>w_g2b_xor_cluster_1); + + LUT4_29: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r20, AD2=>w_gcount_r21, + AD1=>w_gcount_r22, AD0=>w_gcount_r23, + DO0=>w_g2b_xor_cluster_2); + + LUT4_28: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r210, AD2=>w_gcount_r211, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>wcount_r10); + + LUT4_27: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r29, AD2=>w_gcount_r210, + AD1=>w_gcount_r211, AD0=>scuba_vlo, DO0=>wcount_r9); + + LUT4_26: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r27, AD2=>w_gcount_r28, + AD1=>w_gcount_r29, AD0=>wcount_r10, DO0=>wcount_r7); + + LUT4_25: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r26, AD2=>w_gcount_r27, + AD1=>w_gcount_r28, AD0=>wcount_r9, DO0=>wcount_r6); + + LUT4_24: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r25, AD2=>w_gcount_r26, + AD1=>w_gcount_r27, AD0=>w_g2b_xor_cluster_0, DO0=>wcount_r5); + + LUT4_23: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r4); + + LUT4_22: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r23, AD0=>scuba_vlo, DO0=>wcount_r3); + + LUT4_21: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r22, AD0=>w_gcount_r23, DO0=>wcount_r2); + + LUT4_20: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r21, AD2=>w_gcount_r22, + AD1=>w_gcount_r23, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_2_1); + + LUT4_19: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>wcount_r1); + + LUT4_18: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>wcount_r0); + + LUT4_17: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w28, AD2=>r_gcount_w29, + AD1=>r_gcount_w210, AD0=>r_gcount_w211, + DO0=>r_g2b_xor_cluster_0); + + LUT4_16: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w24, AD2=>r_gcount_w25, + AD1=>r_gcount_w26, AD0=>r_gcount_w27, + DO0=>r_g2b_xor_cluster_1); + + LUT4_15: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w20, AD2=>r_gcount_w21, + AD1=>r_gcount_w22, AD0=>r_gcount_w23, + DO0=>r_g2b_xor_cluster_2); + + LUT4_14: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w210, AD2=>r_gcount_w211, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>rcount_w10); + + LUT4_13: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w29, AD2=>r_gcount_w210, + AD1=>r_gcount_w211, AD0=>scuba_vlo, DO0=>rcount_w9); + + LUT4_12: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w27, AD2=>r_gcount_w28, + AD1=>r_gcount_w29, AD0=>rcount_w10, DO0=>rcount_w7); + + LUT4_11: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w26, AD2=>r_gcount_w27, + AD1=>r_gcount_w28, AD0=>rcount_w9, DO0=>rcount_w6); + + LUT4_10: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w25, AD2=>r_gcount_w26, + AD1=>r_gcount_w27, AD0=>r_g2b_xor_cluster_0, DO0=>rcount_w5); + + LUT4_9: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w4); + + LUT4_8: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w23, AD0=>scuba_vlo, DO0=>rcount_w3); + + LUT4_7: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w22, AD0=>r_gcount_w23, DO0=>rcount_w2); + + LUT4_6: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w21, AD2=>r_gcount_w22, + AD1=>r_gcount_w23, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_2_1); + + LUT4_5: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>rcount_w1); + + LUT4_4: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>rcount_w0); + + LUT4_3: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0410") + -- synopsys translate_on + port map (AD3=>rptr_11, AD2=>rcount_11, AD1=>w_gcount_r211, + AD0=>scuba_vlo, DO0=>empty_cmp_set); + + LUT4_2: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x1004") + -- synopsys translate_on + port map (AD3=>rptr_11, AD2=>rcount_11, AD1=>w_gcount_r211, + AD0=>scuba_vlo, DO0=>empty_cmp_clr); + + LUT4_1: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0140") + -- synopsys translate_on + port map (AD3=>wptr_11, AD2=>wcount_11, AD1=>r_gcount_w211, + AD0=>scuba_vlo, DO0=>full_cmp_set); + + LUT4_0: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x4001") + -- synopsys translate_on + port map (AD3=>wptr_11, AD2=>wcount_11, AD1=>r_gcount_w211, + AD0=>scuba_vlo, DO0=>full_cmp_clr); + + pdp_ram_0_0_0: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 9, + DATA_WIDTH_A=> 9) + -- synopsys translate_on + port map (DIA0=>Data(0), DIA1=>Data(1), DIA2=>Data(2), + DIA3=>Data(3), DIA4=>Data(4), DIA5=>Data(5), DIA6=>Data(6), + DIA7=>Data(7), DIA8=>scuba_vlo, DIA9=>scuba_vlo, + DIA10=>scuba_vlo, DIA11=>scuba_vlo, DIA12=>scuba_vlo, + DIA13=>scuba_vlo, DIA14=>scuba_vlo, DIA15=>scuba_vlo, + DIA16=>scuba_vlo, DIA17=>scuba_vlo, ADA0=>scuba_vlo, + ADA1=>scuba_vlo, ADA2=>scuba_vlo, ADA3=>wptr_0, ADA4=>wptr_1, + ADA5=>wptr_2, ADA6=>wptr_3, ADA7=>wptr_4, ADA8=>wptr_5, + ADA9=>wptr_6, ADA10=>wptr_7, ADA11=>wptr_8, ADA12=>wptr_9, + ADA13=>wptr_10, CEA=>wren_i, CLKA=>WrClock, WEA=>scuba_vhi, + CSA0=>scuba_vlo, CSA1=>scuba_vlo, CSA2=>scuba_vlo, + RSTA=>Reset, DIB0=>scuba_vlo, DIB1=>scuba_vlo, + DIB2=>scuba_vlo, DIB3=>scuba_vlo, DIB4=>scuba_vlo, + DIB5=>scuba_vlo, DIB6=>scuba_vlo, DIB7=>scuba_vlo, + DIB8=>scuba_vlo, DIB9=>scuba_vlo, DIB10=>scuba_vlo, + DIB11=>scuba_vlo, DIB12=>scuba_vlo, DIB13=>scuba_vlo, + DIB14=>scuba_vlo, DIB15=>scuba_vlo, DIB16=>scuba_vlo, + DIB17=>scuba_vlo, ADB0=>scuba_vlo, ADB1=>scuba_vlo, + ADB2=>scuba_vlo, ADB3=>rptr_0, ADB4=>rptr_1, ADB5=>rptr_2, + ADB6=>rptr_3, ADB7=>rptr_4, ADB8=>rptr_5, ADB9=>rptr_6, + ADB10=>rptr_7, ADB11=>rptr_8, ADB12=>rptr_9, ADB13=>rptr_10, + CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, CSB0=>scuba_vlo, + CSB1=>scuba_vlo, CSB2=>scuba_vlo, RSTB=>Reset, DOA0=>open, + DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, DOA5=>open, + DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, DOA10=>open, + DOA11=>open, DOA12=>open, DOA13=>open, DOA14=>open, + DOA15=>open, DOA16=>open, DOA17=>open, DOB0=>Q(0), + DOB1=>Q(1), DOB2=>Q(2), DOB3=>Q(3), DOB4=>Q(4), DOB5=>Q(5), + DOB6=>Q(6), DOB7=>Q(7), DOB8=>open, DOB9=>open, DOB10=>open, + DOB11=>open, DOB12=>open, DOB13=>open, DOB14=>open, + DOB15=>open, DOB16=>open, DOB17=>open); + + FF_121: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset, + Q=>wcount_0); + + FF_120: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_1); + + FF_119: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_2); + + FF_118: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_3); + + FF_117: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_4); + + FF_116: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_5); + + FF_115: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_6); + + FF_114: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_7); + + FF_113: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_8); + + FF_112: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_9); + + FF_111: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_10); + + FF_110: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_11); + + FF_109: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_0); + + FF_108: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_1); + + FF_107: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_2); + + FF_106: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_3); + + FF_105: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_4); + + FF_104: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_5); + + FF_103: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_6); + + FF_102: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_7); + + FF_101: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_8); + + FF_100: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_9); + + FF_99: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_10); + + FF_98: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_11); + + FF_97: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_0); + + FF_96: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_1); + + FF_95: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_2); + + FF_94: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_3); + + FF_93: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_4); + + FF_92: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_5); + + FF_91: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_6); + + FF_90: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_7); + + FF_89: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_8); + + FF_88: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_9); + + FF_87: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_10); + + FF_86: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_11); + + FF_85: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_0, SP=>rden_i, CK=>RdClock, PD=>rRst, + Q=>rcount_0); + + FF_84: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_1); + + FF_83: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_2); + + FF_82: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_3); + + FF_81: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_4); + + FF_80: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_5); + + FF_79: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_6); + + FF_78: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_7); + + FF_77: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_8); + + FF_76: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_9); + + FF_75: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_10); + + FF_74: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_11); + + FF_73: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_0); + + FF_72: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_1); + + FF_71: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_2); + + FF_70: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_3); + + FF_69: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_4); + + FF_68: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_5); + + FF_67: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_6); + + FF_66: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_7); + + FF_65: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_8); + + FF_64: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_9); + + FF_63: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_10); + + FF_62: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_11); + + FF_61: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_0); + + FF_60: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_1); + + FF_59: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_2); + + FF_58: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_3); + + FF_57: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_4); + + FF_56: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_5); + + FF_55: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_6); + + FF_54: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_7); + + FF_53: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_8); + + FF_52: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_9); + + FF_51: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_10); + + FF_50: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_11); + + FF_49: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_0, CK=>RdClock, CD=>Reset, Q=>w_gcount_r0); + + FF_48: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_1, CK=>RdClock, CD=>Reset, Q=>w_gcount_r1); + + FF_47: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_2, CK=>RdClock, CD=>Reset, Q=>w_gcount_r2); + + FF_46: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_3, CK=>RdClock, CD=>Reset, Q=>w_gcount_r3); + + FF_45: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_4, CK=>RdClock, CD=>Reset, Q=>w_gcount_r4); + + FF_44: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_5, CK=>RdClock, CD=>Reset, Q=>w_gcount_r5); + + FF_43: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_6, CK=>RdClock, CD=>Reset, Q=>w_gcount_r6); + + FF_42: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_7, CK=>RdClock, CD=>Reset, Q=>w_gcount_r7); + + FF_41: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_8, CK=>RdClock, CD=>Reset, Q=>w_gcount_r8); + + FF_40: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_9, CK=>RdClock, CD=>Reset, Q=>w_gcount_r9); + + FF_39: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r10); + + FF_38: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r11); + + FF_37: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w0); + + FF_36: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w1); + + FF_35: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w2); + + FF_34: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w3); + + FF_33: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w4); + + FF_32: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w5); + + FF_31: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w6); + + FF_30: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w7); + + FF_29: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w8); + + FF_28: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w9); + + FF_27: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_10, CK=>WrClock, CD=>rRst, Q=>r_gcount_w10); + + FF_26: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_11, CK=>WrClock, CD=>rRst, Q=>r_gcount_w11); + + FF_25: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r0, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r20); + + FF_24: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r1, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r21); + + FF_23: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r2, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r22); + + FF_22: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r3, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r23); + + FF_21: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r4, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r24); + + FF_20: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r5, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r25); + + FF_19: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r6, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r26); + + FF_18: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r7, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r27); + + FF_17: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r8, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r28); + + FF_16: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r9, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r29); + + FF_15: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r210); + + FF_14: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r211); + + FF_13: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w20); + + FF_12: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w21); + + FF_11: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w22); + + FF_10: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w23); + + FF_9: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w24); + + FF_8: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w25); + + FF_7: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w26); + + FF_6: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); + + FF_5: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w28); + + FF_4: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w29); + + FF_3: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w10, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w210); + + FF_2: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w11, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w211); + + FF_1: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); + + FF_0: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); + + w_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>w_gctr_ci, S0=>open, + S1=>open); + + w_gctr_0: CU2 + port map (CI=>w_gctr_ci, PC0=>wcount_0, PC1=>wcount_1, CO=>co0, + NC0=>iwcount_0, NC1=>iwcount_1); + + w_gctr_1: CU2 + port map (CI=>co0, PC0=>wcount_2, PC1=>wcount_3, CO=>co1, + NC0=>iwcount_2, NC1=>iwcount_3); + + w_gctr_2: CU2 + port map (CI=>co1, PC0=>wcount_4, PC1=>wcount_5, CO=>co2, + NC0=>iwcount_4, NC1=>iwcount_5); + + w_gctr_3: CU2 + port map (CI=>co2, PC0=>wcount_6, PC1=>wcount_7, CO=>co3, + NC0=>iwcount_6, NC1=>iwcount_7); + + w_gctr_4: CU2 + port map (CI=>co3, PC0=>wcount_8, PC1=>wcount_9, CO=>co4, + NC0=>iwcount_8, NC1=>iwcount_9); + + w_gctr_5: CU2 + port map (CI=>co4, PC0=>wcount_10, PC1=>wcount_11, CO=>co5, + NC0=>iwcount_10, NC1=>iwcount_11); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + r_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>r_gctr_ci, S0=>open, + S1=>open); + + r_gctr_0: CU2 + port map (CI=>r_gctr_ci, PC0=>rcount_0, PC1=>rcount_1, CO=>co0_1, + NC0=>ircount_0, NC1=>ircount_1); + + r_gctr_1: CU2 + port map (CI=>co0_1, PC0=>rcount_2, PC1=>rcount_3, CO=>co1_1, + NC0=>ircount_2, NC1=>ircount_3); + + r_gctr_2: CU2 + port map (CI=>co1_1, PC0=>rcount_4, PC1=>rcount_5, CO=>co2_1, + NC0=>ircount_4, NC1=>ircount_5); + + r_gctr_3: CU2 + port map (CI=>co2_1, PC0=>rcount_6, PC1=>rcount_7, CO=>co3_1, + NC0=>ircount_6, NC1=>ircount_7); + + r_gctr_4: CU2 + port map (CI=>co3_1, PC0=>rcount_8, PC1=>rcount_9, CO=>co4_1, + NC0=>ircount_8, NC1=>ircount_9); + + r_gctr_5: CU2 + port map (CI=>co4_1, PC0=>rcount_10, PC1=>rcount_11, CO=>co5_1, + NC0=>ircount_10, NC1=>ircount_11); + + empty_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci, S0=>open, S1=>open); + + empty_cmp_0: AGEB2 + port map (A0=>rcount_0, A1=>rcount_1, B0=>wcount_r0, + B1=>wcount_r1, CI=>cmp_ci, GE=>co0_2); + + empty_cmp_1: AGEB2 + port map (A0=>rcount_2, A1=>rcount_3, B0=>wcount_r2, + B1=>wcount_r3, CI=>co0_2, GE=>co1_2); + + empty_cmp_2: AGEB2 + port map (A0=>rcount_4, A1=>rcount_5, B0=>wcount_r4, + B1=>wcount_r5, CI=>co1_2, GE=>co2_2); + + empty_cmp_3: AGEB2 + port map (A0=>rcount_6, A1=>rcount_7, B0=>wcount_r6, + B1=>wcount_r7, CI=>co2_2, GE=>co3_2); + + empty_cmp_4: AGEB2 + port map (A0=>rcount_8, A1=>rcount_9, B0=>w_g2b_xor_cluster_0, + B1=>wcount_r9, CI=>co3_2, GE=>co4_2); + + empty_cmp_5: AGEB2 + port map (A0=>rcount_10, A1=>empty_cmp_set, B0=>wcount_r10, + B1=>empty_cmp_clr, CI=>co4_2, GE=>empty_d_c); + + a0: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>empty_d_c, COUT=>open, S0=>empty_d, + S1=>open); + + full_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_1, S0=>open, S1=>open); + + full_cmp_0: AGEB2 + port map (A0=>wcount_0, A1=>wcount_1, B0=>rcount_w0, + B1=>rcount_w1, CI=>cmp_ci_1, GE=>co0_3); + + full_cmp_1: AGEB2 + port map (A0=>wcount_2, A1=>wcount_3, B0=>rcount_w2, + B1=>rcount_w3, CI=>co0_3, GE=>co1_3); + + full_cmp_2: AGEB2 + port map (A0=>wcount_4, A1=>wcount_5, B0=>rcount_w4, + B1=>rcount_w5, CI=>co1_3, GE=>co2_3); + + full_cmp_3: AGEB2 + port map (A0=>wcount_6, A1=>wcount_7, B0=>rcount_w6, + B1=>rcount_w7, CI=>co2_3, GE=>co3_3); + + full_cmp_4: AGEB2 + port map (A0=>wcount_8, A1=>wcount_9, B0=>r_g2b_xor_cluster_0, + B1=>rcount_w9, CI=>co3_3, GE=>co4_3); + + full_cmp_5: AGEB2 + port map (A0=>wcount_10, A1=>full_cmp_set, B0=>rcount_w10, + B1=>full_cmp_clr, CI=>co4_3, GE=>full_d_c); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + a1: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, + S1=>open); + + Empty <= empty_i; + Full <= full_i; +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of fifo_2048x8 is + for Structure + for all:AGEB2 use entity ecp2m.AGEB2(V); end for; + for all:AND2 use entity ecp2m.AND2(V); end for; + for all:CU2 use entity ecp2m.CU2(V); end for; + for all:FADD2B use entity ecp2m.FADD2B(V); end for; + for all:FD1P3BX use entity ecp2m.FD1P3BX(V); end for; + for all:FD1P3DX use entity ecp2m.FD1P3DX(V); end for; + for all:FD1S3BX use entity ecp2m.FD1S3BX(V); end for; + for all:FD1S3DX use entity ecp2m.FD1S3DX(V); end for; + for all:INV use entity ecp2m.INV(V); end for; + for all:OR2 use entity ecp2m.OR2(V); end for; + for all:ROM16X1 use entity ecp2m.ROM16X1(V); end for; + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:XOR2 use entity ecp2m.XOR2(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/fifo_2048x8_tmpl.vhd b/gbe_ecp2m/ipcores/fifo_2048x8_tmpl.vhd new file mode 100755 index 0000000..c365fcc --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_2048x8_tmpl.vhd @@ -0,0 +1,18 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +-- Sat Dec 26 00:12:59 2009 + +-- parameterized module component declaration +component fifo_2048x8 + port (Data: in std_logic_vector(7 downto 0); WrClock: in std_logic; + RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; + Reset: in std_logic; RPReset: in std_logic; + Q: out std_logic_vector(7 downto 0); Empty: out std_logic; + Full: out std_logic); +end component; + +-- parameterized module component instance +__ : fifo_2048x8 + port map (Data(7 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, + RdEn=>__, Reset=>__, RPReset=>__, Q(7 downto 0)=>__, Empty=>__, + Full=>__); diff --git a/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.lpc b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.lpc new file mode 100755 index 0000000..8c82306 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.lpc @@ -0,0 +1,47 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=FIFO_DC +CoreRevision=5.3 +ModuleName=fifo_32kx16x8_mb +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=02/05/2010 +Time=16:48:12 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +FIFOImp=EBR Based +Depth=32768 +Width=16 +RDepth=65536 +RWidth=8 +regout=0 +CtrlByRdEn=0 +EmpFlg=1 +PeMode=Dynamic - Single Threshold +PeAssert=16 +PeDeassert=12 +FullFlg=1 +PfMode=Dynamic - Single Threshold +PfAssert=32752 +PfDeassert=506 +RDataCount=1 +WDataCount=1 +EnECC=0 diff --git a/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.vhd b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.vhd new file mode 100755 index 0000000..d40ad50 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb.vhd @@ -0,0 +1,5245 @@ +-- VHDL netlist generated by SCUBA ispLever_v8.0_PROD_Build (41) +-- Module Version: 5.3 +--X:\Programme\ispTOOLS_80\ispfpga\bin\nt\scuba.exe -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type ebfifo -depth 32768 -width 16 -depth 32768 -rdata_width 8 -no_enable -pe 0 -pf 0 -rfill -fill -e + +-- Fri Feb 05 16:48:13 2010 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity fifo_32kx16x8_mb is + port ( + Data: in std_logic_vector(15 downto 0); + WrClock: in std_logic; + RdClock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + RPReset: in std_logic; + AmEmptyThresh: in std_logic_vector(15 downto 0); + AmFullThresh: in std_logic_vector(14 downto 0); + Q: out std_logic_vector(7 downto 0); + WCNT: out std_logic_vector(15 downto 0); + RCNT: out std_logic_vector(16 downto 0); + Empty: out std_logic; + Full: out std_logic; + AlmostEmpty: out std_logic; + AlmostFull: out std_logic); +end fifo_32kx16x8_mb; + +architecture Structure of fifo_32kx16x8_mb is + + -- internal signal declarations + signal invout_1: std_logic; + signal invout_0: std_logic; + signal w_g2b_xor_cluster_2_1: std_logic; + signal w_g2b_xor_cluster_3_1: std_logic; + signal w_g2b_xor_cluster_3_2: std_logic; + signal w_g2b_xor_cluster_3: std_logic; + signal w_g2b_xor_cluster_2: std_logic; + signal w_g2b_xor_cluster_1: std_logic; + signal r_g2b_xor_cluster_2_1: std_logic; + signal r_g2b_xor_cluster_3_1: std_logic; + signal r_g2b_xor_cluster_3_2: std_logic; + signal r_g2b_xor_cluster_3: std_logic; + signal r_g2b_xor_cluster_2: std_logic; + signal r_g2b_xor_cluster_1: std_logic; + signal func_xor_inet_3: std_logic; + signal func_xor_inet_2: std_logic; + signal func_xor_inet_1: std_logic; + signal func_xor_inet: std_logic; + signal rcount_w0: std_logic; + signal func_xor_inet_4: std_logic; + signal func_xor_inet_5: std_logic; + signal rcnt_reg_15_inv: std_logic; + signal w_gdata_0: std_logic; + signal w_gdata_1: std_logic; + signal w_gdata_2: std_logic; + signal w_gdata_3: std_logic; + signal w_gdata_4: std_logic; + signal w_gdata_5: std_logic; + signal w_gdata_6: std_logic; + signal w_gdata_7: std_logic; + signal w_gdata_8: std_logic; + signal w_gdata_9: std_logic; + signal w_gdata_10: std_logic; + signal w_gdata_11: std_logic; + signal w_gdata_12: std_logic; + signal w_gdata_13: std_logic; + signal w_gdata_14: std_logic; + signal wptr_15: std_logic; + signal r_gdata_0: std_logic; + signal r_gdata_1: std_logic; + signal r_gdata_2: std_logic; + signal r_gdata_3: std_logic; + signal r_gdata_4: std_logic; + signal r_gdata_5: std_logic; + signal r_gdata_6: std_logic; + signal r_gdata_7: std_logic; + signal r_gdata_8: std_logic; + signal r_gdata_9: std_logic; + signal r_gdata_10: std_logic; + signal r_gdata_11: std_logic; + signal r_gdata_12: std_logic; + signal r_gdata_13: std_logic; + signal r_gdata_14: std_logic; + signal r_gdata_15: std_logic; + signal rptr_16: std_logic; + signal w_gcount_0: std_logic; + signal w_gcount_1: std_logic; + signal w_gcount_2: std_logic; + signal w_gcount_3: std_logic; + signal w_gcount_4: std_logic; + signal w_gcount_5: std_logic; + signal w_gcount_6: std_logic; + signal w_gcount_7: std_logic; + signal w_gcount_8: std_logic; + signal w_gcount_9: std_logic; + signal w_gcount_10: std_logic; + signal w_gcount_11: std_logic; + signal w_gcount_12: std_logic; + signal w_gcount_13: std_logic; + signal w_gcount_14: std_logic; + signal w_gcount_15: std_logic; + signal r_gcount_0: std_logic; + signal r_gcount_1: std_logic; + signal r_gcount_2: std_logic; + signal r_gcount_3: std_logic; + signal r_gcount_4: std_logic; + signal r_gcount_5: std_logic; + signal r_gcount_6: std_logic; + signal r_gcount_7: std_logic; + signal r_gcount_8: std_logic; + signal r_gcount_9: std_logic; + signal r_gcount_10: std_logic; + signal r_gcount_11: std_logic; + signal r_gcount_12: std_logic; + signal r_gcount_13: std_logic; + signal r_gcount_14: std_logic; + signal r_gcount_15: std_logic; + signal r_gcount_16: std_logic; + signal w_gcount_r20: std_logic; + signal w_gcount_r0: std_logic; + signal w_gcount_r21: std_logic; + signal w_gcount_r1: std_logic; + signal w_gcount_r22: std_logic; + signal w_gcount_r2: std_logic; + signal w_gcount_r23: std_logic; + signal w_gcount_r3: std_logic; + signal w_gcount_r24: std_logic; + signal w_gcount_r4: std_logic; + signal w_gcount_r25: std_logic; + signal w_gcount_r5: std_logic; + signal w_gcount_r26: std_logic; + signal w_gcount_r6: std_logic; + signal w_gcount_r27: std_logic; + signal w_gcount_r7: std_logic; + signal w_gcount_r28: std_logic; + signal w_gcount_r8: std_logic; + signal w_gcount_r29: std_logic; + signal w_gcount_r9: std_logic; + signal w_gcount_r210: std_logic; + signal w_gcount_r10: std_logic; + signal w_gcount_r211: std_logic; + signal w_gcount_r11: std_logic; + signal w_gcount_r212: std_logic; + signal w_gcount_r12: std_logic; + signal w_gcount_r213: std_logic; + signal w_gcount_r13: std_logic; + signal w_gcount_r214: std_logic; + signal w_gcount_r14: std_logic; + signal w_gcount_r215: std_logic; + signal w_gcount_r15: std_logic; + signal r_gcount_w20: std_logic; + signal r_gcount_w0: std_logic; + signal r_gcount_w21: std_logic; + signal r_gcount_w1: std_logic; + signal r_gcount_w22: std_logic; + signal r_gcount_w2: std_logic; + signal r_gcount_w23: std_logic; + signal r_gcount_w3: std_logic; + signal r_gcount_w24: std_logic; + signal r_gcount_w4: std_logic; + signal r_gcount_w25: std_logic; + signal r_gcount_w5: std_logic; + signal r_gcount_w26: std_logic; + signal r_gcount_w6: std_logic; + signal r_gcount_w27: std_logic; + signal r_gcount_w7: std_logic; + signal r_gcount_w28: std_logic; + signal r_gcount_w8: std_logic; + signal r_gcount_w29: std_logic; + signal r_gcount_w9: std_logic; + signal r_gcount_w210: std_logic; + signal r_gcount_w10: std_logic; + signal r_gcount_w211: std_logic; + signal r_gcount_w11: std_logic; + signal r_gcount_w212: std_logic; + signal r_gcount_w12: std_logic; + signal r_gcount_w213: std_logic; + signal r_gcount_w13: std_logic; + signal r_gcount_w214: std_logic; + signal r_gcount_w14: std_logic; + signal r_gcount_w215: std_logic; + signal r_gcount_w15: std_logic; + signal r_gcount_w216: std_logic; + signal r_gcount_w16: std_logic; + signal rcnt_reg_16: std_logic; + signal empty_i: std_logic; + signal full_i: std_logic; + signal rRst: std_logic; + signal iwcount_0: std_logic; + signal iwcount_1: std_logic; + signal w_gctr_ci: std_logic; + signal iwcount_2: std_logic; + signal iwcount_3: std_logic; + signal co0: std_logic; + signal iwcount_4: std_logic; + signal iwcount_5: std_logic; + signal co1: std_logic; + signal iwcount_6: std_logic; + signal iwcount_7: std_logic; + signal co2: std_logic; + signal iwcount_8: std_logic; + signal iwcount_9: std_logic; + signal co3: std_logic; + signal iwcount_10: std_logic; + signal iwcount_11: std_logic; + signal co4: std_logic; + signal iwcount_12: std_logic; + signal iwcount_13: std_logic; + signal co5: std_logic; + signal iwcount_14: std_logic; + signal iwcount_15: std_logic; + signal co7: std_logic; + signal wcount_15: std_logic; + signal co6: std_logic; + signal ircount_0: std_logic; + signal ircount_1: std_logic; + signal r_gctr_ci: std_logic; + signal ircount_2: std_logic; + signal ircount_3: std_logic; + signal co0_1: std_logic; + signal ircount_4: std_logic; + signal ircount_5: std_logic; + signal co1_1: std_logic; + signal ircount_6: std_logic; + signal ircount_7: std_logic; + signal co2_1: std_logic; + signal ircount_8: std_logic; + signal ircount_9: std_logic; + signal co3_1: std_logic; + signal ircount_10: std_logic; + signal ircount_11: std_logic; + signal co4_1: std_logic; + signal ircount_12: std_logic; + signal ircount_13: std_logic; + signal co5_1: std_logic; + signal ircount_14: std_logic; + signal ircount_15: std_logic; + signal co6_1: std_logic; + signal ircount_16: std_logic; + signal co8: std_logic; + signal rcount_16: std_logic; + signal co7_1: std_logic; + signal mdout1_3_0: std_logic; + signal mdout1_2_0: std_logic; + signal mdout1_1_0: std_logic; + signal mdout1_0_0: std_logic; + signal mdout1_3_1: std_logic; + signal mdout1_2_1: std_logic; + signal mdout1_1_1: std_logic; + signal mdout1_0_1: std_logic; + signal mdout1_3_2: std_logic; + signal mdout1_2_2: std_logic; + signal mdout1_1_2: std_logic; + signal mdout1_0_2: std_logic; + signal mdout1_3_3: std_logic; + signal mdout1_2_3: std_logic; + signal mdout1_1_3: std_logic; + signal mdout1_0_3: std_logic; + signal mdout1_3_4: std_logic; + signal mdout1_2_4: std_logic; + signal mdout1_1_4: std_logic; + signal mdout1_0_4: std_logic; + signal mdout1_3_5: std_logic; + signal mdout1_2_5: std_logic; + signal mdout1_1_5: std_logic; + signal mdout1_0_5: std_logic; + signal mdout1_3_6: std_logic; + signal mdout1_2_6: std_logic; + signal mdout1_1_6: std_logic; + signal mdout1_0_6: std_logic; + signal rptr_15_ff: std_logic; + signal rptr_14_ff: std_logic; + signal mdout1_3_7: std_logic; + signal mdout1_2_7: std_logic; + signal mdout1_1_7: std_logic; + signal mdout1_0_7: std_logic; + signal wcnt_sub_0: std_logic; + signal wcnt_sub_1: std_logic; + signal wcnt_sub_2: std_logic; + signal co0_2: std_logic; + signal wcnt_sub_3: std_logic; + signal wcnt_sub_4: std_logic; + signal co1_2: std_logic; + signal wcnt_sub_5: std_logic; + signal wcnt_sub_6: std_logic; + signal co2_2: std_logic; + signal wcnt_sub_7: std_logic; + signal wcnt_sub_8: std_logic; + signal co3_2: std_logic; + signal wcnt_sub_9: std_logic; + signal wcnt_sub_10: std_logic; + signal co4_2: std_logic; + signal wcnt_sub_11: std_logic; + signal wcnt_sub_12: std_logic; + signal co5_2: std_logic; + signal wcnt_sub_13: std_logic; + signal wcnt_sub_14: std_logic; + signal co6_2: std_logic; + signal wcnt_sub_15: std_logic; + signal co7_2: std_logic; + signal wcnt_sub_msb: std_logic; + signal rcnt_sub_0: std_logic; + signal rcnt_sub_1: std_logic; + signal rcnt_sub_2: std_logic; + signal co0_3: std_logic; + signal rcnt_sub_3: std_logic; + signal rcnt_sub_4: std_logic; + signal co1_3: std_logic; + signal rcnt_sub_5: std_logic; + signal rcnt_sub_6: std_logic; + signal co2_3: std_logic; + signal rcnt_sub_7: std_logic; + signal rcnt_sub_8: std_logic; + signal co3_3: std_logic; + signal rcnt_sub_9: std_logic; + signal rcnt_sub_10: std_logic; + signal co4_3: std_logic; + signal rcnt_sub_11: std_logic; + signal rcnt_sub_12: std_logic; + signal co5_3: std_logic; + signal rcnt_sub_13: std_logic; + signal rcnt_sub_14: std_logic; + signal co6_3: std_logic; + signal rcnt_sub_15: std_logic; + signal rcnt_sub_16: std_logic; + signal co7_3: std_logic; + signal rcnt_sub_msb: std_logic; + signal co8_1d: std_logic; + signal co8_1: std_logic; + signal wfill_sub_0: std_logic; + signal wptr_0: std_logic; + signal wfill_sub_1: std_logic; + signal wfill_sub_2: std_logic; + signal co0_4: std_logic; + signal wptr_1: std_logic; + signal wptr_2: std_logic; + signal wfill_sub_3: std_logic; + signal wfill_sub_4: std_logic; + signal co1_4: std_logic; + signal wptr_3: std_logic; + signal wptr_4: std_logic; + signal wfill_sub_5: std_logic; + signal wfill_sub_6: std_logic; + signal co2_4: std_logic; + signal wptr_5: std_logic; + signal wptr_6: std_logic; + signal wfill_sub_7: std_logic; + signal wfill_sub_8: std_logic; + signal co3_4: std_logic; + signal wptr_7: std_logic; + signal wptr_8: std_logic; + signal wfill_sub_9: std_logic; + signal wfill_sub_10: std_logic; + signal co4_4: std_logic; + signal wptr_9: std_logic; + signal wptr_10: std_logic; + signal wfill_sub_11: std_logic; + signal wfill_sub_12: std_logic; + signal co5_4: std_logic; + signal wptr_11: std_logic; + signal wptr_12: std_logic; + signal wfill_sub_13: std_logic; + signal wfill_sub_14: std_logic; + signal co6_4: std_logic; + signal wptr_13: std_logic; + signal wptr_14: std_logic; + signal wfill_sub_15: std_logic; + signal co7_4: std_logic; + signal wfill_sub_msb: std_logic; + signal rfill_sub_0: std_logic; + signal rptr_0: std_logic; + signal scuba_vhi: std_logic; + signal rfill_sub_1: std_logic; + signal rfill_sub_2: std_logic; + signal co0_5: std_logic; + signal rptr_1: std_logic; + signal rptr_2: std_logic; + signal rfill_sub_3: std_logic; + signal rfill_sub_4: std_logic; + signal co1_5: std_logic; + signal rptr_3: std_logic; + signal rptr_4: std_logic; + signal rfill_sub_5: std_logic; + signal rfill_sub_6: std_logic; + signal co2_5: std_logic; + signal rptr_5: std_logic; + signal rptr_6: std_logic; + signal rfill_sub_7: std_logic; + signal rfill_sub_8: std_logic; + signal co3_5: std_logic; + signal rptr_7: std_logic; + signal rptr_8: std_logic; + signal rfill_sub_9: std_logic; + signal rfill_sub_10: std_logic; + signal co4_5: std_logic; + signal rptr_9: std_logic; + signal rptr_10: std_logic; + signal rfill_sub_11: std_logic; + signal rfill_sub_12: std_logic; + signal co5_5: std_logic; + signal rptr_11: std_logic; + signal rptr_12: std_logic; + signal rfill_sub_13: std_logic; + signal rfill_sub_14: std_logic; + signal co6_5: std_logic; + signal rptr_13: std_logic; + signal rptr_14: std_logic; + signal rfill_sub_15: std_logic; + signal rfill_sub_16: std_logic; + signal co7_5: std_logic; + signal rptr_15: std_logic; + signal rfill_sub_msb: std_logic; + signal co8_2d: std_logic; + signal co8_2: std_logic; + signal cmp_ci: std_logic; + signal wcount_r0: std_logic; + signal rcount_0: std_logic; + signal rcount_1: std_logic; + signal co0_6: std_logic; + signal wcount_r1: std_logic; + signal wcount_r2: std_logic; + signal rcount_2: std_logic; + signal rcount_3: std_logic; + signal co1_6: std_logic; + signal wcount_r3: std_logic; + signal wcount_r4: std_logic; + signal rcount_4: std_logic; + signal rcount_5: std_logic; + signal co2_6: std_logic; + signal wcount_r5: std_logic; + signal wcount_r6: std_logic; + signal rcount_6: std_logic; + signal rcount_7: std_logic; + signal co3_6: std_logic; + signal wcount_r7: std_logic; + signal wcount_r8: std_logic; + signal rcount_8: std_logic; + signal rcount_9: std_logic; + signal co4_6: std_logic; + signal wcount_r9: std_logic; + signal wcount_r10: std_logic; + signal rcount_10: std_logic; + signal rcount_11: std_logic; + signal co5_6: std_logic; + signal wcount_r11: std_logic; + signal w_g2b_xor_cluster_0: std_logic; + signal rcount_12: std_logic; + signal rcount_13: std_logic; + signal co6_6: std_logic; + signal wcount_r13: std_logic; + signal wcount_r14: std_logic; + signal rcount_14: std_logic; + signal rcount_15: std_logic; + signal co7_6: std_logic; + signal empty_cmp_clr: std_logic; + signal empty_cmp_set: std_logic; + signal empty_d: std_logic; + signal empty_d_c: std_logic; + signal cmp_ci_1: std_logic; + signal rcount_w1: std_logic; + signal rcount_w2: std_logic; + signal wcount_0: std_logic; + signal wcount_1: std_logic; + signal co0_7: std_logic; + signal rcount_w3: std_logic; + signal rcount_w4: std_logic; + signal wcount_2: std_logic; + signal wcount_3: std_logic; + signal co1_7: std_logic; + signal rcount_w5: std_logic; + signal rcount_w6: std_logic; + signal wcount_4: std_logic; + signal wcount_5: std_logic; + signal co2_7: std_logic; + signal rcount_w7: std_logic; + signal rcount_w8: std_logic; + signal wcount_6: std_logic; + signal wcount_7: std_logic; + signal co3_7: std_logic; + signal rcount_w9: std_logic; + signal rcount_w10: std_logic; + signal wcount_8: std_logic; + signal wcount_9: std_logic; + signal co4_7: std_logic; + signal rcount_w11: std_logic; + signal rcount_w12: std_logic; + signal wcount_10: std_logic; + signal wcount_11: std_logic; + signal co5_7: std_logic; + signal r_g2b_xor_cluster_0: std_logic; + signal rcount_w14: std_logic; + signal wcount_12: std_logic; + signal wcount_13: std_logic; + signal co6_7: std_logic; + signal rcount_w15: std_logic; + signal full_cmp_clr: std_logic; + signal wcount_14: std_logic; + signal full_cmp_set: std_logic; + signal full_d: std_logic; + signal full_d_c: std_logic; + signal rden_i: std_logic; + signal cmp_ci_2: std_logic; + signal rcnt_reg_0: std_logic; + signal rcnt_reg_1: std_logic; + signal co0_8: std_logic; + signal rcnt_reg_2: std_logic; + signal rcnt_reg_3: std_logic; + signal co1_8: std_logic; + signal rcnt_reg_4: std_logic; + signal rcnt_reg_5: std_logic; + signal co2_8: std_logic; + signal rcnt_reg_6: std_logic; + signal rcnt_reg_7: std_logic; + signal co3_8: std_logic; + signal rcnt_reg_8: std_logic; + signal rcnt_reg_9: std_logic; + signal co4_8: std_logic; + signal rcnt_reg_10: std_logic; + signal rcnt_reg_11: std_logic; + signal co5_8: std_logic; + signal rcnt_reg_12: std_logic; + signal rcnt_reg_13: std_logic; + signal co6_8: std_logic; + signal rcnt_reg_14: std_logic; + signal rcnt_reg_15: std_logic; + signal co7_7: std_logic; + signal ae_clrsig: std_logic; + signal ae_setsig: std_logic; + signal ae_d: std_logic; + signal ae_d_c: std_logic; + signal wren_i: std_logic; + signal cmp_ci_3: std_logic; + signal wcnt_reg_0: std_logic; + signal wcnt_reg_1: std_logic; + signal co0_9: std_logic; + signal wcnt_reg_2: std_logic; + signal wcnt_reg_3: std_logic; + signal co1_9: std_logic; + signal wcnt_reg_4: std_logic; + signal wcnt_reg_5: std_logic; + signal co2_9: std_logic; + signal wcnt_reg_6: std_logic; + signal wcnt_reg_7: std_logic; + signal co3_9: std_logic; + signal wcnt_reg_8: std_logic; + signal wcnt_reg_9: std_logic; + signal co4_9: std_logic; + signal wcnt_reg_10: std_logic; + signal wcnt_reg_11: std_logic; + signal co5_9: std_logic; + signal wcnt_reg_12: std_logic; + signal wcnt_reg_13: std_logic; + signal co6_9: std_logic; + signal wcnt_reg_14: std_logic; + signal wcnt_reg_15: std_logic; + signal af_d: std_logic; + signal af_d_c: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component AGEB2 + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; GE: out std_logic); + end component; + component AND2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component CU2 + port (CI: in std_logic; PC0: in std_logic; PC1: in std_logic; + CO: out std_logic; NC0: out std_logic; NC1: out std_logic); + end component; + component FADD2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; COUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FSUB2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; BI: in std_logic; BOUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FD1P3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + PD: in std_logic; Q: out std_logic); + end component; + component FD1P3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + CD: in std_logic; Q: out std_logic); + end component; + component FD1S3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; PD: in std_logic; + Q: out std_logic); + end component; + component FD1S3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; CD: in std_logic; + Q: out std_logic); + end component; + component INV + port (A: in std_logic; Z: out std_logic); + end component; + component MUX41 + port (D0: in std_logic; D1: in std_logic; D2: in std_logic; + D3: in std_logic; SD1: in std_logic; SD2: in std_logic; + Z: out std_logic); + end component; + component OR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component ROM16X1 + -- synopsys translate_off + generic (initval : in String); + -- synopsys translate_on + port (AD3: in std_logic; AD2: in std_logic; AD1: in std_logic; + AD0: in std_logic; DO0: out std_logic); + end component; + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component XOR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute initval : string; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute GSR : string; + attribute initval of LUT4_52 : label is "0x6996"; + attribute initval of LUT4_51 : label is "0x6996"; + attribute initval of LUT4_50 : label is "0x6996"; + attribute initval of LUT4_49 : label is "0x6996"; + attribute initval of LUT4_48 : label is "0x6996"; + attribute initval of LUT4_47 : label is "0x6996"; + attribute initval of LUT4_46 : label is "0x6996"; + attribute initval of LUT4_45 : label is "0x6996"; + attribute initval of LUT4_44 : label is "0x6996"; + attribute initval of LUT4_43 : label is "0x6996"; + attribute initval of LUT4_42 : label is "0x6996"; + attribute initval of LUT4_41 : label is "0x6996"; + attribute initval of LUT4_40 : label is "0x6996"; + attribute initval of LUT4_39 : label is "0x6996"; + attribute initval of LUT4_38 : label is "0x6996"; + attribute initval of LUT4_37 : label is "0x6996"; + attribute initval of LUT4_36 : label is "0x6996"; + attribute initval of LUT4_35 : label is "0x6996"; + attribute initval of LUT4_34 : label is "0x6996"; + attribute initval of LUT4_33 : label is "0x6996"; + attribute initval of LUT4_32 : label is "0x6996"; + attribute initval of LUT4_31 : label is "0x6996"; + attribute initval of LUT4_30 : label is "0x6996"; + attribute initval of LUT4_29 : label is "0x6996"; + attribute initval of LUT4_28 : label is "0x6996"; + attribute initval of LUT4_27 : label is "0x6996"; + attribute initval of LUT4_26 : label is "0x6996"; + attribute initval of LUT4_25 : label is "0x6996"; + attribute initval of LUT4_24 : label is "0x6996"; + attribute initval of LUT4_23 : label is "0x6996"; + attribute initval of LUT4_22 : label is "0x6996"; + attribute initval of LUT4_21 : label is "0x6996"; + attribute initval of LUT4_20 : label is "0x6996"; + attribute initval of LUT4_19 : label is "0x6996"; + attribute initval of LUT4_18 : label is "0x6996"; + attribute initval of LUT4_17 : label is "0x6996"; + attribute initval of LUT4_16 : label is "0x6996"; + attribute initval of LUT4_15 : label is "0x6996"; + attribute initval of LUT4_14 : label is "0x6996"; + attribute initval of LUT4_13 : label is "0x6996"; + attribute initval of LUT4_12 : label is "0x6996"; + attribute initval of LUT4_11 : label is "0x6996"; + attribute initval of LUT4_10 : label is "0x6996"; + attribute initval of LUT4_9 : label is "0x6996"; + attribute initval of LUT4_8 : label is "0x6996"; + attribute initval of LUT4_7 : label is "0x6996"; + attribute initval of LUT4_6 : label is "0x6996"; + attribute initval of LUT4_5 : label is "0x6996"; + attribute initval of LUT4_4 : label is "0x6996"; + attribute initval of LUT4_3 : label is "0x0410"; + attribute initval of LUT4_2 : label is "0x1004"; + attribute initval of LUT4_1 : label is "0x0140"; + attribute initval of LUT4_0 : label is "0x4001"; + attribute MEM_LPC_FILE of pdp_ram_0_0_31 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_0_31 : label is ""; + attribute CSDECODE_B of pdp_ram_0_0_31 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_0_31 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_0_31 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_0_31 : label is "NORMAL"; + attribute GSR of pdp_ram_0_0_31 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_0_31 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_0_31 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_0_31 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_0_31 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_0_31 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_1_30 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_1_30 : label is ""; + attribute CSDECODE_B of pdp_ram_0_1_30 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_1_30 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_1_30 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_1_30 : label is "NORMAL"; + attribute GSR of pdp_ram_0_1_30 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_1_30 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_1_30 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_1_30 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_1_30 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_1_30 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_2_29 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_2_29 : label is ""; + attribute CSDECODE_B of pdp_ram_0_2_29 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_2_29 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_2_29 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_2_29 : label is "NORMAL"; + attribute GSR of pdp_ram_0_2_29 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_2_29 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_2_29 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_2_29 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_2_29 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_2_29 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_3_28 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_3_28 : label is ""; + attribute CSDECODE_B of pdp_ram_0_3_28 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_3_28 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_3_28 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_3_28 : label is "NORMAL"; + attribute GSR of pdp_ram_0_3_28 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_3_28 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_3_28 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_3_28 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_3_28 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_3_28 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_4_27 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_4_27 : label is ""; + attribute CSDECODE_B of pdp_ram_0_4_27 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_4_27 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_4_27 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_4_27 : label is "NORMAL"; + attribute GSR of pdp_ram_0_4_27 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_4_27 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_4_27 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_4_27 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_4_27 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_4_27 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_5_26 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_5_26 : label is ""; + attribute CSDECODE_B of pdp_ram_0_5_26 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_5_26 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_5_26 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_5_26 : label is "NORMAL"; + attribute GSR of pdp_ram_0_5_26 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_5_26 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_5_26 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_5_26 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_5_26 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_5_26 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_6_25 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_6_25 : label is ""; + attribute CSDECODE_B of pdp_ram_0_6_25 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_6_25 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_6_25 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_6_25 : label is "NORMAL"; + attribute GSR of pdp_ram_0_6_25 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_6_25 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_6_25 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_6_25 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_6_25 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_6_25 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_0_7_24 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_7_24 : label is ""; + attribute CSDECODE_B of pdp_ram_0_7_24 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_7_24 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_7_24 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_7_24 : label is "NORMAL"; + attribute GSR of pdp_ram_0_7_24 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_7_24 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_7_24 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_7_24 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_7_24 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_7_24 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_0_23 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_0_23 : label is ""; + attribute CSDECODE_B of pdp_ram_1_0_23 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_0_23 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_0_23 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_0_23 : label is "NORMAL"; + attribute GSR of pdp_ram_1_0_23 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_0_23 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_0_23 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_0_23 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_0_23 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_0_23 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_1_22 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_1_22 : label is ""; + attribute CSDECODE_B of pdp_ram_1_1_22 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_1_22 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_1_22 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_1_22 : label is "NORMAL"; + attribute GSR of pdp_ram_1_1_22 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_1_22 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_1_22 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_1_22 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_1_22 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_1_22 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_2_21 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_2_21 : label is ""; + attribute CSDECODE_B of pdp_ram_1_2_21 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_2_21 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_2_21 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_2_21 : label is "NORMAL"; + attribute GSR of pdp_ram_1_2_21 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_2_21 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_2_21 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_2_21 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_2_21 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_2_21 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_3_20 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_3_20 : label is ""; + attribute CSDECODE_B of pdp_ram_1_3_20 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_3_20 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_3_20 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_3_20 : label is "NORMAL"; + attribute GSR of pdp_ram_1_3_20 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_3_20 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_3_20 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_3_20 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_3_20 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_3_20 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_4_19 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_4_19 : label is ""; + attribute CSDECODE_B of pdp_ram_1_4_19 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_4_19 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_4_19 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_4_19 : label is "NORMAL"; + attribute GSR of pdp_ram_1_4_19 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_4_19 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_4_19 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_4_19 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_4_19 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_4_19 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_5_18 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_5_18 : label is ""; + attribute CSDECODE_B of pdp_ram_1_5_18 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_5_18 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_5_18 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_5_18 : label is "NORMAL"; + attribute GSR of pdp_ram_1_5_18 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_5_18 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_5_18 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_5_18 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_5_18 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_5_18 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_6_17 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_6_17 : label is ""; + attribute CSDECODE_B of pdp_ram_1_6_17 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_6_17 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_6_17 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_6_17 : label is "NORMAL"; + attribute GSR of pdp_ram_1_6_17 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_6_17 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_6_17 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_6_17 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_6_17 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_6_17 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_1_7_16 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_7_16 : label is ""; + attribute CSDECODE_B of pdp_ram_1_7_16 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_7_16 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_7_16 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_7_16 : label is "NORMAL"; + attribute GSR of pdp_ram_1_7_16 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_7_16 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_7_16 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_7_16 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_7_16 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_7_16 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_0_15 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_0_15 : label is ""; + attribute CSDECODE_B of pdp_ram_2_0_15 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_0_15 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_0_15 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_0_15 : label is "NORMAL"; + attribute GSR of pdp_ram_2_0_15 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_0_15 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_0_15 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_0_15 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_0_15 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_0_15 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_1_14 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_1_14 : label is ""; + attribute CSDECODE_B of pdp_ram_2_1_14 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_1_14 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_1_14 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_1_14 : label is "NORMAL"; + attribute GSR of pdp_ram_2_1_14 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_1_14 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_1_14 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_1_14 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_1_14 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_1_14 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_2_13 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_2_13 : label is ""; + attribute CSDECODE_B of pdp_ram_2_2_13 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_2_13 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_2_13 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_2_13 : label is "NORMAL"; + attribute GSR of pdp_ram_2_2_13 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_2_13 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_2_13 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_2_13 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_2_13 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_2_13 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_3_12 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_3_12 : label is ""; + attribute CSDECODE_B of pdp_ram_2_3_12 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_3_12 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_3_12 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_3_12 : label is "NORMAL"; + attribute GSR of pdp_ram_2_3_12 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_3_12 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_3_12 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_3_12 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_3_12 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_3_12 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_4_11 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_4_11 : label is ""; + attribute CSDECODE_B of pdp_ram_2_4_11 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_4_11 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_4_11 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_4_11 : label is "NORMAL"; + attribute GSR of pdp_ram_2_4_11 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_4_11 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_4_11 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_4_11 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_4_11 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_4_11 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_5_10 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_5_10 : label is ""; + attribute CSDECODE_B of pdp_ram_2_5_10 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_5_10 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_5_10 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_5_10 : label is "NORMAL"; + attribute GSR of pdp_ram_2_5_10 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_5_10 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_5_10 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_5_10 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_5_10 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_5_10 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_6_9 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_6_9 : label is ""; + attribute CSDECODE_B of pdp_ram_2_6_9 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_6_9 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_6_9 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_6_9 : label is "NORMAL"; + attribute GSR of pdp_ram_2_6_9 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_6_9 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_6_9 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_6_9 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_6_9 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_6_9 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_2_7_8 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_7_8 : label is ""; + attribute CSDECODE_B of pdp_ram_2_7_8 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_7_8 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_7_8 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_7_8 : label is "NORMAL"; + attribute GSR of pdp_ram_2_7_8 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_7_8 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_7_8 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_7_8 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_7_8 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_7_8 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_0_7 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_0_7 : label is ""; + attribute CSDECODE_B of pdp_ram_3_0_7 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_0_7 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_0_7 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_0_7 : label is "NORMAL"; + attribute GSR of pdp_ram_3_0_7 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_0_7 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_0_7 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_0_7 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_0_7 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_0_7 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_1_6 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_1_6 : label is ""; + attribute CSDECODE_B of pdp_ram_3_1_6 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_1_6 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_1_6 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_1_6 : label is "NORMAL"; + attribute GSR of pdp_ram_3_1_6 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_1_6 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_1_6 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_1_6 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_1_6 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_1_6 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_2_5 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_2_5 : label is ""; + attribute CSDECODE_B of pdp_ram_3_2_5 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_2_5 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_2_5 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_2_5 : label is "NORMAL"; + attribute GSR of pdp_ram_3_2_5 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_2_5 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_2_5 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_2_5 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_2_5 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_2_5 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_3_4 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_3_4 : label is ""; + attribute CSDECODE_B of pdp_ram_3_3_4 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_3_4 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_3_4 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_3_4 : label is "NORMAL"; + attribute GSR of pdp_ram_3_3_4 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_3_4 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_3_4 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_3_4 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_3_4 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_3_4 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_4_3 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_4_3 : label is ""; + attribute CSDECODE_B of pdp_ram_3_4_3 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_4_3 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_4_3 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_4_3 : label is "NORMAL"; + attribute GSR of pdp_ram_3_4_3 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_4_3 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_4_3 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_4_3 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_4_3 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_4_3 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_5_2 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_5_2 : label is ""; + attribute CSDECODE_B of pdp_ram_3_5_2 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_5_2 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_5_2 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_5_2 : label is "NORMAL"; + attribute GSR of pdp_ram_3_5_2 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_5_2 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_5_2 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_5_2 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_5_2 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_5_2 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_6_1 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_6_1 : label is ""; + attribute CSDECODE_B of pdp_ram_3_6_1 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_6_1 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_6_1 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_6_1 : label is "NORMAL"; + attribute GSR of pdp_ram_3_6_1 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_6_1 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_6_1 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_6_1 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_6_1 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_6_1 : label is "2"; + attribute MEM_LPC_FILE of pdp_ram_3_7_0 : label is "fifo_32kx16x8_mb.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_7_0 : label is ""; + attribute CSDECODE_B of pdp_ram_3_7_0 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_7_0 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_7_0 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_7_0 : label is "NORMAL"; + attribute GSR of pdp_ram_3_7_0 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_7_0 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_7_0 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_7_0 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_7_0 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_7_0 : label is "2"; + attribute GSR of FF_236 : label is "ENABLED"; + attribute GSR of FF_235 : label is "ENABLED"; + attribute GSR of FF_234 : label is "ENABLED"; + attribute GSR of FF_233 : label is "ENABLED"; + attribute GSR of FF_232 : label is "ENABLED"; + attribute GSR of FF_231 : label is "ENABLED"; + attribute GSR of FF_230 : label is "ENABLED"; + attribute GSR of FF_229 : label is "ENABLED"; + attribute GSR of FF_228 : label is "ENABLED"; + attribute GSR of FF_227 : label is "ENABLED"; + attribute GSR of FF_226 : label is "ENABLED"; + attribute GSR of FF_225 : label is "ENABLED"; + attribute GSR of FF_224 : label is "ENABLED"; + attribute GSR of FF_223 : label is "ENABLED"; + attribute GSR of FF_222 : label is "ENABLED"; + attribute GSR of FF_221 : label is "ENABLED"; + attribute GSR of FF_220 : label is "ENABLED"; + attribute GSR of FF_219 : label is "ENABLED"; + attribute GSR of FF_218 : label is "ENABLED"; + attribute GSR of FF_217 : label is "ENABLED"; + attribute GSR of FF_216 : label is "ENABLED"; + attribute GSR of FF_215 : label is "ENABLED"; + attribute GSR of FF_214 : label is "ENABLED"; + attribute GSR of FF_213 : label is "ENABLED"; + attribute GSR of FF_212 : label is "ENABLED"; + attribute GSR of FF_211 : label is "ENABLED"; + attribute GSR of FF_210 : label is "ENABLED"; + attribute GSR of FF_209 : label is "ENABLED"; + attribute GSR of FF_208 : label is "ENABLED"; + attribute GSR of FF_207 : label is "ENABLED"; + attribute GSR of FF_206 : label is "ENABLED"; + attribute GSR of FF_205 : label is "ENABLED"; + attribute GSR of FF_204 : label is "ENABLED"; + attribute GSR of FF_203 : label is "ENABLED"; + attribute GSR of FF_202 : label is "ENABLED"; + attribute GSR of FF_201 : label is "ENABLED"; + attribute GSR of FF_200 : label is "ENABLED"; + attribute GSR of FF_199 : label is "ENABLED"; + attribute GSR of FF_198 : label is "ENABLED"; + attribute GSR of FF_197 : label is "ENABLED"; + attribute GSR of FF_196 : label is "ENABLED"; + attribute GSR of FF_195 : label is "ENABLED"; + attribute GSR of FF_194 : label is "ENABLED"; + attribute GSR of FF_193 : label is "ENABLED"; + attribute GSR of FF_192 : label is "ENABLED"; + attribute GSR of FF_191 : label is "ENABLED"; + attribute GSR of FF_190 : label is "ENABLED"; + attribute GSR of FF_189 : label is "ENABLED"; + attribute GSR of FF_188 : label is "ENABLED"; + attribute GSR of FF_187 : label is "ENABLED"; + attribute GSR of FF_186 : label is "ENABLED"; + attribute GSR of FF_185 : label is "ENABLED"; + attribute GSR of FF_184 : label is "ENABLED"; + attribute GSR of FF_183 : label is "ENABLED"; + attribute GSR of FF_182 : label is "ENABLED"; + attribute GSR of FF_181 : label is "ENABLED"; + attribute GSR of FF_180 : label is "ENABLED"; + attribute GSR of FF_179 : label is "ENABLED"; + attribute GSR of FF_178 : label is "ENABLED"; + attribute GSR of FF_177 : label is "ENABLED"; + attribute GSR of FF_176 : label is "ENABLED"; + attribute GSR of FF_175 : label is "ENABLED"; + attribute GSR of FF_174 : label is "ENABLED"; + attribute GSR of FF_173 : label is "ENABLED"; + attribute GSR of FF_172 : label is "ENABLED"; + attribute GSR of FF_171 : label is "ENABLED"; + attribute GSR of FF_170 : label is "ENABLED"; + attribute GSR of FF_169 : label is "ENABLED"; + attribute GSR of FF_168 : label is "ENABLED"; + attribute GSR of FF_167 : label is "ENABLED"; + attribute GSR of FF_166 : label is "ENABLED"; + attribute GSR of FF_165 : label is "ENABLED"; + attribute GSR of FF_164 : label is "ENABLED"; + attribute GSR of FF_163 : label is "ENABLED"; + attribute GSR of FF_162 : label is "ENABLED"; + attribute GSR of FF_161 : label is "ENABLED"; + attribute GSR of FF_160 : label is "ENABLED"; + attribute GSR of FF_159 : label is "ENABLED"; + attribute GSR of FF_158 : label is "ENABLED"; + attribute GSR of FF_157 : label is "ENABLED"; + attribute GSR of FF_156 : label is "ENABLED"; + attribute GSR of FF_155 : label is "ENABLED"; + attribute GSR of FF_154 : label is "ENABLED"; + attribute GSR of FF_153 : label is "ENABLED"; + attribute GSR of FF_152 : label is "ENABLED"; + attribute GSR of FF_151 : label is "ENABLED"; + attribute GSR of FF_150 : label is "ENABLED"; + attribute GSR of FF_149 : label is "ENABLED"; + attribute GSR of FF_148 : label is "ENABLED"; + attribute GSR of FF_147 : label is "ENABLED"; + attribute GSR of FF_146 : label is "ENABLED"; + attribute GSR of FF_145 : label is "ENABLED"; + attribute GSR of FF_144 : label is "ENABLED"; + attribute GSR of FF_143 : label is "ENABLED"; + attribute GSR of FF_142 : label is "ENABLED"; + attribute GSR of FF_141 : label is "ENABLED"; + attribute GSR of FF_140 : label is "ENABLED"; + attribute GSR of FF_139 : label is "ENABLED"; + attribute GSR of FF_138 : label is "ENABLED"; + attribute GSR of FF_137 : label is "ENABLED"; + attribute GSR of FF_136 : label is "ENABLED"; + attribute GSR of FF_135 : label is "ENABLED"; + attribute GSR of FF_134 : label is "ENABLED"; + attribute GSR of FF_133 : label is "ENABLED"; + attribute GSR of FF_132 : label is "ENABLED"; + attribute GSR of FF_131 : label is "ENABLED"; + attribute GSR of FF_130 : label is "ENABLED"; + attribute GSR of FF_129 : label is "ENABLED"; + attribute GSR of FF_128 : label is "ENABLED"; + attribute GSR of FF_127 : label is "ENABLED"; + attribute GSR of FF_126 : label is "ENABLED"; + attribute GSR of FF_125 : label is "ENABLED"; + attribute GSR of FF_124 : label is "ENABLED"; + attribute GSR of FF_123 : label is "ENABLED"; + attribute GSR of FF_122 : label is "ENABLED"; + attribute GSR of FF_121 : label is "ENABLED"; + attribute GSR of FF_120 : label is "ENABLED"; + attribute GSR of FF_119 : label is "ENABLED"; + attribute GSR of FF_118 : label is "ENABLED"; + attribute GSR of FF_117 : label is "ENABLED"; + attribute GSR of FF_116 : label is "ENABLED"; + attribute GSR of FF_115 : label is "ENABLED"; + attribute GSR of FF_114 : label is "ENABLED"; + attribute GSR of FF_113 : label is "ENABLED"; + attribute GSR of FF_112 : label is "ENABLED"; + attribute GSR of FF_111 : label is "ENABLED"; + attribute GSR of FF_110 : label is "ENABLED"; + attribute GSR of FF_109 : label is "ENABLED"; + attribute GSR of FF_108 : label is "ENABLED"; + attribute GSR of FF_107 : label is "ENABLED"; + attribute GSR of FF_106 : label is "ENABLED"; + attribute GSR of FF_105 : label is "ENABLED"; + attribute GSR of FF_104 : label is "ENABLED"; + attribute GSR of FF_103 : label is "ENABLED"; + attribute GSR of FF_102 : label is "ENABLED"; + attribute GSR of FF_101 : label is "ENABLED"; + attribute GSR of FF_100 : label is "ENABLED"; + attribute GSR of FF_99 : label is "ENABLED"; + attribute GSR of FF_98 : label is "ENABLED"; + attribute GSR of FF_97 : label is "ENABLED"; + attribute GSR of FF_96 : label is "ENABLED"; + attribute GSR of FF_95 : label is "ENABLED"; + attribute GSR of FF_94 : label is "ENABLED"; + attribute GSR of FF_93 : label is "ENABLED"; + attribute GSR of FF_92 : label is "ENABLED"; + attribute GSR of FF_91 : label is "ENABLED"; + attribute GSR of FF_90 : label is "ENABLED"; + attribute GSR of FF_89 : label is "ENABLED"; + attribute GSR of FF_88 : label is "ENABLED"; + attribute GSR of FF_87 : label is "ENABLED"; + attribute GSR of FF_86 : label is "ENABLED"; + attribute GSR of FF_85 : label is "ENABLED"; + attribute GSR of FF_84 : label is "ENABLED"; + attribute GSR of FF_83 : label is "ENABLED"; + attribute GSR of FF_82 : label is "ENABLED"; + attribute GSR of FF_81 : label is "ENABLED"; + attribute GSR of FF_80 : label is "ENABLED"; + attribute GSR of FF_79 : label is "ENABLED"; + attribute GSR of FF_78 : label is "ENABLED"; + attribute GSR of FF_77 : label is "ENABLED"; + attribute GSR of FF_76 : label is "ENABLED"; + attribute GSR of FF_75 : label is "ENABLED"; + attribute GSR of FF_74 : label is "ENABLED"; + attribute GSR of FF_73 : label is "ENABLED"; + attribute GSR of FF_72 : label is "ENABLED"; + attribute GSR of FF_71 : label is "ENABLED"; + attribute GSR of FF_70 : label is "ENABLED"; + attribute GSR of FF_69 : label is "ENABLED"; + attribute GSR of FF_68 : label is "ENABLED"; + attribute GSR of FF_67 : label is "ENABLED"; + attribute GSR of FF_66 : label is "ENABLED"; + attribute GSR of FF_65 : label is "ENABLED"; + attribute GSR of FF_64 : label is "ENABLED"; + attribute GSR of FF_63 : label is "ENABLED"; + attribute GSR of FF_62 : label is "ENABLED"; + attribute GSR of FF_61 : label is "ENABLED"; + attribute GSR of FF_60 : label is "ENABLED"; + attribute GSR of FF_59 : label is "ENABLED"; + attribute GSR of FF_58 : label is "ENABLED"; + attribute GSR of FF_57 : label is "ENABLED"; + attribute GSR of FF_56 : label is "ENABLED"; + attribute GSR of FF_55 : label is "ENABLED"; + attribute GSR of FF_54 : label is "ENABLED"; + attribute GSR of FF_53 : label is "ENABLED"; + attribute GSR of FF_52 : label is "ENABLED"; + attribute GSR of FF_51 : label is "ENABLED"; + attribute GSR of FF_50 : label is "ENABLED"; + attribute GSR of FF_49 : label is "ENABLED"; + attribute GSR of FF_48 : label is "ENABLED"; + attribute GSR of FF_47 : label is "ENABLED"; + attribute GSR of FF_46 : label is "ENABLED"; + attribute GSR of FF_45 : label is "ENABLED"; + attribute GSR of FF_44 : label is "ENABLED"; + attribute GSR of FF_43 : label is "ENABLED"; + attribute GSR of FF_42 : label is "ENABLED"; + attribute GSR of FF_41 : label is "ENABLED"; + attribute GSR of FF_40 : label is "ENABLED"; + attribute GSR of FF_39 : label is "ENABLED"; + attribute GSR of FF_38 : label is "ENABLED"; + attribute GSR of FF_37 : label is "ENABLED"; + attribute GSR of FF_36 : label is "ENABLED"; + attribute GSR of FF_35 : label is "ENABLED"; + attribute GSR of FF_34 : label is "ENABLED"; + attribute GSR of FF_33 : label is "ENABLED"; + attribute GSR of FF_32 : label is "ENABLED"; + attribute GSR of FF_31 : label is "ENABLED"; + attribute GSR of FF_30 : label is "ENABLED"; + attribute GSR of FF_29 : label is "ENABLED"; + attribute GSR of FF_28 : label is "ENABLED"; + attribute GSR of FF_27 : label is "ENABLED"; + attribute GSR of FF_26 : label is "ENABLED"; + attribute GSR of FF_25 : label is "ENABLED"; + attribute GSR of FF_24 : label is "ENABLED"; + attribute GSR of FF_23 : label is "ENABLED"; + attribute GSR of FF_22 : label is "ENABLED"; + attribute GSR of FF_21 : label is "ENABLED"; + attribute GSR of FF_20 : label is "ENABLED"; + attribute GSR of FF_19 : label is "ENABLED"; + attribute GSR of FF_18 : label is "ENABLED"; + attribute GSR of FF_17 : label is "ENABLED"; + attribute GSR of FF_16 : label is "ENABLED"; + attribute GSR of FF_15 : label is "ENABLED"; + attribute GSR of FF_14 : label is "ENABLED"; + attribute GSR of FF_13 : label is "ENABLED"; + attribute GSR of FF_12 : label is "ENABLED"; + attribute GSR of FF_11 : label is "ENABLED"; + attribute GSR of FF_10 : label is "ENABLED"; + attribute GSR of FF_9 : label is "ENABLED"; + attribute GSR of FF_8 : label is "ENABLED"; + attribute GSR of FF_7 : label is "ENABLED"; + attribute GSR of FF_6 : label is "ENABLED"; + attribute GSR of FF_5 : label is "ENABLED"; + attribute GSR of FF_4 : label is "ENABLED"; + attribute GSR of FF_3 : label is "ENABLED"; + attribute GSR of FF_2 : label is "ENABLED"; + attribute GSR of FF_1 : label is "ENABLED"; + attribute GSR of FF_0 : label is "ENABLED"; + attribute syn_keep : boolean; + +begin + -- component instantiation statements + AND2_t39: AND2 + port map (A=>WrEn, B=>invout_1, Z=>wren_i); + + INV_2: INV + port map (A=>full_i, Z=>invout_1); + + AND2_t38: AND2 + port map (A=>RdEn, B=>invout_0, Z=>rden_i); + + INV_1: INV + port map (A=>empty_i, Z=>invout_0); + + OR2_t37: OR2 + port map (A=>Reset, B=>RPReset, Z=>rRst); + + XOR2_t36: XOR2 + port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); + + XOR2_t35: XOR2 + port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); + + XOR2_t34: XOR2 + port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); + + XOR2_t33: XOR2 + port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); + + XOR2_t32: XOR2 + port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); + + XOR2_t31: XOR2 + port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); + + XOR2_t30: XOR2 + port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); + + XOR2_t29: XOR2 + port map (A=>wcount_7, B=>wcount_8, Z=>w_gdata_7); + + XOR2_t28: XOR2 + port map (A=>wcount_8, B=>wcount_9, Z=>w_gdata_8); + + XOR2_t27: XOR2 + port map (A=>wcount_9, B=>wcount_10, Z=>w_gdata_9); + + XOR2_t26: XOR2 + port map (A=>wcount_10, B=>wcount_11, Z=>w_gdata_10); + + XOR2_t25: XOR2 + port map (A=>wcount_11, B=>wcount_12, Z=>w_gdata_11); + + XOR2_t24: XOR2 + port map (A=>wcount_12, B=>wcount_13, Z=>w_gdata_12); + + XOR2_t23: XOR2 + port map (A=>wcount_13, B=>wcount_14, Z=>w_gdata_13); + + XOR2_t22: XOR2 + port map (A=>wcount_14, B=>wcount_15, Z=>w_gdata_14); + + XOR2_t21: XOR2 + port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); + + XOR2_t20: XOR2 + port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); + + XOR2_t19: XOR2 + port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); + + XOR2_t18: XOR2 + port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); + + XOR2_t17: XOR2 + port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); + + XOR2_t16: XOR2 + port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); + + XOR2_t15: XOR2 + port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); + + XOR2_t14: XOR2 + port map (A=>rcount_7, B=>rcount_8, Z=>r_gdata_7); + + XOR2_t13: XOR2 + port map (A=>rcount_8, B=>rcount_9, Z=>r_gdata_8); + + XOR2_t12: XOR2 + port map (A=>rcount_9, B=>rcount_10, Z=>r_gdata_9); + + XOR2_t11: XOR2 + port map (A=>rcount_10, B=>rcount_11, Z=>r_gdata_10); + + XOR2_t10: XOR2 + port map (A=>rcount_11, B=>rcount_12, Z=>r_gdata_11); + + XOR2_t9: XOR2 + port map (A=>rcount_12, B=>rcount_13, Z=>r_gdata_12); + + XOR2_t8: XOR2 + port map (A=>rcount_13, B=>rcount_14, Z=>r_gdata_13); + + XOR2_t7: XOR2 + port map (A=>rcount_14, B=>rcount_15, Z=>r_gdata_14); + + XOR2_t6: XOR2 + port map (A=>rcount_15, B=>rcount_16, Z=>r_gdata_15); + + LUT4_52: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r212, AD2=>w_gcount_r213, + AD1=>w_gcount_r214, AD0=>w_gcount_r215, + DO0=>w_g2b_xor_cluster_0); + + LUT4_51: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r28, AD2=>w_gcount_r29, + AD1=>w_gcount_r210, AD0=>w_gcount_r211, + DO0=>w_g2b_xor_cluster_1); + + LUT4_50: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r24, AD2=>w_gcount_r25, + AD1=>w_gcount_r26, AD0=>w_gcount_r27, + DO0=>w_g2b_xor_cluster_2); + + LUT4_49: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r20, AD2=>w_gcount_r21, + AD1=>w_gcount_r22, AD0=>w_gcount_r23, + DO0=>w_g2b_xor_cluster_3); + + LUT4_48: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r214, AD2=>w_gcount_r215, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>wcount_r14); + + LUT4_47: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r213, AD2=>w_gcount_r214, + AD1=>w_gcount_r215, AD0=>scuba_vlo, DO0=>wcount_r13); + + LUT4_46: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r211, AD2=>w_gcount_r212, + AD1=>w_gcount_r213, AD0=>wcount_r14, DO0=>wcount_r11); + + LUT4_45: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r210, AD2=>w_gcount_r211, + AD1=>w_gcount_r212, AD0=>wcount_r13, DO0=>wcount_r10); + + LUT4_44: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r29, AD2=>w_gcount_r210, + AD1=>w_gcount_r211, AD0=>w_g2b_xor_cluster_0, DO0=>wcount_r9); + + LUT4_43: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r8); + + LUT4_42: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r27, AD0=>scuba_vlo, DO0=>wcount_r7); + + LUT4_41: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r26, AD0=>w_gcount_r27, DO0=>wcount_r6); + + LUT4_40: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r25, AD2=>w_gcount_r26, + AD1=>w_gcount_r27, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_2_1); + + LUT4_39: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>wcount_r5); + + LUT4_38: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>wcount_r4); + + LUT4_37: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_gcount_r23, DO0=>wcount_r3); + + LUT4_36: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r22, AD2=>w_gcount_r23, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>w_g2b_xor_cluster_3_1); + + LUT4_35: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3_1, + DO0=>wcount_r2); + + LUT4_34: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r21, AD2=>w_gcount_r22, + AD1=>w_gcount_r23, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_3_2); + + LUT4_33: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3_2, + DO0=>wcount_r1); + + LUT4_32: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3, + DO0=>wcount_r0); + + LUT4_31: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w213, AD2=>r_gcount_w214, + AD1=>r_gcount_w215, AD0=>r_gcount_w216, + DO0=>r_g2b_xor_cluster_0); + + LUT4_30: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w29, AD2=>r_gcount_w210, + AD1=>r_gcount_w211, AD0=>r_gcount_w212, + DO0=>r_g2b_xor_cluster_1); + + LUT4_29: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w25, AD2=>r_gcount_w26, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, + DO0=>r_g2b_xor_cluster_2); + + LUT4_28: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w21, AD2=>r_gcount_w22, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, + DO0=>r_g2b_xor_cluster_3); + + LUT4_27: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w215, AD2=>r_gcount_w216, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>rcount_w15); + + LUT4_26: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w214, AD2=>r_gcount_w215, + AD1=>r_gcount_w216, AD0=>scuba_vlo, DO0=>rcount_w14); + + LUT4_25: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w212, AD2=>r_gcount_w213, + AD1=>r_gcount_w214, AD0=>rcount_w15, DO0=>rcount_w12); + + LUT4_24: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w211, AD2=>r_gcount_w212, + AD1=>r_gcount_w213, AD0=>rcount_w14, DO0=>rcount_w11); + + LUT4_23: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w210, AD2=>r_gcount_w211, + AD1=>r_gcount_w212, AD0=>r_g2b_xor_cluster_0, + DO0=>rcount_w10); + + LUT4_22: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w9); + + LUT4_21: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w28, AD0=>scuba_vlo, DO0=>rcount_w8); + + LUT4_20: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, DO0=>rcount_w7); + + LUT4_19: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w26, AD2=>r_gcount_w27, + AD1=>r_gcount_w28, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_2_1); + + LUT4_18: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>rcount_w6); + + LUT4_17: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>rcount_w5); + + LUT4_16: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_gcount_w24, DO0=>rcount_w4); + + LUT4_15: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w23, AD2=>r_gcount_w24, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>r_g2b_xor_cluster_3_1); + + LUT4_14: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3_1, + DO0=>rcount_w3); + + LUT4_13: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w22, AD2=>r_gcount_w23, + AD1=>r_gcount_w24, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_3_2); + + LUT4_12: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3_2, + DO0=>rcount_w2); + + LUT4_11: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3, + DO0=>rcount_w1); + + LUT4_10: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w20, AD2=>r_gcount_w21, + AD1=>r_gcount_w22, AD0=>r_gcount_w23, DO0=>func_xor_inet); + + LUT4_9: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w24, AD2=>r_gcount_w25, + AD1=>r_gcount_w26, AD0=>r_gcount_w27, DO0=>func_xor_inet_1); + + LUT4_8: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w28, AD2=>r_gcount_w29, + AD1=>r_gcount_w210, AD0=>r_gcount_w211, DO0=>func_xor_inet_2); + + LUT4_7: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w212, AD2=>r_gcount_w213, + AD1=>r_gcount_w214, AD0=>r_gcount_w215, DO0=>func_xor_inet_3); + + LUT4_6: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w216, AD2=>scuba_vlo, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>func_xor_inet_4); + + LUT4_5: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet, AD2=>func_xor_inet_1, + AD1=>func_xor_inet_2, AD0=>func_xor_inet_3, + DO0=>func_xor_inet_5); + + LUT4_4: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet_5, AD2=>func_xor_inet_4, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w0); + + XOR2_t5: XOR2 + port map (A=>wcount_15, B=>r_gcount_w216, Z=>wcnt_sub_msb); + + XOR2_t4: XOR2 + port map (A=>w_gcount_r215, B=>rcount_16, Z=>rcnt_sub_msb); + + XOR2_t3: XOR2 + port map (A=>wptr_15, B=>r_gcount_w216, Z=>wfill_sub_msb); + + XOR2_t2: XOR2 + port map (A=>w_gcount_r215, B=>rptr_16, Z=>rfill_sub_msb); + + LUT4_3: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0410") + -- synopsys translate_on + port map (AD3=>rptr_16, AD2=>rcount_16, AD1=>w_gcount_r215, + AD0=>scuba_vlo, DO0=>empty_cmp_set); + + LUT4_2: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x1004") + -- synopsys translate_on + port map (AD3=>rptr_16, AD2=>rcount_16, AD1=>w_gcount_r215, + AD0=>scuba_vlo, DO0=>empty_cmp_clr); + + LUT4_1: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0140") + -- synopsys translate_on + port map (AD3=>wptr_15, AD2=>wcount_15, AD1=>r_gcount_w216, + AD0=>scuba_vlo, DO0=>full_cmp_set); + + LUT4_0: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x4001") + -- synopsys translate_on + port map (AD3=>wptr_15, AD2=>wcount_15, AD1=>r_gcount_w216, + AD0=>scuba_vlo, DO0=>full_cmp_clr); + + INV_0: INV + port map (A=>rcnt_reg_15, Z=>rcnt_reg_15_inv); + + AND2_t1: AND2 + port map (A=>rcnt_reg_16, B=>rcnt_reg_15_inv, Z=>ae_clrsig); + + AND2_t0: AND2 + port map (A=>rcnt_reg_16, B=>rcnt_reg_15, Z=>ae_setsig); + + pdp_ram_0_0_31: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(8), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_1_30: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(9), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_2_29: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(10), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_3_28: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(11), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_4_27: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(12), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_5_26: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(13), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_6_25: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(14), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_7_24: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(15), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_0_23: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(8), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_1_22: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(9), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_2_21: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(10), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_3_20: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(11), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_4_19: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(12), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_5_18: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(13), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_6_17: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(14), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_7_16: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(15), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_0_15: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(8), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_1_14: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(9), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_2_13: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(10), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_3_12: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(11), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_4_11: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(12), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_5_10: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(13), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_6_9: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(14), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_7_8: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(15), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_0_7: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(8), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_1_6: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(9), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_2_5: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(10), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_3_4: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(11), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_4_3: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(12), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_5_2: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(13), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_6_1: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(14), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_7_0: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 2) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>Data(15), DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>wptr_0, ADA2=>wptr_1, ADA3=>wptr_2, + ADA4=>wptr_3, ADA5=>wptr_4, ADA6=>wptr_5, ADA7=>wptr_6, + ADA8=>wptr_7, ADA9=>wptr_8, ADA10=>wptr_9, ADA11=>wptr_10, + ADA12=>wptr_11, ADA13=>wptr_12, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_13, CSA1=>wptr_14, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + FF_236: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset, + Q=>wcount_0); + + FF_235: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_1); + + FF_234: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_2); + + FF_233: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_3); + + FF_232: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_4); + + FF_231: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_5); + + FF_230: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_6); + + FF_229: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_7); + + FF_228: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_8); + + FF_227: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_9); + + FF_226: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_10); + + FF_225: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_11); + + FF_224: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_12); + + FF_223: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_13); + + FF_222: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_14); + + FF_221: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_15); + + FF_220: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_0); + + FF_219: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_1); + + FF_218: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_2); + + FF_217: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_3); + + FF_216: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_4); + + FF_215: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_5); + + FF_214: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_6); + + FF_213: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_7); + + FF_212: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_8); + + FF_211: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_9); + + FF_210: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_10); + + FF_209: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_11); + + FF_208: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_12); + + FF_207: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_13); + + FF_206: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_14); + + FF_205: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_15); + + FF_204: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_0); + + FF_203: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_1); + + FF_202: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_2); + + FF_201: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_3); + + FF_200: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_4); + + FF_199: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_5); + + FF_198: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_6); + + FF_197: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_7); + + FF_196: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_8); + + FF_195: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_9); + + FF_194: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_10); + + FF_193: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_11); + + FF_192: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_12); + + FF_191: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_13); + + FF_190: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_14); + + FF_189: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_15); + + FF_188: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_0, SP=>rden_i, CK=>RdClock, PD=>rRst, + Q=>rcount_0); + + FF_187: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_1); + + FF_186: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_2); + + FF_185: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_3); + + FF_184: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_4); + + FF_183: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_5); + + FF_182: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_6); + + FF_181: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_7); + + FF_180: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_8); + + FF_179: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_9); + + FF_178: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_10); + + FF_177: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_11); + + FF_176: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_12); + + FF_175: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_13); + + FF_174: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_14); + + FF_173: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_15); + + FF_172: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_16); + + FF_171: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_0); + + FF_170: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_1); + + FF_169: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_2); + + FF_168: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_3); + + FF_167: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_4); + + FF_166: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_5); + + FF_165: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_6); + + FF_164: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_7); + + FF_163: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_8); + + FF_162: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_9); + + FF_161: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_10); + + FF_160: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_11); + + FF_159: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_12); + + FF_158: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_13); + + FF_157: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_14); + + FF_156: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_15); + + FF_155: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_16); + + FF_154: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_0); + + FF_153: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_1); + + FF_152: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_2); + + FF_151: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_3); + + FF_150: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_4); + + FF_149: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_5); + + FF_148: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_6); + + FF_147: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_7); + + FF_146: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_8); + + FF_145: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_9); + + FF_144: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_10); + + FF_143: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_11); + + FF_142: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_12); + + FF_141: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_13); + + FF_140: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_14); + + FF_139: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_15); + + FF_138: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_16); + + FF_137: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rptr_14, SP=>rden_i, CK=>RdClock, CD=>scuba_vlo, + Q=>rptr_14_ff); + + FF_136: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rptr_15, SP=>rden_i, CK=>RdClock, CD=>scuba_vlo, + Q=>rptr_15_ff); + + FF_135: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_0, CK=>RdClock, CD=>Reset, Q=>w_gcount_r0); + + FF_134: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_1, CK=>RdClock, CD=>Reset, Q=>w_gcount_r1); + + FF_133: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_2, CK=>RdClock, CD=>Reset, Q=>w_gcount_r2); + + FF_132: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_3, CK=>RdClock, CD=>Reset, Q=>w_gcount_r3); + + FF_131: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_4, CK=>RdClock, CD=>Reset, Q=>w_gcount_r4); + + FF_130: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_5, CK=>RdClock, CD=>Reset, Q=>w_gcount_r5); + + FF_129: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_6, CK=>RdClock, CD=>Reset, Q=>w_gcount_r6); + + FF_128: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_7, CK=>RdClock, CD=>Reset, Q=>w_gcount_r7); + + FF_127: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_8, CK=>RdClock, CD=>Reset, Q=>w_gcount_r8); + + FF_126: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_9, CK=>RdClock, CD=>Reset, Q=>w_gcount_r9); + + FF_125: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r10); + + FF_124: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r11); + + FF_123: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r12); + + FF_122: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_13, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r13); + + FF_121: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_14, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r14); + + FF_120: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_15, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r15); + + FF_119: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w0); + + FF_118: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w1); + + FF_117: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w2); + + FF_116: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w3); + + FF_115: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w4); + + FF_114: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w5); + + FF_113: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w6); + + FF_112: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w7); + + FF_111: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w8); + + FF_110: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w9); + + FF_109: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_10, CK=>WrClock, CD=>rRst, Q=>r_gcount_w10); + + FF_108: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_11, CK=>WrClock, CD=>rRst, Q=>r_gcount_w11); + + FF_107: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_12, CK=>WrClock, CD=>rRst, Q=>r_gcount_w12); + + FF_106: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_13, CK=>WrClock, CD=>rRst, Q=>r_gcount_w13); + + FF_105: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_14, CK=>WrClock, CD=>rRst, Q=>r_gcount_w14); + + FF_104: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_15, CK=>WrClock, CD=>rRst, Q=>r_gcount_w15); + + FF_103: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_16, CK=>WrClock, CD=>rRst, Q=>r_gcount_w16); + + FF_102: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r0, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r20); + + FF_101: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r1, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r21); + + FF_100: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r2, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r22); + + FF_99: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r3, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r23); + + FF_98: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r4, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r24); + + FF_97: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r5, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r25); + + FF_96: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r6, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r26); + + FF_95: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r7, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r27); + + FF_94: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r8, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r28); + + FF_93: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r9, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r29); + + FF_92: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r210); + + FF_91: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r211); + + FF_90: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r212); + + FF_89: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r13, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r213); + + FF_88: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r14, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r214); + + FF_87: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r15, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r215); + + FF_86: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w20); + + FF_85: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w21); + + FF_84: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w22); + + FF_83: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w23); + + FF_82: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w24); + + FF_81: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w25); + + FF_80: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w26); + + FF_79: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); + + FF_78: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w28); + + FF_77: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w29); + + FF_76: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w10, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w210); + + FF_75: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w11, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w211); + + FF_74: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w12, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w212); + + FF_73: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w13, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w213); + + FF_72: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w14, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w214); + + FF_71: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w15, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w215); + + FF_70: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w16, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w216); + + FF_69: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_0, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_0); + + FF_68: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_1, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_1); + + FF_67: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_2, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_2); + + FF_66: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_3, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_3); + + FF_65: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_4, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_4); + + FF_64: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_5, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_5); + + FF_63: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_6, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_6); + + FF_62: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_7, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_7); + + FF_61: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_8, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_8); + + FF_60: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_9, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_9); + + FF_59: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_10, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_10); + + FF_58: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_11, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_11); + + FF_57: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_12, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_12); + + FF_56: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_13, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_13); + + FF_55: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_14, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_14); + + FF_54: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcnt_sub_15, CK=>WrClock, CD=>Reset, Q=>wcnt_reg_15); + + FF_53: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_0, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_0); + + FF_52: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_1, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_1); + + FF_51: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_2, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_2); + + FF_50: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_3, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_3); + + FF_49: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_4, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_4); + + FF_48: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_5, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_5); + + FF_47: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_6, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_6); + + FF_46: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_7, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_7); + + FF_45: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_8, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_8); + + FF_44: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_9, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_9); + + FF_43: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_10, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_10); + + FF_42: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_11, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_11); + + FF_41: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_12, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_12); + + FF_40: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_13, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_13); + + FF_39: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_14, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_14); + + FF_38: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_15, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_15); + + FF_37: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcnt_sub_16, CK=>RdClock, CD=>rRst, Q=>rcnt_reg_16); + + FF_36: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_0, CK=>WrClock, CD=>Reset, Q=>WCNT(0)); + + FF_35: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_1, CK=>WrClock, CD=>Reset, Q=>WCNT(1)); + + FF_34: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_2, CK=>WrClock, CD=>Reset, Q=>WCNT(2)); + + FF_33: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_3, CK=>WrClock, CD=>Reset, Q=>WCNT(3)); + + FF_32: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_4, CK=>WrClock, CD=>Reset, Q=>WCNT(4)); + + FF_31: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_5, CK=>WrClock, CD=>Reset, Q=>WCNT(5)); + + FF_30: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_6, CK=>WrClock, CD=>Reset, Q=>WCNT(6)); + + FF_29: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_7, CK=>WrClock, CD=>Reset, Q=>WCNT(7)); + + FF_28: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_8, CK=>WrClock, CD=>Reset, Q=>WCNT(8)); + + FF_27: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_9, CK=>WrClock, CD=>Reset, Q=>WCNT(9)); + + FF_26: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_10, CK=>WrClock, CD=>Reset, Q=>WCNT(10)); + + FF_25: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_11, CK=>WrClock, CD=>Reset, Q=>WCNT(11)); + + FF_24: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_12, CK=>WrClock, CD=>Reset, Q=>WCNT(12)); + + FF_23: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_13, CK=>WrClock, CD=>Reset, Q=>WCNT(13)); + + FF_22: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_14, CK=>WrClock, CD=>Reset, Q=>WCNT(14)); + + FF_21: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wfill_sub_15, CK=>WrClock, CD=>Reset, Q=>WCNT(15)); + + FF_20: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_0, CK=>RdClock, CD=>rRst, Q=>RCNT(0)); + + FF_19: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_1, CK=>RdClock, CD=>rRst, Q=>RCNT(1)); + + FF_18: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_2, CK=>RdClock, CD=>rRst, Q=>RCNT(2)); + + FF_17: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_3, CK=>RdClock, CD=>rRst, Q=>RCNT(3)); + + FF_16: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_4, CK=>RdClock, CD=>rRst, Q=>RCNT(4)); + + FF_15: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_5, CK=>RdClock, CD=>rRst, Q=>RCNT(5)); + + FF_14: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_6, CK=>RdClock, CD=>rRst, Q=>RCNT(6)); + + FF_13: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_7, CK=>RdClock, CD=>rRst, Q=>RCNT(7)); + + FF_12: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_8, CK=>RdClock, CD=>rRst, Q=>RCNT(8)); + + FF_11: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_9, CK=>RdClock, CD=>rRst, Q=>RCNT(9)); + + FF_10: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_10, CK=>RdClock, CD=>rRst, Q=>RCNT(10)); + + FF_9: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_11, CK=>RdClock, CD=>rRst, Q=>RCNT(11)); + + FF_8: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_12, CK=>RdClock, CD=>rRst, Q=>RCNT(12)); + + FF_7: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_13, CK=>RdClock, CD=>rRst, Q=>RCNT(13)); + + FF_6: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_14, CK=>RdClock, CD=>rRst, Q=>RCNT(14)); + + FF_5: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_15, CK=>RdClock, CD=>rRst, Q=>RCNT(15)); + + FF_4: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rfill_sub_16, CK=>RdClock, CD=>rRst, Q=>RCNT(16)); + + FF_3: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); + + FF_2: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); + + FF_1: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ae_d, CK=>RdClock, PD=>rRst, Q=>AlmostEmpty); + + FF_0: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>af_d, CK=>WrClock, CD=>Reset, Q=>AlmostFull); + + w_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>w_gctr_ci, S0=>open, + S1=>open); + + w_gctr_0: CU2 + port map (CI=>w_gctr_ci, PC0=>wcount_0, PC1=>wcount_1, CO=>co0, + NC0=>iwcount_0, NC1=>iwcount_1); + + w_gctr_1: CU2 + port map (CI=>co0, PC0=>wcount_2, PC1=>wcount_3, CO=>co1, + NC0=>iwcount_2, NC1=>iwcount_3); + + w_gctr_2: CU2 + port map (CI=>co1, PC0=>wcount_4, PC1=>wcount_5, CO=>co2, + NC0=>iwcount_4, NC1=>iwcount_5); + + w_gctr_3: CU2 + port map (CI=>co2, PC0=>wcount_6, PC1=>wcount_7, CO=>co3, + NC0=>iwcount_6, NC1=>iwcount_7); + + w_gctr_4: CU2 + port map (CI=>co3, PC0=>wcount_8, PC1=>wcount_9, CO=>co4, + NC0=>iwcount_8, NC1=>iwcount_9); + + w_gctr_5: CU2 + port map (CI=>co4, PC0=>wcount_10, PC1=>wcount_11, CO=>co5, + NC0=>iwcount_10, NC1=>iwcount_11); + + w_gctr_6: CU2 + port map (CI=>co5, PC0=>wcount_12, PC1=>wcount_13, CO=>co6, + NC0=>iwcount_12, NC1=>iwcount_13); + + w_gctr_7: CU2 + port map (CI=>co6, PC0=>wcount_14, PC1=>wcount_15, CO=>co7, + NC0=>iwcount_14, NC1=>iwcount_15); + + r_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>r_gctr_ci, S0=>open, + S1=>open); + + r_gctr_0: CU2 + port map (CI=>r_gctr_ci, PC0=>rcount_0, PC1=>rcount_1, CO=>co0_1, + NC0=>ircount_0, NC1=>ircount_1); + + r_gctr_1: CU2 + port map (CI=>co0_1, PC0=>rcount_2, PC1=>rcount_3, CO=>co1_1, + NC0=>ircount_2, NC1=>ircount_3); + + r_gctr_2: CU2 + port map (CI=>co1_1, PC0=>rcount_4, PC1=>rcount_5, CO=>co2_1, + NC0=>ircount_4, NC1=>ircount_5); + + r_gctr_3: CU2 + port map (CI=>co2_1, PC0=>rcount_6, PC1=>rcount_7, CO=>co3_1, + NC0=>ircount_6, NC1=>ircount_7); + + r_gctr_4: CU2 + port map (CI=>co3_1, PC0=>rcount_8, PC1=>rcount_9, CO=>co4_1, + NC0=>ircount_8, NC1=>ircount_9); + + r_gctr_5: CU2 + port map (CI=>co4_1, PC0=>rcount_10, PC1=>rcount_11, CO=>co5_1, + NC0=>ircount_10, NC1=>ircount_11); + + r_gctr_6: CU2 + port map (CI=>co5_1, PC0=>rcount_12, PC1=>rcount_13, CO=>co6_1, + NC0=>ircount_12, NC1=>ircount_13); + + r_gctr_7: CU2 + port map (CI=>co6_1, PC0=>rcount_14, PC1=>rcount_15, CO=>co7_1, + NC0=>ircount_14, NC1=>ircount_15); + + r_gctr_8: CU2 + port map (CI=>co7_1, PC0=>rcount_16, PC1=>scuba_vlo, CO=>co8, + NC0=>ircount_16, NC1=>open); + + mux_7: MUX41 + port map (D0=>mdout1_0_0, D1=>mdout1_1_0, D2=>mdout1_2_0, + D3=>mdout1_3_0, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(0)); + + mux_6: MUX41 + port map (D0=>mdout1_0_1, D1=>mdout1_1_1, D2=>mdout1_2_1, + D3=>mdout1_3_1, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(1)); + + mux_5: MUX41 + port map (D0=>mdout1_0_2, D1=>mdout1_1_2, D2=>mdout1_2_2, + D3=>mdout1_3_2, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(2)); + + mux_4: MUX41 + port map (D0=>mdout1_0_3, D1=>mdout1_1_3, D2=>mdout1_2_3, + D3=>mdout1_3_3, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(3)); + + mux_3: MUX41 + port map (D0=>mdout1_0_4, D1=>mdout1_1_4, D2=>mdout1_2_4, + D3=>mdout1_3_4, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(4)); + + mux_2: MUX41 + port map (D0=>mdout1_0_5, D1=>mdout1_1_5, D2=>mdout1_2_5, + D3=>mdout1_3_5, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(5)); + + mux_1: MUX41 + port map (D0=>mdout1_0_6, D1=>mdout1_1_6, D2=>mdout1_2_6, + D3=>mdout1_3_6, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(6)); + + mux_0: MUX41 + port map (D0=>mdout1_0_7, D1=>mdout1_1_7, D2=>mdout1_2_7, + D3=>mdout1_3_7, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(7)); + + wcnt_0: FSUB2B + port map (A0=>scuba_vhi, A1=>wcount_0, B0=>scuba_vlo, + B1=>rcount_w1, BI=>scuba_vlo, BOUT=>co0_2, S0=>open, + S1=>wcnt_sub_0); + + wcnt_1: FSUB2B + port map (A0=>wcount_1, A1=>wcount_2, B0=>rcount_w2, + B1=>rcount_w3, BI=>co0_2, BOUT=>co1_2, S0=>wcnt_sub_1, + S1=>wcnt_sub_2); + + wcnt_2: FSUB2B + port map (A0=>wcount_3, A1=>wcount_4, B0=>rcount_w4, + B1=>rcount_w5, BI=>co1_2, BOUT=>co2_2, S0=>wcnt_sub_3, + S1=>wcnt_sub_4); + + wcnt_3: FSUB2B + port map (A0=>wcount_5, A1=>wcount_6, B0=>rcount_w6, + B1=>rcount_w7, BI=>co2_2, BOUT=>co3_2, S0=>wcnt_sub_5, + S1=>wcnt_sub_6); + + wcnt_4: FSUB2B + port map (A0=>wcount_7, A1=>wcount_8, B0=>rcount_w8, + B1=>rcount_w9, BI=>co3_2, BOUT=>co4_2, S0=>wcnt_sub_7, + S1=>wcnt_sub_8); + + wcnt_5: FSUB2B + port map (A0=>wcount_9, A1=>wcount_10, B0=>rcount_w10, + B1=>rcount_w11, BI=>co4_2, BOUT=>co5_2, S0=>wcnt_sub_9, + S1=>wcnt_sub_10); + + wcnt_6: FSUB2B + port map (A0=>wcount_11, A1=>wcount_12, B0=>rcount_w12, + B1=>r_g2b_xor_cluster_0, BI=>co5_2, BOUT=>co6_2, + S0=>wcnt_sub_11, S1=>wcnt_sub_12); + + wcnt_7: FSUB2B + port map (A0=>wcount_13, A1=>wcount_14, B0=>rcount_w14, + B1=>rcount_w15, BI=>co6_2, BOUT=>co7_2, S0=>wcnt_sub_13, + S1=>wcnt_sub_14); + + wcnt_8: FSUB2B + port map (A0=>wcnt_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, BI=>co7_2, BOUT=>open, S0=>wcnt_sub_15, + S1=>open); + + rcnt_0: FSUB2B + port map (A0=>scuba_vhi, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>rcount_0, BI=>scuba_vlo, BOUT=>co0_3, S0=>open, + S1=>rcnt_sub_0); + + rcnt_1: FSUB2B + port map (A0=>wcount_r0, A1=>wcount_r1, B0=>rcount_1, + B1=>rcount_2, BI=>co0_3, BOUT=>co1_3, S0=>rcnt_sub_1, + S1=>rcnt_sub_2); + + rcnt_2: FSUB2B + port map (A0=>wcount_r2, A1=>wcount_r3, B0=>rcount_3, + B1=>rcount_4, BI=>co1_3, BOUT=>co2_3, S0=>rcnt_sub_3, + S1=>rcnt_sub_4); + + rcnt_3: FSUB2B + port map (A0=>wcount_r4, A1=>wcount_r5, B0=>rcount_5, + B1=>rcount_6, BI=>co2_3, BOUT=>co3_3, S0=>rcnt_sub_5, + S1=>rcnt_sub_6); + + rcnt_4: FSUB2B + port map (A0=>wcount_r6, A1=>wcount_r7, B0=>rcount_7, + B1=>rcount_8, BI=>co3_3, BOUT=>co4_3, S0=>rcnt_sub_7, + S1=>rcnt_sub_8); + + rcnt_5: FSUB2B + port map (A0=>wcount_r8, A1=>wcount_r9, B0=>rcount_9, + B1=>rcount_10, BI=>co4_3, BOUT=>co5_3, S0=>rcnt_sub_9, + S1=>rcnt_sub_10); + + rcnt_6: FSUB2B + port map (A0=>wcount_r10, A1=>wcount_r11, B0=>rcount_11, + B1=>rcount_12, BI=>co5_3, BOUT=>co6_3, S0=>rcnt_sub_11, + S1=>rcnt_sub_12); + + rcnt_7: FSUB2B + port map (A0=>w_g2b_xor_cluster_0, A1=>wcount_r13, B0=>rcount_13, + B1=>rcount_14, BI=>co6_3, BOUT=>co7_3, S0=>rcnt_sub_13, + S1=>rcnt_sub_14); + + rcnt_8: FSUB2B + port map (A0=>wcount_r14, A1=>rcnt_sub_msb, B0=>rcount_15, + B1=>scuba_vlo, BI=>co7_3, BOUT=>co8_1, S0=>rcnt_sub_15, + S1=>rcnt_sub_16); + + rcntd: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>co8_1, COUT=>open, S0=>co8_1d, S1=>open); + + wfill_0: FSUB2B + port map (A0=>scuba_vhi, A1=>wptr_0, B0=>scuba_vlo, + B1=>rcount_w1, BI=>scuba_vlo, BOUT=>co0_4, S0=>open, + S1=>wfill_sub_0); + + wfill_1: FSUB2B + port map (A0=>wptr_1, A1=>wptr_2, B0=>rcount_w2, B1=>rcount_w3, + BI=>co0_4, BOUT=>co1_4, S0=>wfill_sub_1, S1=>wfill_sub_2); + + wfill_2: FSUB2B + port map (A0=>wptr_3, A1=>wptr_4, B0=>rcount_w4, B1=>rcount_w5, + BI=>co1_4, BOUT=>co2_4, S0=>wfill_sub_3, S1=>wfill_sub_4); + + wfill_3: FSUB2B + port map (A0=>wptr_5, A1=>wptr_6, B0=>rcount_w6, B1=>rcount_w7, + BI=>co2_4, BOUT=>co3_4, S0=>wfill_sub_5, S1=>wfill_sub_6); + + wfill_4: FSUB2B + port map (A0=>wptr_7, A1=>wptr_8, B0=>rcount_w8, B1=>rcount_w9, + BI=>co3_4, BOUT=>co4_4, S0=>wfill_sub_7, S1=>wfill_sub_8); + + wfill_5: FSUB2B + port map (A0=>wptr_9, A1=>wptr_10, B0=>rcount_w10, + B1=>rcount_w11, BI=>co4_4, BOUT=>co5_4, S0=>wfill_sub_9, + S1=>wfill_sub_10); + + wfill_6: FSUB2B + port map (A0=>wptr_11, A1=>wptr_12, B0=>rcount_w12, + B1=>r_g2b_xor_cluster_0, BI=>co5_4, BOUT=>co6_4, + S0=>wfill_sub_11, S1=>wfill_sub_12); + + wfill_7: FSUB2B + port map (A0=>wptr_13, A1=>wptr_14, B0=>rcount_w14, + B1=>rcount_w15, BI=>co6_4, BOUT=>co7_4, S0=>wfill_sub_13, + S1=>wfill_sub_14); + + wfill_8: FSUB2B + port map (A0=>wfill_sub_msb, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, BI=>co7_4, BOUT=>open, S0=>wfill_sub_15, + S1=>open); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + rfill_0: FSUB2B + port map (A0=>scuba_vhi, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>rptr_0, BI=>scuba_vlo, BOUT=>co0_5, S0=>open, + S1=>rfill_sub_0); + + rfill_1: FSUB2B + port map (A0=>wcount_r0, A1=>wcount_r1, B0=>rptr_1, B1=>rptr_2, + BI=>co0_5, BOUT=>co1_5, S0=>rfill_sub_1, S1=>rfill_sub_2); + + rfill_2: FSUB2B + port map (A0=>wcount_r2, A1=>wcount_r3, B0=>rptr_3, B1=>rptr_4, + BI=>co1_5, BOUT=>co2_5, S0=>rfill_sub_3, S1=>rfill_sub_4); + + rfill_3: FSUB2B + port map (A0=>wcount_r4, A1=>wcount_r5, B0=>rptr_5, B1=>rptr_6, + BI=>co2_5, BOUT=>co3_5, S0=>rfill_sub_5, S1=>rfill_sub_6); + + rfill_4: FSUB2B + port map (A0=>wcount_r6, A1=>wcount_r7, B0=>rptr_7, B1=>rptr_8, + BI=>co3_5, BOUT=>co4_5, S0=>rfill_sub_7, S1=>rfill_sub_8); + + rfill_5: FSUB2B + port map (A0=>wcount_r8, A1=>wcount_r9, B0=>rptr_9, B1=>rptr_10, + BI=>co4_5, BOUT=>co5_5, S0=>rfill_sub_9, S1=>rfill_sub_10); + + rfill_6: FSUB2B + port map (A0=>wcount_r10, A1=>wcount_r11, B0=>rptr_11, + B1=>rptr_12, BI=>co5_5, BOUT=>co6_5, S0=>rfill_sub_11, + S1=>rfill_sub_12); + + rfill_7: FSUB2B + port map (A0=>w_g2b_xor_cluster_0, A1=>wcount_r13, B0=>rptr_13, + B1=>rptr_14, BI=>co6_5, BOUT=>co7_5, S0=>rfill_sub_13, + S1=>rfill_sub_14); + + rfill_8: FSUB2B + port map (A0=>wcount_r14, A1=>rfill_sub_msb, B0=>rptr_15, + B1=>scuba_vlo, BI=>co7_5, BOUT=>co8_2, S0=>rfill_sub_15, + S1=>rfill_sub_16); + + rfilld: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>co8_2, COUT=>open, S0=>co8_2d, S1=>open); + + empty_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci, S0=>open, S1=>open); + + empty_cmp_0: AGEB2 + port map (A0=>rcount_0, A1=>rcount_1, B0=>scuba_vlo, + B1=>wcount_r0, CI=>cmp_ci, GE=>co0_6); + + empty_cmp_1: AGEB2 + port map (A0=>rcount_2, A1=>rcount_3, B0=>wcount_r1, + B1=>wcount_r2, CI=>co0_6, GE=>co1_6); + + empty_cmp_2: AGEB2 + port map (A0=>rcount_4, A1=>rcount_5, B0=>wcount_r3, + B1=>wcount_r4, CI=>co1_6, GE=>co2_6); + + empty_cmp_3: AGEB2 + port map (A0=>rcount_6, A1=>rcount_7, B0=>wcount_r5, + B1=>wcount_r6, CI=>co2_6, GE=>co3_6); + + empty_cmp_4: AGEB2 + port map (A0=>rcount_8, A1=>rcount_9, B0=>wcount_r7, + B1=>wcount_r8, CI=>co3_6, GE=>co4_6); + + empty_cmp_5: AGEB2 + port map (A0=>rcount_10, A1=>rcount_11, B0=>wcount_r9, + B1=>wcount_r10, CI=>co4_6, GE=>co5_6); + + empty_cmp_6: AGEB2 + port map (A0=>rcount_12, A1=>rcount_13, B0=>wcount_r11, + B1=>w_g2b_xor_cluster_0, CI=>co5_6, GE=>co6_6); + + empty_cmp_7: AGEB2 + port map (A0=>rcount_14, A1=>rcount_15, B0=>wcount_r13, + B1=>wcount_r14, CI=>co6_6, GE=>co7_6); + + empty_cmp_8: AGEB2 + port map (A0=>empty_cmp_set, A1=>scuba_vlo, B0=>empty_cmp_clr, + B1=>scuba_vlo, CI=>co7_6, GE=>empty_d_c); + + a0: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>empty_d_c, COUT=>open, S0=>empty_d, + S1=>open); + + full_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_1, S0=>open, S1=>open); + + full_cmp_0: AGEB2 + port map (A0=>wcount_0, A1=>wcount_1, B0=>rcount_w1, + B1=>rcount_w2, CI=>cmp_ci_1, GE=>co0_7); + + full_cmp_1: AGEB2 + port map (A0=>wcount_2, A1=>wcount_3, B0=>rcount_w3, + B1=>rcount_w4, CI=>co0_7, GE=>co1_7); + + full_cmp_2: AGEB2 + port map (A0=>wcount_4, A1=>wcount_5, B0=>rcount_w5, + B1=>rcount_w6, CI=>co1_7, GE=>co2_7); + + full_cmp_3: AGEB2 + port map (A0=>wcount_6, A1=>wcount_7, B0=>rcount_w7, + B1=>rcount_w8, CI=>co2_7, GE=>co3_7); + + full_cmp_4: AGEB2 + port map (A0=>wcount_8, A1=>wcount_9, B0=>rcount_w9, + B1=>rcount_w10, CI=>co3_7, GE=>co4_7); + + full_cmp_5: AGEB2 + port map (A0=>wcount_10, A1=>wcount_11, B0=>rcount_w11, + B1=>rcount_w12, CI=>co4_7, GE=>co5_7); + + full_cmp_6: AGEB2 + port map (A0=>wcount_12, A1=>wcount_13, B0=>r_g2b_xor_cluster_0, + B1=>rcount_w14, CI=>co5_7, GE=>co6_7); + + full_cmp_7: AGEB2 + port map (A0=>wcount_14, A1=>full_cmp_set, B0=>rcount_w15, + B1=>full_cmp_clr, CI=>co6_7, GE=>full_d_c); + + a1: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, + S1=>open); + + ae_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci_2, S0=>open, S1=>open); + + ae_cmp_0: AGEB2 + port map (A0=>AmEmptyThresh(0), A1=>AmEmptyThresh(1), + B0=>rcnt_reg_0, B1=>rcnt_reg_1, CI=>cmp_ci_2, GE=>co0_8); + + ae_cmp_1: AGEB2 + port map (A0=>AmEmptyThresh(2), A1=>AmEmptyThresh(3), + B0=>rcnt_reg_2, B1=>rcnt_reg_3, CI=>co0_8, GE=>co1_8); + + ae_cmp_2: AGEB2 + port map (A0=>AmEmptyThresh(4), A1=>AmEmptyThresh(5), + B0=>rcnt_reg_4, B1=>rcnt_reg_5, CI=>co1_8, GE=>co2_8); + + ae_cmp_3: AGEB2 + port map (A0=>AmEmptyThresh(6), A1=>AmEmptyThresh(7), + B0=>rcnt_reg_6, B1=>rcnt_reg_7, CI=>co2_8, GE=>co3_8); + + ae_cmp_4: AGEB2 + port map (A0=>AmEmptyThresh(8), A1=>AmEmptyThresh(9), + B0=>rcnt_reg_8, B1=>rcnt_reg_9, CI=>co3_8, GE=>co4_8); + + ae_cmp_5: AGEB2 + port map (A0=>AmEmptyThresh(10), A1=>AmEmptyThresh(11), + B0=>rcnt_reg_10, B1=>rcnt_reg_11, CI=>co4_8, GE=>co5_8); + + ae_cmp_6: AGEB2 + port map (A0=>AmEmptyThresh(12), A1=>AmEmptyThresh(13), + B0=>rcnt_reg_12, B1=>rcnt_reg_13, CI=>co5_8, GE=>co6_8); + + ae_cmp_7: AGEB2 + port map (A0=>AmEmptyThresh(14), A1=>AmEmptyThresh(15), + B0=>rcnt_reg_14, B1=>rcnt_reg_15, CI=>co6_8, GE=>co7_7); + + ae_cmp_8: AGEB2 + port map (A0=>ae_setsig, A1=>scuba_vlo, B0=>ae_clrsig, + B1=>scuba_vlo, CI=>co7_7, GE=>ae_d_c); + + a2: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>ae_d_c, COUT=>open, S0=>ae_d, S1=>open); + + af_d_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_3, S0=>open, S1=>open); + + af_d_cmp_0: AGEB2 + port map (A0=>wcnt_reg_0, A1=>wcnt_reg_1, B0=>AmFullThresh(0), + B1=>AmFullThresh(1), CI=>cmp_ci_3, GE=>co0_9); + + af_d_cmp_1: AGEB2 + port map (A0=>wcnt_reg_2, A1=>wcnt_reg_3, B0=>AmFullThresh(2), + B1=>AmFullThresh(3), CI=>co0_9, GE=>co1_9); + + af_d_cmp_2: AGEB2 + port map (A0=>wcnt_reg_4, A1=>wcnt_reg_5, B0=>AmFullThresh(4), + B1=>AmFullThresh(5), CI=>co1_9, GE=>co2_9); + + af_d_cmp_3: AGEB2 + port map (A0=>wcnt_reg_6, A1=>wcnt_reg_7, B0=>AmFullThresh(6), + B1=>AmFullThresh(7), CI=>co2_9, GE=>co3_9); + + af_d_cmp_4: AGEB2 + port map (A0=>wcnt_reg_8, A1=>wcnt_reg_9, B0=>AmFullThresh(8), + B1=>AmFullThresh(9), CI=>co3_9, GE=>co4_9); + + af_d_cmp_5: AGEB2 + port map (A0=>wcnt_reg_10, A1=>wcnt_reg_11, B0=>AmFullThresh(10), + B1=>AmFullThresh(11), CI=>co4_9, GE=>co5_9); + + af_d_cmp_6: AGEB2 + port map (A0=>wcnt_reg_12, A1=>wcnt_reg_13, B0=>AmFullThresh(12), + B1=>AmFullThresh(13), CI=>co5_9, GE=>co6_9); + + af_d_cmp_7: AGEB2 + port map (A0=>wcnt_reg_14, A1=>wcnt_reg_15, B0=>AmFullThresh(14), + B1=>scuba_vlo, CI=>co6_9, GE=>af_d_c); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + a3: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>af_d_c, COUT=>open, S0=>af_d, S1=>open); + + Empty <= empty_i; + Full <= full_i; +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of fifo_32kx16x8_mb is + for Structure + for all:AGEB2 use entity ecp2m.AGEB2(V); end for; + for all:AND2 use entity ecp2m.AND2(V); end for; + for all:CU2 use entity ecp2m.CU2(V); end for; + for all:FADD2B use entity ecp2m.FADD2B(V); end for; + for all:FSUB2B use entity ecp2m.FSUB2B(V); end for; + for all:FD1P3BX use entity ecp2m.FD1P3BX(V); end for; + for all:FD1P3DX use entity ecp2m.FD1P3DX(V); end for; + for all:FD1S3BX use entity ecp2m.FD1S3BX(V); end for; + for all:FD1S3DX use entity ecp2m.FD1S3DX(V); end for; + for all:INV use entity ecp2m.INV(V); end for; + for all:MUX41 use entity ecp2m.MUX41(V); end for; + for all:OR2 use entity ecp2m.OR2(V); end for; + for all:ROM16X1 use entity ecp2m.ROM16X1(V); end for; + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:XOR2 use entity ecp2m.XOR2(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/fifo_32kx16x8_mb_tmpl.vhd b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb_tmpl.vhd new file mode 100755 index 0000000..bc2e00d --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_32kx16x8_mb_tmpl.vhd @@ -0,0 +1,26 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v8.0_PROD_Build (41) +-- Module Version: 5.3 +-- Fri Feb 05 16:48:13 2010 + +-- parameterized module component declaration +component fifo_32kx16x8_mb + port (Data: in std_logic_vector(15 downto 0); + WrClock: in std_logic; RdClock: in std_logic; + WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; + RPReset: in std_logic; + AmEmptyThresh: in std_logic_vector(15 downto 0); + AmFullThresh: in std_logic_vector(14 downto 0); + Q: out std_logic_vector(7 downto 0); + WCNT: out std_logic_vector(15 downto 0); + RCNT: out std_logic_vector(16 downto 0); Empty: out std_logic; + Full: out std_logic; AlmostEmpty: out std_logic; + AlmostFull: out std_logic); +end component; + +-- parameterized module component instance +__ : fifo_32kx16x8_mb + port map (Data(15 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, + RdEn=>__, Reset=>__, RPReset=>__, AmEmptyThresh(15 downto 0)=>__, + AmFullThresh(14 downto 0)=>__, Q(7 downto 0)=>__, WCNT(15 downto 0)=>__, + RCNT(16 downto 0)=>__, Empty=>__, Full=>__, AlmostEmpty=>__, + AlmostFull=>__); diff --git a/gbe_ecp2m/ipcores/fifo_4096x32.lpc b/gbe_ecp2m/ipcores/fifo_4096x32.lpc new file mode 100755 index 0000000..3f5196b --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x32.lpc @@ -0,0 +1,47 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=FIFO_DC +CoreRevision=5.3 +ModuleName=fifo_4096x32 +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=12/18/2009 +Time=03:02:30 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +FIFOImp=EBR Based +Depth=4096 +Width=32 +RDepth=4096 +RWidth=32 +regout=0 +CtrlByRdEn=0 +EmpFlg=0 +PeMode=Static - Dual Threshold +PeAssert=10 +PeDeassert=12 +FullFlg=0 +PfMode=Static - Dual Threshold +PfAssert=508 +PfDeassert=506 +RDataCount=0 +WDataCount=0 +EnECC=0 diff --git a/gbe_ecp2m/ipcores/fifo_4096x32.vhd b/gbe_ecp2m/ipcores/fifo_4096x32.vhd new file mode 100755 index 0000000..51a2cd4 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x32.vhd @@ -0,0 +1,2415 @@ +-- VHDL netlist generated by SCUBA ispLever_v8.0_PROD_Build (41) +-- Module Version: 5.3 +--/opt/lattice/ispLEVER8.0/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type ebfifo -depth 4096 -width 32 -depth 4096 -rdata_width 32 -no_enable -pe -1 -pf -1 -e + +-- Fri Dec 18 03:02:30 2009 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity fifo_4096x32 is + port ( + Data: in std_logic_vector(31 downto 0); + WrClock: in std_logic; + RdClock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + RPReset: in std_logic; + Q: out std_logic_vector(31 downto 0); + Empty: out std_logic; + Full: out std_logic); +end fifo_4096x32; + +architecture Structure of fifo_4096x32 is + + -- internal signal declarations + signal invout_1: std_logic; + signal invout_0: std_logic; + signal w_g2b_xor_cluster_2_1: std_logic; + signal w_g2b_xor_cluster_2: std_logic; + signal w_g2b_xor_cluster_1: std_logic; + signal r_g2b_xor_cluster_2_1: std_logic; + signal r_g2b_xor_cluster_2: std_logic; + signal r_g2b_xor_cluster_1: std_logic; + signal w_gdata_0: std_logic; + signal w_gdata_1: std_logic; + signal w_gdata_2: std_logic; + signal w_gdata_3: std_logic; + signal w_gdata_4: std_logic; + signal w_gdata_5: std_logic; + signal w_gdata_6: std_logic; + signal w_gdata_7: std_logic; + signal w_gdata_8: std_logic; + signal w_gdata_9: std_logic; + signal w_gdata_10: std_logic; + signal w_gdata_11: std_logic; + signal wptr_0: std_logic; + signal wptr_1: std_logic; + signal wptr_2: std_logic; + signal wptr_3: std_logic; + signal wptr_4: std_logic; + signal wptr_5: std_logic; + signal wptr_6: std_logic; + signal wptr_7: std_logic; + signal wptr_8: std_logic; + signal wptr_9: std_logic; + signal wptr_10: std_logic; + signal wptr_11: std_logic; + signal wptr_12: std_logic; + signal r_gdata_0: std_logic; + signal r_gdata_1: std_logic; + signal r_gdata_2: std_logic; + signal r_gdata_3: std_logic; + signal r_gdata_4: std_logic; + signal r_gdata_5: std_logic; + signal r_gdata_6: std_logic; + signal r_gdata_7: std_logic; + signal r_gdata_8: std_logic; + signal r_gdata_9: std_logic; + signal r_gdata_10: std_logic; + signal r_gdata_11: std_logic; + signal rptr_0: std_logic; + signal rptr_1: std_logic; + signal rptr_2: std_logic; + signal rptr_3: std_logic; + signal rptr_4: std_logic; + signal rptr_5: std_logic; + signal rptr_6: std_logic; + signal rptr_7: std_logic; + signal rptr_8: std_logic; + signal rptr_9: std_logic; + signal rptr_10: std_logic; + signal rptr_11: std_logic; + signal rptr_12: std_logic; + signal w_gcount_0: std_logic; + signal w_gcount_1: std_logic; + signal w_gcount_2: std_logic; + signal w_gcount_3: std_logic; + signal w_gcount_4: std_logic; + signal w_gcount_5: std_logic; + signal w_gcount_6: std_logic; + signal w_gcount_7: std_logic; + signal w_gcount_8: std_logic; + signal w_gcount_9: std_logic; + signal w_gcount_10: std_logic; + signal w_gcount_11: std_logic; + signal w_gcount_12: std_logic; + signal r_gcount_0: std_logic; + signal r_gcount_1: std_logic; + signal r_gcount_2: std_logic; + signal r_gcount_3: std_logic; + signal r_gcount_4: std_logic; + signal r_gcount_5: std_logic; + signal r_gcount_6: std_logic; + signal r_gcount_7: std_logic; + signal r_gcount_8: std_logic; + signal r_gcount_9: std_logic; + signal r_gcount_10: std_logic; + signal r_gcount_11: std_logic; + signal r_gcount_12: std_logic; + signal w_gcount_r20: std_logic; + signal w_gcount_r0: std_logic; + signal w_gcount_r21: std_logic; + signal w_gcount_r1: std_logic; + signal w_gcount_r22: std_logic; + signal w_gcount_r2: std_logic; + signal w_gcount_r23: std_logic; + signal w_gcount_r3: std_logic; + signal w_gcount_r24: std_logic; + signal w_gcount_r4: std_logic; + signal w_gcount_r25: std_logic; + signal w_gcount_r5: std_logic; + signal w_gcount_r26: std_logic; + signal w_gcount_r6: std_logic; + signal w_gcount_r27: std_logic; + signal w_gcount_r7: std_logic; + signal w_gcount_r28: std_logic; + signal w_gcount_r8: std_logic; + signal w_gcount_r29: std_logic; + signal w_gcount_r9: std_logic; + signal w_gcount_r210: std_logic; + signal w_gcount_r10: std_logic; + signal w_gcount_r211: std_logic; + signal w_gcount_r11: std_logic; + signal w_gcount_r212: std_logic; + signal w_gcount_r12: std_logic; + signal r_gcount_w20: std_logic; + signal r_gcount_w0: std_logic; + signal r_gcount_w21: std_logic; + signal r_gcount_w1: std_logic; + signal r_gcount_w22: std_logic; + signal r_gcount_w2: std_logic; + signal r_gcount_w23: std_logic; + signal r_gcount_w3: std_logic; + signal r_gcount_w24: std_logic; + signal r_gcount_w4: std_logic; + signal r_gcount_w25: std_logic; + signal r_gcount_w5: std_logic; + signal r_gcount_w26: std_logic; + signal r_gcount_w6: std_logic; + signal r_gcount_w27: std_logic; + signal r_gcount_w7: std_logic; + signal r_gcount_w28: std_logic; + signal r_gcount_w8: std_logic; + signal r_gcount_w29: std_logic; + signal r_gcount_w9: std_logic; + signal r_gcount_w210: std_logic; + signal r_gcount_w10: std_logic; + signal r_gcount_w211: std_logic; + signal r_gcount_w11: std_logic; + signal r_gcount_w212: std_logic; + signal r_gcount_w12: std_logic; + signal empty_i: std_logic; + signal rRst: std_logic; + signal full_i: std_logic; + signal iwcount_0: std_logic; + signal iwcount_1: std_logic; + signal w_gctr_ci: std_logic; + signal iwcount_2: std_logic; + signal iwcount_3: std_logic; + signal co0: std_logic; + signal iwcount_4: std_logic; + signal iwcount_5: std_logic; + signal co1: std_logic; + signal iwcount_6: std_logic; + signal iwcount_7: std_logic; + signal co2: std_logic; + signal iwcount_8: std_logic; + signal iwcount_9: std_logic; + signal co3: std_logic; + signal iwcount_10: std_logic; + signal iwcount_11: std_logic; + signal co4: std_logic; + signal iwcount_12: std_logic; + signal co6: std_logic; + signal wcount_12: std_logic; + signal co5: std_logic; + signal scuba_vhi: std_logic; + signal ircount_0: std_logic; + signal ircount_1: std_logic; + signal r_gctr_ci: std_logic; + signal ircount_2: std_logic; + signal ircount_3: std_logic; + signal co0_1: std_logic; + signal ircount_4: std_logic; + signal ircount_5: std_logic; + signal co1_1: std_logic; + signal ircount_6: std_logic; + signal ircount_7: std_logic; + signal co2_1: std_logic; + signal ircount_8: std_logic; + signal ircount_9: std_logic; + signal co3_1: std_logic; + signal ircount_10: std_logic; + signal ircount_11: std_logic; + signal co4_1: std_logic; + signal ircount_12: std_logic; + signal co6_1: std_logic; + signal rcount_12: std_logic; + signal co5_1: std_logic; + signal rden_i: std_logic; + signal cmp_ci: std_logic; + signal wcount_r0: std_logic; + signal wcount_r1: std_logic; + signal rcount_0: std_logic; + signal rcount_1: std_logic; + signal co0_2: std_logic; + signal wcount_r2: std_logic; + signal wcount_r3: std_logic; + signal rcount_2: std_logic; + signal rcount_3: std_logic; + signal co1_2: std_logic; + signal wcount_r4: std_logic; + signal wcount_r5: std_logic; + signal rcount_4: std_logic; + signal rcount_5: std_logic; + signal co2_2: std_logic; + signal wcount_r6: std_logic; + signal wcount_r7: std_logic; + signal rcount_6: std_logic; + signal rcount_7: std_logic; + signal co3_2: std_logic; + signal wcount_r8: std_logic; + signal w_g2b_xor_cluster_0: std_logic; + signal rcount_8: std_logic; + signal rcount_9: std_logic; + signal co4_2: std_logic; + signal wcount_r10: std_logic; + signal wcount_r11: std_logic; + signal rcount_10: std_logic; + signal rcount_11: std_logic; + signal co5_2: std_logic; + signal empty_cmp_clr: std_logic; + signal empty_cmp_set: std_logic; + signal empty_d: std_logic; + signal empty_d_c: std_logic; + signal wren_i: std_logic; + signal cmp_ci_1: std_logic; + signal rcount_w0: std_logic; + signal rcount_w1: std_logic; + signal wcount_0: std_logic; + signal wcount_1: std_logic; + signal co0_3: std_logic; + signal rcount_w2: std_logic; + signal rcount_w3: std_logic; + signal wcount_2: std_logic; + signal wcount_3: std_logic; + signal co1_3: std_logic; + signal rcount_w4: std_logic; + signal rcount_w5: std_logic; + signal wcount_4: std_logic; + signal wcount_5: std_logic; + signal co2_3: std_logic; + signal rcount_w6: std_logic; + signal rcount_w7: std_logic; + signal wcount_6: std_logic; + signal wcount_7: std_logic; + signal co3_3: std_logic; + signal rcount_w8: std_logic; + signal r_g2b_xor_cluster_0: std_logic; + signal wcount_8: std_logic; + signal wcount_9: std_logic; + signal co4_3: std_logic; + signal rcount_w10: std_logic; + signal rcount_w11: std_logic; + signal wcount_10: std_logic; + signal wcount_11: std_logic; + signal co5_3: std_logic; + signal full_cmp_clr: std_logic; + signal full_cmp_set: std_logic; + signal full_d: std_logic; + signal full_d_c: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component AGEB2 + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; GE: out std_logic); + end component; + component AND2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component CU2 + port (CI: in std_logic; PC0: in std_logic; PC1: in std_logic; + CO: out std_logic; NC0: out std_logic; NC1: out std_logic); + end component; + component FADD2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; COUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FD1P3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + PD: in std_logic; Q: out std_logic); + end component; + component FD1P3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + CD: in std_logic; Q: out std_logic); + end component; + component FD1S3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; PD: in std_logic; + Q: out std_logic); + end component; + component FD1S3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; CD: in std_logic; + Q: out std_logic); + end component; + component INV + port (A: in std_logic; Z: out std_logic); + end component; + component OR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component ROM16X1 + -- synopsys translate_off + generic (initval : in String); + -- synopsys translate_on + port (AD3: in std_logic; AD2: in std_logic; AD1: in std_logic; + AD0: in std_logic; DO0: out std_logic); + end component; + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component XOR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute initval : string; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute GSR : string; + attribute initval of LUT4_33 : label is "0x6996"; + attribute initval of LUT4_32 : label is "0x6996"; + attribute initval of LUT4_31 : label is "0x6996"; + attribute initval of LUT4_30 : label is "0x6996"; + attribute initval of LUT4_29 : label is "0x6996"; + attribute initval of LUT4_28 : label is "0x6996"; + attribute initval of LUT4_27 : label is "0x6996"; + attribute initval of LUT4_26 : label is "0x6996"; + attribute initval of LUT4_25 : label is "0x6996"; + attribute initval of LUT4_24 : label is "0x6996"; + attribute initval of LUT4_23 : label is "0x6996"; + attribute initval of LUT4_22 : label is "0x6996"; + attribute initval of LUT4_21 : label is "0x6996"; + attribute initval of LUT4_20 : label is "0x6996"; + attribute initval of LUT4_19 : label is "0x6996"; + attribute initval of LUT4_18 : label is "0x6996"; + attribute initval of LUT4_17 : label is "0x6996"; + attribute initval of LUT4_16 : label is "0x6996"; + attribute initval of LUT4_15 : label is "0x6996"; + attribute initval of LUT4_14 : label is "0x6996"; + attribute initval of LUT4_13 : label is "0x6996"; + attribute initval of LUT4_12 : label is "0x6996"; + attribute initval of LUT4_11 : label is "0x6996"; + attribute initval of LUT4_10 : label is "0x6996"; + attribute initval of LUT4_9 : label is "0x6996"; + attribute initval of LUT4_8 : label is "0x6996"; + attribute initval of LUT4_7 : label is "0x6996"; + attribute initval of LUT4_6 : label is "0x6996"; + attribute initval of LUT4_5 : label is "0x6996"; + attribute initval of LUT4_4 : label is "0x6996"; + attribute initval of LUT4_3 : label is "0x0410"; + attribute initval of LUT4_2 : label is "0x1004"; + attribute initval of LUT4_1 : label is "0x0140"; + attribute initval of LUT4_0 : label is "0x4001"; + attribute MEM_LPC_FILE of pdp_ram_0_0_7 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_0_7 : label is ""; + attribute CSDECODE_B of pdp_ram_0_0_7 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_0_7 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_0_7 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_0_7 : label is "NORMAL"; + attribute GSR of pdp_ram_0_0_7 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_0_7 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_0_7 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_0_7 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_0_7 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_0_7 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_1_6 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_1_6 : label is ""; + attribute CSDECODE_B of pdp_ram_0_1_6 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_1_6 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_1_6 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_1_6 : label is "NORMAL"; + attribute GSR of pdp_ram_0_1_6 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_1_6 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_1_6 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_1_6 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_1_6 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_1_6 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_2_5 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_2_5 : label is ""; + attribute CSDECODE_B of pdp_ram_0_2_5 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_2_5 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_2_5 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_2_5 : label is "NORMAL"; + attribute GSR of pdp_ram_0_2_5 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_2_5 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_2_5 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_2_5 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_2_5 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_2_5 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_3_4 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_3_4 : label is ""; + attribute CSDECODE_B of pdp_ram_0_3_4 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_3_4 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_3_4 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_3_4 : label is "NORMAL"; + attribute GSR of pdp_ram_0_3_4 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_3_4 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_3_4 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_3_4 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_3_4 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_3_4 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_4_3 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_4_3 : label is ""; + attribute CSDECODE_B of pdp_ram_0_4_3 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_4_3 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_4_3 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_4_3 : label is "NORMAL"; + attribute GSR of pdp_ram_0_4_3 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_4_3 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_4_3 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_4_3 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_4_3 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_4_3 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_5_2 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_5_2 : label is ""; + attribute CSDECODE_B of pdp_ram_0_5_2 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_5_2 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_5_2 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_5_2 : label is "NORMAL"; + attribute GSR of pdp_ram_0_5_2 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_5_2 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_5_2 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_5_2 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_5_2 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_5_2 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_6_1 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_6_1 : label is ""; + attribute CSDECODE_B of pdp_ram_0_6_1 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_6_1 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_6_1 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_6_1 : label is "NORMAL"; + attribute GSR of pdp_ram_0_6_1 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_6_1 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_6_1 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_6_1 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_6_1 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_6_1 : label is "4"; + attribute MEM_LPC_FILE of pdp_ram_0_7_0 : label is "fifo_4096x32.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_7_0 : label is ""; + attribute CSDECODE_B of pdp_ram_0_7_0 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_7_0 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_7_0 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_7_0 : label is "NORMAL"; + attribute GSR of pdp_ram_0_7_0 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_7_0 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_7_0 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_7_0 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_7_0 : label is "4"; + attribute DATA_WIDTH_A of pdp_ram_0_7_0 : label is "4"; + attribute GSR of FF_131 : label is "ENABLED"; + attribute GSR of FF_130 : label is "ENABLED"; + attribute GSR of FF_129 : label is "ENABLED"; + attribute GSR of FF_128 : label is "ENABLED"; + attribute GSR of FF_127 : label is "ENABLED"; + attribute GSR of FF_126 : label is "ENABLED"; + attribute GSR of FF_125 : label is "ENABLED"; + attribute GSR of FF_124 : label is "ENABLED"; + attribute GSR of FF_123 : label is "ENABLED"; + attribute GSR of FF_122 : label is "ENABLED"; + attribute GSR of FF_121 : label is "ENABLED"; + attribute GSR of FF_120 : label is "ENABLED"; + attribute GSR of FF_119 : label is "ENABLED"; + attribute GSR of FF_118 : label is "ENABLED"; + attribute GSR of FF_117 : label is "ENABLED"; + attribute GSR of FF_116 : label is "ENABLED"; + attribute GSR of FF_115 : label is "ENABLED"; + attribute GSR of FF_114 : label is "ENABLED"; + attribute GSR of FF_113 : label is "ENABLED"; + attribute GSR of FF_112 : label is "ENABLED"; + attribute GSR of FF_111 : label is "ENABLED"; + attribute GSR of FF_110 : label is "ENABLED"; + attribute GSR of FF_109 : label is "ENABLED"; + attribute GSR of FF_108 : label is "ENABLED"; + attribute GSR of FF_107 : label is "ENABLED"; + attribute GSR of FF_106 : label is "ENABLED"; + attribute GSR of FF_105 : label is "ENABLED"; + attribute GSR of FF_104 : label is "ENABLED"; + attribute GSR of FF_103 : label is "ENABLED"; + attribute GSR of FF_102 : label is "ENABLED"; + attribute GSR of FF_101 : label is "ENABLED"; + attribute GSR of FF_100 : label is "ENABLED"; + attribute GSR of FF_99 : label is "ENABLED"; + attribute GSR of FF_98 : label is "ENABLED"; + attribute GSR of FF_97 : label is "ENABLED"; + attribute GSR of FF_96 : label is "ENABLED"; + attribute GSR of FF_95 : label is "ENABLED"; + attribute GSR of FF_94 : label is "ENABLED"; + attribute GSR of FF_93 : label is "ENABLED"; + attribute GSR of FF_92 : label is "ENABLED"; + attribute GSR of FF_91 : label is "ENABLED"; + attribute GSR of FF_90 : label is "ENABLED"; + attribute GSR of FF_89 : label is "ENABLED"; + attribute GSR of FF_88 : label is "ENABLED"; + attribute GSR of FF_87 : label is "ENABLED"; + attribute GSR of FF_86 : label is "ENABLED"; + attribute GSR of FF_85 : label is "ENABLED"; + attribute GSR of FF_84 : label is "ENABLED"; + attribute GSR of FF_83 : label is "ENABLED"; + attribute GSR of FF_82 : label is "ENABLED"; + attribute GSR of FF_81 : label is "ENABLED"; + attribute GSR of FF_80 : label is "ENABLED"; + attribute GSR of FF_79 : label is "ENABLED"; + attribute GSR of FF_78 : label is "ENABLED"; + attribute GSR of FF_77 : label is "ENABLED"; + attribute GSR of FF_76 : label is "ENABLED"; + attribute GSR of FF_75 : label is "ENABLED"; + attribute GSR of FF_74 : label is "ENABLED"; + attribute GSR of FF_73 : label is "ENABLED"; + attribute GSR of FF_72 : label is "ENABLED"; + attribute GSR of FF_71 : label is "ENABLED"; + attribute GSR of FF_70 : label is "ENABLED"; + attribute GSR of FF_69 : label is "ENABLED"; + attribute GSR of FF_68 : label is "ENABLED"; + attribute GSR of FF_67 : label is "ENABLED"; + attribute GSR of FF_66 : label is "ENABLED"; + attribute GSR of FF_65 : label is "ENABLED"; + attribute GSR of FF_64 : label is "ENABLED"; + attribute GSR of FF_63 : label is "ENABLED"; + attribute GSR of FF_62 : label is "ENABLED"; + attribute GSR of FF_61 : label is "ENABLED"; + attribute GSR of FF_60 : label is "ENABLED"; + attribute GSR of FF_59 : label is "ENABLED"; + attribute GSR of FF_58 : label is "ENABLED"; + attribute GSR of FF_57 : label is "ENABLED"; + attribute GSR of FF_56 : label is "ENABLED"; + attribute GSR of FF_55 : label is "ENABLED"; + attribute GSR of FF_54 : label is "ENABLED"; + attribute GSR of FF_53 : label is "ENABLED"; + attribute GSR of FF_52 : label is "ENABLED"; + attribute GSR of FF_51 : label is "ENABLED"; + attribute GSR of FF_50 : label is "ENABLED"; + attribute GSR of FF_49 : label is "ENABLED"; + attribute GSR of FF_48 : label is "ENABLED"; + attribute GSR of FF_47 : label is "ENABLED"; + attribute GSR of FF_46 : label is "ENABLED"; + attribute GSR of FF_45 : label is "ENABLED"; + attribute GSR of FF_44 : label is "ENABLED"; + attribute GSR of FF_43 : label is "ENABLED"; + attribute GSR of FF_42 : label is "ENABLED"; + attribute GSR of FF_41 : label is "ENABLED"; + attribute GSR of FF_40 : label is "ENABLED"; + attribute GSR of FF_39 : label is "ENABLED"; + attribute GSR of FF_38 : label is "ENABLED"; + attribute GSR of FF_37 : label is "ENABLED"; + attribute GSR of FF_36 : label is "ENABLED"; + attribute GSR of FF_35 : label is "ENABLED"; + attribute GSR of FF_34 : label is "ENABLED"; + attribute GSR of FF_33 : label is "ENABLED"; + attribute GSR of FF_32 : label is "ENABLED"; + attribute GSR of FF_31 : label is "ENABLED"; + attribute GSR of FF_30 : label is "ENABLED"; + attribute GSR of FF_29 : label is "ENABLED"; + attribute GSR of FF_28 : label is "ENABLED"; + attribute GSR of FF_27 : label is "ENABLED"; + attribute GSR of FF_26 : label is "ENABLED"; + attribute GSR of FF_25 : label is "ENABLED"; + attribute GSR of FF_24 : label is "ENABLED"; + attribute GSR of FF_23 : label is "ENABLED"; + attribute GSR of FF_22 : label is "ENABLED"; + attribute GSR of FF_21 : label is "ENABLED"; + attribute GSR of FF_20 : label is "ENABLED"; + attribute GSR of FF_19 : label is "ENABLED"; + attribute GSR of FF_18 : label is "ENABLED"; + attribute GSR of FF_17 : label is "ENABLED"; + attribute GSR of FF_16 : label is "ENABLED"; + attribute GSR of FF_15 : label is "ENABLED"; + attribute GSR of FF_14 : label is "ENABLED"; + attribute GSR of FF_13 : label is "ENABLED"; + attribute GSR of FF_12 : label is "ENABLED"; + attribute GSR of FF_11 : label is "ENABLED"; + attribute GSR of FF_10 : label is "ENABLED"; + attribute GSR of FF_9 : label is "ENABLED"; + attribute GSR of FF_8 : label is "ENABLED"; + attribute GSR of FF_7 : label is "ENABLED"; + attribute GSR of FF_6 : label is "ENABLED"; + attribute GSR of FF_5 : label is "ENABLED"; + attribute GSR of FF_4 : label is "ENABLED"; + attribute GSR of FF_3 : label is "ENABLED"; + attribute GSR of FF_2 : label is "ENABLED"; + attribute GSR of FF_1 : label is "ENABLED"; + attribute GSR of FF_0 : label is "ENABLED"; + attribute syn_keep : boolean; + +begin + -- component instantiation statements + AND2_t26: AND2 + port map (A=>WrEn, B=>invout_1, Z=>wren_i); + + INV_1: INV + port map (A=>full_i, Z=>invout_1); + + AND2_t25: AND2 + port map (A=>RdEn, B=>invout_0, Z=>rden_i); + + INV_0: INV + port map (A=>empty_i, Z=>invout_0); + + OR2_t24: OR2 + port map (A=>Reset, B=>RPReset, Z=>rRst); + + XOR2_t23: XOR2 + port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); + + XOR2_t22: XOR2 + port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); + + XOR2_t21: XOR2 + port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); + + XOR2_t20: XOR2 + port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); + + XOR2_t19: XOR2 + port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); + + XOR2_t18: XOR2 + port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); + + XOR2_t17: XOR2 + port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); + + XOR2_t16: XOR2 + port map (A=>wcount_7, B=>wcount_8, Z=>w_gdata_7); + + XOR2_t15: XOR2 + port map (A=>wcount_8, B=>wcount_9, Z=>w_gdata_8); + + XOR2_t14: XOR2 + port map (A=>wcount_9, B=>wcount_10, Z=>w_gdata_9); + + XOR2_t13: XOR2 + port map (A=>wcount_10, B=>wcount_11, Z=>w_gdata_10); + + XOR2_t12: XOR2 + port map (A=>wcount_11, B=>wcount_12, Z=>w_gdata_11); + + XOR2_t11: XOR2 + port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); + + XOR2_t10: XOR2 + port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); + + XOR2_t9: XOR2 + port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); + + XOR2_t8: XOR2 + port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); + + XOR2_t7: XOR2 + port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); + + XOR2_t6: XOR2 + port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); + + XOR2_t5: XOR2 + port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); + + XOR2_t4: XOR2 + port map (A=>rcount_7, B=>rcount_8, Z=>r_gdata_7); + + XOR2_t3: XOR2 + port map (A=>rcount_8, B=>rcount_9, Z=>r_gdata_8); + + XOR2_t2: XOR2 + port map (A=>rcount_9, B=>rcount_10, Z=>r_gdata_9); + + XOR2_t1: XOR2 + port map (A=>rcount_10, B=>rcount_11, Z=>r_gdata_10); + + XOR2_t0: XOR2 + port map (A=>rcount_11, B=>rcount_12, Z=>r_gdata_11); + + LUT4_33: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r29, AD2=>w_gcount_r210, + AD1=>w_gcount_r211, AD0=>w_gcount_r212, + DO0=>w_g2b_xor_cluster_0); + + LUT4_32: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r25, AD2=>w_gcount_r26, + AD1=>w_gcount_r27, AD0=>w_gcount_r28, + DO0=>w_g2b_xor_cluster_1); + + LUT4_31: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r21, AD2=>w_gcount_r22, + AD1=>w_gcount_r23, AD0=>w_gcount_r24, + DO0=>w_g2b_xor_cluster_2); + + LUT4_30: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r211, AD2=>w_gcount_r212, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>wcount_r11); + + LUT4_29: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r210, AD2=>w_gcount_r211, + AD1=>w_gcount_r212, AD0=>scuba_vlo, DO0=>wcount_r10); + + LUT4_28: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r28, AD2=>w_gcount_r29, + AD1=>w_gcount_r210, AD0=>wcount_r11, DO0=>wcount_r8); + + LUT4_27: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r27, AD2=>w_gcount_r28, + AD1=>w_gcount_r29, AD0=>wcount_r10, DO0=>wcount_r7); + + LUT4_26: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r26, AD2=>w_gcount_r27, + AD1=>w_gcount_r28, AD0=>w_g2b_xor_cluster_0, DO0=>wcount_r6); + + LUT4_25: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r5); + + LUT4_24: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r24, AD0=>scuba_vlo, DO0=>wcount_r4); + + LUT4_23: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r23, AD0=>w_gcount_r24, DO0=>wcount_r3); + + LUT4_22: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r22, AD2=>w_gcount_r23, + AD1=>w_gcount_r24, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_2_1); + + LUT4_21: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>wcount_r2); + + LUT4_20: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>wcount_r1); + + LUT4_19: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_gcount_r20, DO0=>wcount_r0); + + LUT4_18: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w29, AD2=>r_gcount_w210, + AD1=>r_gcount_w211, AD0=>r_gcount_w212, + DO0=>r_g2b_xor_cluster_0); + + LUT4_17: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w25, AD2=>r_gcount_w26, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, + DO0=>r_g2b_xor_cluster_1); + + LUT4_16: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w21, AD2=>r_gcount_w22, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, + DO0=>r_g2b_xor_cluster_2); + + LUT4_15: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w211, AD2=>r_gcount_w212, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>rcount_w11); + + LUT4_14: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w210, AD2=>r_gcount_w211, + AD1=>r_gcount_w212, AD0=>scuba_vlo, DO0=>rcount_w10); + + LUT4_13: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w28, AD2=>r_gcount_w29, + AD1=>r_gcount_w210, AD0=>rcount_w11, DO0=>rcount_w8); + + LUT4_12: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w27, AD2=>r_gcount_w28, + AD1=>r_gcount_w29, AD0=>rcount_w10, DO0=>rcount_w7); + + LUT4_11: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w26, AD2=>r_gcount_w27, + AD1=>r_gcount_w28, AD0=>r_g2b_xor_cluster_0, DO0=>rcount_w6); + + LUT4_10: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w5); + + LUT4_9: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w24, AD0=>scuba_vlo, DO0=>rcount_w4); + + LUT4_8: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, DO0=>rcount_w3); + + LUT4_7: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w22, AD2=>r_gcount_w23, + AD1=>r_gcount_w24, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_2_1); + + LUT4_6: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>rcount_w2); + + LUT4_5: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>rcount_w1); + + LUT4_4: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_gcount_w20, DO0=>rcount_w0); + + LUT4_3: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0410") + -- synopsys translate_on + port map (AD3=>rptr_12, AD2=>rcount_12, AD1=>w_gcount_r212, + AD0=>scuba_vlo, DO0=>empty_cmp_set); + + LUT4_2: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x1004") + -- synopsys translate_on + port map (AD3=>rptr_12, AD2=>rcount_12, AD1=>w_gcount_r212, + AD0=>scuba_vlo, DO0=>empty_cmp_clr); + + LUT4_1: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0140") + -- synopsys translate_on + port map (AD3=>wptr_12, AD2=>wcount_12, AD1=>r_gcount_w212, + AD0=>scuba_vlo, DO0=>full_cmp_set); + + LUT4_0: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x4001") + -- synopsys translate_on + port map (AD3=>wptr_12, AD2=>wcount_12, AD1=>r_gcount_w212, + AD0=>scuba_vlo, DO0=>full_cmp_clr); + + pdp_ram_0_0_7: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(0), DIA1=>Data(1), DIA2=>Data(2), + DIA3=>Data(3), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(0), DOB1=>Q(1), DOB2=>Q(2), DOB3=>Q(3), + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_1_6: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(4), DIA1=>Data(5), DIA2=>Data(6), + DIA3=>Data(7), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(4), DOB1=>Q(5), DOB2=>Q(6), DOB3=>Q(7), + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_2_5: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(8), DIA1=>Data(9), DIA2=>Data(10), + DIA3=>Data(11), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(8), DOB1=>Q(9), DOB2=>Q(10), + DOB3=>Q(11), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + pdp_ram_0_3_4: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(12), DIA1=>Data(13), DIA2=>Data(14), + DIA3=>Data(15), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(12), DOB1=>Q(13), DOB2=>Q(14), + DOB3=>Q(15), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + pdp_ram_0_4_3: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(16), DIA1=>Data(17), DIA2=>Data(18), + DIA3=>Data(19), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(16), DOB1=>Q(17), DOB2=>Q(18), + DOB3=>Q(19), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + pdp_ram_0_5_2: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(20), DIA1=>Data(21), DIA2=>Data(22), + DIA3=>Data(23), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(20), DOB1=>Q(21), DOB2=>Q(22), + DOB3=>Q(23), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + pdp_ram_0_6_1: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(24), DIA1=>Data(25), DIA2=>Data(26), + DIA3=>Data(27), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(24), DOB1=>Q(25), DOB2=>Q(26), + DOB3=>Q(27), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + pdp_ram_0_7_0: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 4, + DATA_WIDTH_A=> 4) + -- synopsys translate_on + port map (DIA0=>Data(28), DIA1=>Data(29), DIA2=>Data(30), + DIA3=>Data(31), DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>wptr_0, ADA3=>wptr_1, + ADA4=>wptr_2, ADA5=>wptr_3, ADA6=>wptr_4, ADA7=>wptr_5, + ADA8=>wptr_6, ADA9=>wptr_7, ADA10=>wptr_8, ADA11=>wptr_9, + ADA12=>wptr_10, ADA13=>wptr_11, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>scuba_vlo, + ADB1=>scuba_vlo, ADB2=>rptr_0, ADB3=>rptr_1, ADB4=>rptr_2, + ADB5=>rptr_3, ADB6=>rptr_4, ADB7=>rptr_5, ADB8=>rptr_6, + ADB9=>rptr_7, ADB10=>rptr_8, ADB11=>rptr_9, ADB12=>rptr_10, + ADB13=>rptr_11, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>Reset, DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, + DOA4=>open, DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, + DOA9=>open, DOA10=>open, DOA11=>open, DOA12=>open, + DOA13=>open, DOA14=>open, DOA15=>open, DOA16=>open, + DOA17=>open, DOB0=>Q(28), DOB1=>Q(29), DOB2=>Q(30), + DOB3=>Q(31), DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, + DOB8=>open, DOB9=>open, DOB10=>open, DOB11=>open, + DOB12=>open, DOB13=>open, DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + + FF_131: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset, + Q=>wcount_0); + + FF_130: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_1); + + FF_129: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_2); + + FF_128: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_3); + + FF_127: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_4); + + FF_126: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_5); + + FF_125: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_6); + + FF_124: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_7); + + FF_123: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_8); + + FF_122: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_9); + + FF_121: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_10); + + FF_120: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_11); + + FF_119: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_12); + + FF_118: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_0); + + FF_117: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_1); + + FF_116: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_2); + + FF_115: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_3); + + FF_114: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_4); + + FF_113: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_5); + + FF_112: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_6); + + FF_111: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_7); + + FF_110: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_8); + + FF_109: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_9); + + FF_108: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_10); + + FF_107: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_11); + + FF_106: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_12); + + FF_105: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_0); + + FF_104: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_1); + + FF_103: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_2); + + FF_102: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_3); + + FF_101: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_4); + + FF_100: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_5); + + FF_99: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_6); + + FF_98: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_7); + + FF_97: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_8); + + FF_96: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_9); + + FF_95: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_10); + + FF_94: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_11); + + FF_93: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_12); + + FF_92: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_0, SP=>rden_i, CK=>RdClock, PD=>rRst, + Q=>rcount_0); + + FF_91: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_1); + + FF_90: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_2); + + FF_89: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_3); + + FF_88: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_4); + + FF_87: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_5); + + FF_86: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_6); + + FF_85: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_7); + + FF_84: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_8); + + FF_83: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_9); + + FF_82: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_10); + + FF_81: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_11); + + FF_80: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_12); + + FF_79: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_0); + + FF_78: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_1); + + FF_77: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_2); + + FF_76: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_3); + + FF_75: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_4); + + FF_74: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_5); + + FF_73: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_6); + + FF_72: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_7); + + FF_71: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_8); + + FF_70: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_9); + + FF_69: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_10); + + FF_68: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_11); + + FF_67: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_12); + + FF_66: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_0); + + FF_65: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_1); + + FF_64: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_2); + + FF_63: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_3); + + FF_62: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_4); + + FF_61: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_5); + + FF_60: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_6); + + FF_59: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_7); + + FF_58: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_8); + + FF_57: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_9); + + FF_56: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_10); + + FF_55: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_11); + + FF_54: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_12); + + FF_53: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_0, CK=>RdClock, CD=>Reset, Q=>w_gcount_r0); + + FF_52: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_1, CK=>RdClock, CD=>Reset, Q=>w_gcount_r1); + + FF_51: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_2, CK=>RdClock, CD=>Reset, Q=>w_gcount_r2); + + FF_50: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_3, CK=>RdClock, CD=>Reset, Q=>w_gcount_r3); + + FF_49: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_4, CK=>RdClock, CD=>Reset, Q=>w_gcount_r4); + + FF_48: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_5, CK=>RdClock, CD=>Reset, Q=>w_gcount_r5); + + FF_47: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_6, CK=>RdClock, CD=>Reset, Q=>w_gcount_r6); + + FF_46: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_7, CK=>RdClock, CD=>Reset, Q=>w_gcount_r7); + + FF_45: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_8, CK=>RdClock, CD=>Reset, Q=>w_gcount_r8); + + FF_44: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_9, CK=>RdClock, CD=>Reset, Q=>w_gcount_r9); + + FF_43: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r10); + + FF_42: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r11); + + FF_41: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r12); + + FF_40: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w0); + + FF_39: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w1); + + FF_38: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w2); + + FF_37: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w3); + + FF_36: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w4); + + FF_35: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w5); + + FF_34: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w6); + + FF_33: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w7); + + FF_32: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w8); + + FF_31: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w9); + + FF_30: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_10, CK=>WrClock, CD=>rRst, Q=>r_gcount_w10); + + FF_29: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_11, CK=>WrClock, CD=>rRst, Q=>r_gcount_w11); + + FF_28: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_12, CK=>WrClock, CD=>rRst, Q=>r_gcount_w12); + + FF_27: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r0, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r20); + + FF_26: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r1, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r21); + + FF_25: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r2, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r22); + + FF_24: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r3, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r23); + + FF_23: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r4, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r24); + + FF_22: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r5, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r25); + + FF_21: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r6, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r26); + + FF_20: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r7, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r27); + + FF_19: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r8, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r28); + + FF_18: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r9, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r29); + + FF_17: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r210); + + FF_16: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r211); + + FF_15: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r212); + + FF_14: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w20); + + FF_13: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w21); + + FF_12: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w22); + + FF_11: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w23); + + FF_10: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w24); + + FF_9: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w25); + + FF_8: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w26); + + FF_7: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); + + FF_6: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w28); + + FF_5: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w29); + + FF_4: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w10, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w210); + + FF_3: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w11, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w211); + + FF_2: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w12, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w212); + + FF_1: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); + + FF_0: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); + + w_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>w_gctr_ci, S0=>open, + S1=>open); + + w_gctr_0: CU2 + port map (CI=>w_gctr_ci, PC0=>wcount_0, PC1=>wcount_1, CO=>co0, + NC0=>iwcount_0, NC1=>iwcount_1); + + w_gctr_1: CU2 + port map (CI=>co0, PC0=>wcount_2, PC1=>wcount_3, CO=>co1, + NC0=>iwcount_2, NC1=>iwcount_3); + + w_gctr_2: CU2 + port map (CI=>co1, PC0=>wcount_4, PC1=>wcount_5, CO=>co2, + NC0=>iwcount_4, NC1=>iwcount_5); + + w_gctr_3: CU2 + port map (CI=>co2, PC0=>wcount_6, PC1=>wcount_7, CO=>co3, + NC0=>iwcount_6, NC1=>iwcount_7); + + w_gctr_4: CU2 + port map (CI=>co3, PC0=>wcount_8, PC1=>wcount_9, CO=>co4, + NC0=>iwcount_8, NC1=>iwcount_9); + + w_gctr_5: CU2 + port map (CI=>co4, PC0=>wcount_10, PC1=>wcount_11, CO=>co5, + NC0=>iwcount_10, NC1=>iwcount_11); + + w_gctr_6: CU2 + port map (CI=>co5, PC0=>wcount_12, PC1=>scuba_vlo, CO=>co6, + NC0=>iwcount_12, NC1=>open); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + r_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>r_gctr_ci, S0=>open, + S1=>open); + + r_gctr_0: CU2 + port map (CI=>r_gctr_ci, PC0=>rcount_0, PC1=>rcount_1, CO=>co0_1, + NC0=>ircount_0, NC1=>ircount_1); + + r_gctr_1: CU2 + port map (CI=>co0_1, PC0=>rcount_2, PC1=>rcount_3, CO=>co1_1, + NC0=>ircount_2, NC1=>ircount_3); + + r_gctr_2: CU2 + port map (CI=>co1_1, PC0=>rcount_4, PC1=>rcount_5, CO=>co2_1, + NC0=>ircount_4, NC1=>ircount_5); + + r_gctr_3: CU2 + port map (CI=>co2_1, PC0=>rcount_6, PC1=>rcount_7, CO=>co3_1, + NC0=>ircount_6, NC1=>ircount_7); + + r_gctr_4: CU2 + port map (CI=>co3_1, PC0=>rcount_8, PC1=>rcount_9, CO=>co4_1, + NC0=>ircount_8, NC1=>ircount_9); + + r_gctr_5: CU2 + port map (CI=>co4_1, PC0=>rcount_10, PC1=>rcount_11, CO=>co5_1, + NC0=>ircount_10, NC1=>ircount_11); + + r_gctr_6: CU2 + port map (CI=>co5_1, PC0=>rcount_12, PC1=>scuba_vlo, CO=>co6_1, + NC0=>ircount_12, NC1=>open); + + empty_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci, S0=>open, S1=>open); + + empty_cmp_0: AGEB2 + port map (A0=>rcount_0, A1=>rcount_1, B0=>wcount_r0, + B1=>wcount_r1, CI=>cmp_ci, GE=>co0_2); + + empty_cmp_1: AGEB2 + port map (A0=>rcount_2, A1=>rcount_3, B0=>wcount_r2, + B1=>wcount_r3, CI=>co0_2, GE=>co1_2); + + empty_cmp_2: AGEB2 + port map (A0=>rcount_4, A1=>rcount_5, B0=>wcount_r4, + B1=>wcount_r5, CI=>co1_2, GE=>co2_2); + + empty_cmp_3: AGEB2 + port map (A0=>rcount_6, A1=>rcount_7, B0=>wcount_r6, + B1=>wcount_r7, CI=>co2_2, GE=>co3_2); + + empty_cmp_4: AGEB2 + port map (A0=>rcount_8, A1=>rcount_9, B0=>wcount_r8, + B1=>w_g2b_xor_cluster_0, CI=>co3_2, GE=>co4_2); + + empty_cmp_5: AGEB2 + port map (A0=>rcount_10, A1=>rcount_11, B0=>wcount_r10, + B1=>wcount_r11, CI=>co4_2, GE=>co5_2); + + empty_cmp_6: AGEB2 + port map (A0=>empty_cmp_set, A1=>scuba_vlo, B0=>empty_cmp_clr, + B1=>scuba_vlo, CI=>co5_2, GE=>empty_d_c); + + a0: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>empty_d_c, COUT=>open, S0=>empty_d, + S1=>open); + + full_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_1, S0=>open, S1=>open); + + full_cmp_0: AGEB2 + port map (A0=>wcount_0, A1=>wcount_1, B0=>rcount_w0, + B1=>rcount_w1, CI=>cmp_ci_1, GE=>co0_3); + + full_cmp_1: AGEB2 + port map (A0=>wcount_2, A1=>wcount_3, B0=>rcount_w2, + B1=>rcount_w3, CI=>co0_3, GE=>co1_3); + + full_cmp_2: AGEB2 + port map (A0=>wcount_4, A1=>wcount_5, B0=>rcount_w4, + B1=>rcount_w5, CI=>co1_3, GE=>co2_3); + + full_cmp_3: AGEB2 + port map (A0=>wcount_6, A1=>wcount_7, B0=>rcount_w6, + B1=>rcount_w7, CI=>co2_3, GE=>co3_3); + + full_cmp_4: AGEB2 + port map (A0=>wcount_8, A1=>wcount_9, B0=>rcount_w8, + B1=>r_g2b_xor_cluster_0, CI=>co3_3, GE=>co4_3); + + full_cmp_5: AGEB2 + port map (A0=>wcount_10, A1=>wcount_11, B0=>rcount_w10, + B1=>rcount_w11, CI=>co4_3, GE=>co5_3); + + full_cmp_6: AGEB2 + port map (A0=>full_cmp_set, A1=>scuba_vlo, B0=>full_cmp_clr, + B1=>scuba_vlo, CI=>co5_3, GE=>full_d_c); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + a1: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, + S1=>open); + + Empty <= empty_i; + Full <= full_i; +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of fifo_4096x32 is + for Structure + for all:AGEB2 use entity ecp2m.AGEB2(V); end for; + for all:AND2 use entity ecp2m.AND2(V); end for; + for all:CU2 use entity ecp2m.CU2(V); end for; + for all:FADD2B use entity ecp2m.FADD2B(V); end for; + for all:FD1P3BX use entity ecp2m.FD1P3BX(V); end for; + for all:FD1P3DX use entity ecp2m.FD1P3DX(V); end for; + for all:FD1S3BX use entity ecp2m.FD1S3BX(V); end for; + for all:FD1S3DX use entity ecp2m.FD1S3DX(V); end for; + for all:INV use entity ecp2m.INV(V); end for; + for all:OR2 use entity ecp2m.OR2(V); end for; + for all:ROM16X1 use entity ecp2m.ROM16X1(V); end for; + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:XOR2 use entity ecp2m.XOR2(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/fifo_4096x32_tmpl.vhd b/gbe_ecp2m/ipcores/fifo_4096x32_tmpl.vhd new file mode 100755 index 0000000..745eb44 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x32_tmpl.vhd @@ -0,0 +1,18 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v8.0_PROD_Build (41) +-- Module Version: 5.3 +-- Fri Dec 18 03:02:30 2009 + +-- parameterized module component declaration +component fifo_4096x32 + port (Data: in std_logic_vector(31 downto 0); + WrClock: in std_logic; RdClock: in std_logic; + WrEn: in std_logic; RdEn: in std_logic; Reset: in std_logic; + RPReset: in std_logic; Q: out std_logic_vector(31 downto 0); + Empty: out std_logic; Full: out std_logic); +end component; + +-- parameterized module component instance +__ : fifo_4096x32 + port map (Data(31 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, + RdEn=>__, Reset=>__, RPReset=>__, Q(31 downto 0)=>__, Empty=>__, + Full=>__); diff --git a/gbe_ecp2m/ipcores/fifo_4096x9.lpc b/gbe_ecp2m/ipcores/fifo_4096x9.lpc new file mode 100755 index 0000000..22cb7c6 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x9.lpc @@ -0,0 +1,47 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=FIFO_DC +CoreRevision=5.2 +ModuleName=fifo_4096x9 +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=01/05/2010 +Time=23:44:15 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +FIFOImp=EBR Based +Depth=4096 +Width=9 +RDepth=4096 +RWidth=9 +regout=0 +CtrlByRdEn=0 +EmpFlg=0 +PeMode=Static - Dual Threshold +PeAssert=10 +PeDeassert=12 +FullFlg=0 +PfMode=Static - Dual Threshold +PfAssert=508 +PfDeassert=506 +RDataCount=0 +WDataCount=0 +EnECC=0 diff --git a/gbe_ecp2m/ipcores/fifo_4096x9.vhd b/gbe_ecp2m/ipcores/fifo_4096x9.vhd new file mode 100755 index 0000000..ca644d2 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x9.vhd @@ -0,0 +1,2171 @@ +-- VHDL netlist generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +--/opt/lattice/ispLEVER7.2/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type ebfifo -depth 4096 -width 9 -depth 4096 -rdata_width 9 -no_enable -pe -1 -pf -1 -e + +-- Tue Jan 5 23:44:15 2010 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity fifo_4096x9 is + port ( + Data: in std_logic_vector(8 downto 0); + WrClock: in std_logic; + RdClock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + RPReset: in std_logic; + Q: out std_logic_vector(8 downto 0); + Empty: out std_logic; + Full: out std_logic); +end fifo_4096x9; + +architecture Structure of fifo_4096x9 is + + -- internal signal declarations + signal invout_1: std_logic; + signal invout_0: std_logic; + signal w_g2b_xor_cluster_2_1: std_logic; + signal w_g2b_xor_cluster_2: std_logic; + signal w_g2b_xor_cluster_1: std_logic; + signal r_g2b_xor_cluster_2_1: std_logic; + signal r_g2b_xor_cluster_2: std_logic; + signal r_g2b_xor_cluster_1: std_logic; + signal w_gdata_0: std_logic; + signal w_gdata_1: std_logic; + signal w_gdata_2: std_logic; + signal w_gdata_3: std_logic; + signal w_gdata_4: std_logic; + signal w_gdata_5: std_logic; + signal w_gdata_6: std_logic; + signal w_gdata_7: std_logic; + signal w_gdata_8: std_logic; + signal w_gdata_9: std_logic; + signal w_gdata_10: std_logic; + signal w_gdata_11: std_logic; + signal wptr_0: std_logic; + signal wptr_1: std_logic; + signal wptr_2: std_logic; + signal wptr_3: std_logic; + signal wptr_4: std_logic; + signal wptr_5: std_logic; + signal wptr_6: std_logic; + signal wptr_7: std_logic; + signal wptr_8: std_logic; + signal wptr_9: std_logic; + signal wptr_10: std_logic; + signal wptr_11: std_logic; + signal wptr_12: std_logic; + signal r_gdata_0: std_logic; + signal r_gdata_1: std_logic; + signal r_gdata_2: std_logic; + signal r_gdata_3: std_logic; + signal r_gdata_4: std_logic; + signal r_gdata_5: std_logic; + signal r_gdata_6: std_logic; + signal r_gdata_7: std_logic; + signal r_gdata_8: std_logic; + signal r_gdata_9: std_logic; + signal r_gdata_10: std_logic; + signal r_gdata_11: std_logic; + signal rptr_0: std_logic; + signal rptr_1: std_logic; + signal rptr_2: std_logic; + signal rptr_3: std_logic; + signal rptr_4: std_logic; + signal rptr_5: std_logic; + signal rptr_6: std_logic; + signal rptr_7: std_logic; + signal rptr_8: std_logic; + signal rptr_9: std_logic; + signal rptr_10: std_logic; + signal rptr_12: std_logic; + signal rptr_11: std_logic; + signal w_gcount_0: std_logic; + signal w_gcount_1: std_logic; + signal w_gcount_2: std_logic; + signal w_gcount_3: std_logic; + signal w_gcount_4: std_logic; + signal w_gcount_5: std_logic; + signal w_gcount_6: std_logic; + signal w_gcount_7: std_logic; + signal w_gcount_8: std_logic; + signal w_gcount_9: std_logic; + signal w_gcount_10: std_logic; + signal w_gcount_11: std_logic; + signal w_gcount_12: std_logic; + signal r_gcount_0: std_logic; + signal r_gcount_1: std_logic; + signal r_gcount_2: std_logic; + signal r_gcount_3: std_logic; + signal r_gcount_4: std_logic; + signal r_gcount_5: std_logic; + signal r_gcount_6: std_logic; + signal r_gcount_7: std_logic; + signal r_gcount_8: std_logic; + signal r_gcount_9: std_logic; + signal r_gcount_10: std_logic; + signal r_gcount_11: std_logic; + signal r_gcount_12: std_logic; + signal w_gcount_r20: std_logic; + signal w_gcount_r0: std_logic; + signal w_gcount_r21: std_logic; + signal w_gcount_r1: std_logic; + signal w_gcount_r22: std_logic; + signal w_gcount_r2: std_logic; + signal w_gcount_r23: std_logic; + signal w_gcount_r3: std_logic; + signal w_gcount_r24: std_logic; + signal w_gcount_r4: std_logic; + signal w_gcount_r25: std_logic; + signal w_gcount_r5: std_logic; + signal w_gcount_r26: std_logic; + signal w_gcount_r6: std_logic; + signal w_gcount_r27: std_logic; + signal w_gcount_r7: std_logic; + signal w_gcount_r28: std_logic; + signal w_gcount_r8: std_logic; + signal w_gcount_r29: std_logic; + signal w_gcount_r9: std_logic; + signal w_gcount_r210: std_logic; + signal w_gcount_r10: std_logic; + signal w_gcount_r211: std_logic; + signal w_gcount_r11: std_logic; + signal w_gcount_r212: std_logic; + signal w_gcount_r12: std_logic; + signal r_gcount_w20: std_logic; + signal r_gcount_w0: std_logic; + signal r_gcount_w21: std_logic; + signal r_gcount_w1: std_logic; + signal r_gcount_w22: std_logic; + signal r_gcount_w2: std_logic; + signal r_gcount_w23: std_logic; + signal r_gcount_w3: std_logic; + signal r_gcount_w24: std_logic; + signal r_gcount_w4: std_logic; + signal r_gcount_w25: std_logic; + signal r_gcount_w5: std_logic; + signal r_gcount_w26: std_logic; + signal r_gcount_w6: std_logic; + signal r_gcount_w27: std_logic; + signal r_gcount_w7: std_logic; + signal r_gcount_w28: std_logic; + signal r_gcount_w8: std_logic; + signal r_gcount_w29: std_logic; + signal r_gcount_w9: std_logic; + signal r_gcount_w210: std_logic; + signal r_gcount_w10: std_logic; + signal r_gcount_w211: std_logic; + signal r_gcount_w11: std_logic; + signal r_gcount_w212: std_logic; + signal r_gcount_w12: std_logic; + signal empty_i: std_logic; + signal rRst: std_logic; + signal full_i: std_logic; + signal iwcount_0: std_logic; + signal iwcount_1: std_logic; + signal w_gctr_ci: std_logic; + signal iwcount_2: std_logic; + signal iwcount_3: std_logic; + signal co0: std_logic; + signal iwcount_4: std_logic; + signal iwcount_5: std_logic; + signal co1: std_logic; + signal iwcount_6: std_logic; + signal iwcount_7: std_logic; + signal co2: std_logic; + signal iwcount_8: std_logic; + signal iwcount_9: std_logic; + signal co3: std_logic; + signal iwcount_10: std_logic; + signal iwcount_11: std_logic; + signal co4: std_logic; + signal iwcount_12: std_logic; + signal co6: std_logic; + signal wcount_12: std_logic; + signal co5: std_logic; + signal scuba_vhi: std_logic; + signal ircount_0: std_logic; + signal ircount_1: std_logic; + signal r_gctr_ci: std_logic; + signal ircount_2: std_logic; + signal ircount_3: std_logic; + signal co0_1: std_logic; + signal ircount_4: std_logic; + signal ircount_5: std_logic; + signal co1_1: std_logic; + signal ircount_6: std_logic; + signal ircount_7: std_logic; + signal co2_1: std_logic; + signal ircount_8: std_logic; + signal ircount_9: std_logic; + signal co3_1: std_logic; + signal ircount_10: std_logic; + signal ircount_11: std_logic; + signal co4_1: std_logic; + signal ircount_12: std_logic; + signal co6_1: std_logic; + signal rcount_12: std_logic; + signal co5_1: std_logic; + signal mdout1_1_0: std_logic; + signal mdout1_0_0: std_logic; + signal mdout1_1_1: std_logic; + signal mdout1_0_1: std_logic; + signal mdout1_1_2: std_logic; + signal mdout1_0_2: std_logic; + signal mdout1_1_3: std_logic; + signal mdout1_0_3: std_logic; + signal mdout1_1_4: std_logic; + signal mdout1_0_4: std_logic; + signal mdout1_1_5: std_logic; + signal mdout1_0_5: std_logic; + signal mdout1_1_6: std_logic; + signal mdout1_0_6: std_logic; + signal mdout1_1_7: std_logic; + signal mdout1_0_7: std_logic; + signal rptr_11_ff: std_logic; + signal mdout1_1_8: std_logic; + signal mdout1_0_8: std_logic; + signal rden_i: std_logic; + signal cmp_ci: std_logic; + signal wcount_r0: std_logic; + signal wcount_r1: std_logic; + signal rcount_0: std_logic; + signal rcount_1: std_logic; + signal co0_2: std_logic; + signal wcount_r2: std_logic; + signal wcount_r3: std_logic; + signal rcount_2: std_logic; + signal rcount_3: std_logic; + signal co1_2: std_logic; + signal wcount_r4: std_logic; + signal wcount_r5: std_logic; + signal rcount_4: std_logic; + signal rcount_5: std_logic; + signal co2_2: std_logic; + signal wcount_r6: std_logic; + signal wcount_r7: std_logic; + signal rcount_6: std_logic; + signal rcount_7: std_logic; + signal co3_2: std_logic; + signal wcount_r8: std_logic; + signal w_g2b_xor_cluster_0: std_logic; + signal rcount_8: std_logic; + signal rcount_9: std_logic; + signal co4_2: std_logic; + signal wcount_r10: std_logic; + signal wcount_r11: std_logic; + signal rcount_10: std_logic; + signal rcount_11: std_logic; + signal co5_2: std_logic; + signal empty_cmp_clr: std_logic; + signal empty_cmp_set: std_logic; + signal empty_d: std_logic; + signal empty_d_c: std_logic; + signal wren_i: std_logic; + signal cmp_ci_1: std_logic; + signal rcount_w0: std_logic; + signal rcount_w1: std_logic; + signal wcount_0: std_logic; + signal wcount_1: std_logic; + signal co0_3: std_logic; + signal rcount_w2: std_logic; + signal rcount_w3: std_logic; + signal wcount_2: std_logic; + signal wcount_3: std_logic; + signal co1_3: std_logic; + signal rcount_w4: std_logic; + signal rcount_w5: std_logic; + signal wcount_4: std_logic; + signal wcount_5: std_logic; + signal co2_3: std_logic; + signal rcount_w6: std_logic; + signal rcount_w7: std_logic; + signal wcount_6: std_logic; + signal wcount_7: std_logic; + signal co3_3: std_logic; + signal rcount_w8: std_logic; + signal r_g2b_xor_cluster_0: std_logic; + signal wcount_8: std_logic; + signal wcount_9: std_logic; + signal co4_3: std_logic; + signal rcount_w10: std_logic; + signal rcount_w11: std_logic; + signal wcount_10: std_logic; + signal wcount_11: std_logic; + signal co5_3: std_logic; + signal full_cmp_clr: std_logic; + signal full_cmp_set: std_logic; + signal full_d: std_logic; + signal full_d_c: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component AGEB2 + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; GE: out std_logic); + end component; + component AND2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component CU2 + port (CI: in std_logic; PC0: in std_logic; PC1: in std_logic; + CO: out std_logic; NC0: out std_logic; NC1: out std_logic); + end component; + component FADD2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; COUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FD1P3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + PD: in std_logic; Q: out std_logic); + end component; + component FD1P3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + CD: in std_logic; Q: out std_logic); + end component; + component FD1S3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; PD: in std_logic; + Q: out std_logic); + end component; + component FD1S3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; CD: in std_logic; + Q: out std_logic); + end component; + component INV + port (A: in std_logic; Z: out std_logic); + end component; + component MUX21 + port (D0: in std_logic; D1: in std_logic; SD: in std_logic; + Z: out std_logic); + end component; + component OR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component ROM16X1 + -- synopsys translate_off + generic (initval : in String); + -- synopsys translate_on + port (AD3: in std_logic; AD2: in std_logic; AD1: in std_logic; + AD0: in std_logic; DO0: out std_logic); + end component; + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component XOR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute initval : string; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute GSR : string; + attribute initval of LUT4_33 : label is "0x6996"; + attribute initval of LUT4_32 : label is "0x6996"; + attribute initval of LUT4_31 : label is "0x6996"; + attribute initval of LUT4_30 : label is "0x6996"; + attribute initval of LUT4_29 : label is "0x6996"; + attribute initval of LUT4_28 : label is "0x6996"; + attribute initval of LUT4_27 : label is "0x6996"; + attribute initval of LUT4_26 : label is "0x6996"; + attribute initval of LUT4_25 : label is "0x6996"; + attribute initval of LUT4_24 : label is "0x6996"; + attribute initval of LUT4_23 : label is "0x6996"; + attribute initval of LUT4_22 : label is "0x6996"; + attribute initval of LUT4_21 : label is "0x6996"; + attribute initval of LUT4_20 : label is "0x6996"; + attribute initval of LUT4_19 : label is "0x6996"; + attribute initval of LUT4_18 : label is "0x6996"; + attribute initval of LUT4_17 : label is "0x6996"; + attribute initval of LUT4_16 : label is "0x6996"; + attribute initval of LUT4_15 : label is "0x6996"; + attribute initval of LUT4_14 : label is "0x6996"; + attribute initval of LUT4_13 : label is "0x6996"; + attribute initval of LUT4_12 : label is "0x6996"; + attribute initval of LUT4_11 : label is "0x6996"; + attribute initval of LUT4_10 : label is "0x6996"; + attribute initval of LUT4_9 : label is "0x6996"; + attribute initval of LUT4_8 : label is "0x6996"; + attribute initval of LUT4_7 : label is "0x6996"; + attribute initval of LUT4_6 : label is "0x6996"; + attribute initval of LUT4_5 : label is "0x6996"; + attribute initval of LUT4_4 : label is "0x6996"; + attribute initval of LUT4_3 : label is "0x0410"; + attribute initval of LUT4_2 : label is "0x1004"; + attribute initval of LUT4_1 : label is "0x0140"; + attribute initval of LUT4_0 : label is "0x4001"; + attribute MEM_LPC_FILE of pdp_ram_0_0_1 : label is "fifo_4096x9.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_0_1 : label is ""; + attribute CSDECODE_B of pdp_ram_0_0_1 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_0_1 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_0_1 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_0_1 : label is "NORMAL"; + attribute GSR of pdp_ram_0_0_1 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_0_1 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_0_1 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_0_1 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_0_1 : label is "9"; + attribute DATA_WIDTH_A of pdp_ram_0_0_1 : label is "9"; + attribute MEM_LPC_FILE of pdp_ram_1_0_0 : label is "fifo_4096x9.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_0_0 : label is ""; + attribute CSDECODE_B of pdp_ram_1_0_0 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_0_0 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_0_0 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_0_0 : label is "NORMAL"; + attribute GSR of pdp_ram_1_0_0 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_0_0 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_0_0 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_0_0 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_0_0 : label is "9"; + attribute DATA_WIDTH_A of pdp_ram_1_0_0 : label is "9"; + attribute GSR of FF_132 : label is "ENABLED"; + attribute GSR of FF_131 : label is "ENABLED"; + attribute GSR of FF_130 : label is "ENABLED"; + attribute GSR of FF_129 : label is "ENABLED"; + attribute GSR of FF_128 : label is "ENABLED"; + attribute GSR of FF_127 : label is "ENABLED"; + attribute GSR of FF_126 : label is "ENABLED"; + attribute GSR of FF_125 : label is "ENABLED"; + attribute GSR of FF_124 : label is "ENABLED"; + attribute GSR of FF_123 : label is "ENABLED"; + attribute GSR of FF_122 : label is "ENABLED"; + attribute GSR of FF_121 : label is "ENABLED"; + attribute GSR of FF_120 : label is "ENABLED"; + attribute GSR of FF_119 : label is "ENABLED"; + attribute GSR of FF_118 : label is "ENABLED"; + attribute GSR of FF_117 : label is "ENABLED"; + attribute GSR of FF_116 : label is "ENABLED"; + attribute GSR of FF_115 : label is "ENABLED"; + attribute GSR of FF_114 : label is "ENABLED"; + attribute GSR of FF_113 : label is "ENABLED"; + attribute GSR of FF_112 : label is "ENABLED"; + attribute GSR of FF_111 : label is "ENABLED"; + attribute GSR of FF_110 : label is "ENABLED"; + attribute GSR of FF_109 : label is "ENABLED"; + attribute GSR of FF_108 : label is "ENABLED"; + attribute GSR of FF_107 : label is "ENABLED"; + attribute GSR of FF_106 : label is "ENABLED"; + attribute GSR of FF_105 : label is "ENABLED"; + attribute GSR of FF_104 : label is "ENABLED"; + attribute GSR of FF_103 : label is "ENABLED"; + attribute GSR of FF_102 : label is "ENABLED"; + attribute GSR of FF_101 : label is "ENABLED"; + attribute GSR of FF_100 : label is "ENABLED"; + attribute GSR of FF_99 : label is "ENABLED"; + attribute GSR of FF_98 : label is "ENABLED"; + attribute GSR of FF_97 : label is "ENABLED"; + attribute GSR of FF_96 : label is "ENABLED"; + attribute GSR of FF_95 : label is "ENABLED"; + attribute GSR of FF_94 : label is "ENABLED"; + attribute GSR of FF_93 : label is "ENABLED"; + attribute GSR of FF_92 : label is "ENABLED"; + attribute GSR of FF_91 : label is "ENABLED"; + attribute GSR of FF_90 : label is "ENABLED"; + attribute GSR of FF_89 : label is "ENABLED"; + attribute GSR of FF_88 : label is "ENABLED"; + attribute GSR of FF_87 : label is "ENABLED"; + attribute GSR of FF_86 : label is "ENABLED"; + attribute GSR of FF_85 : label is "ENABLED"; + attribute GSR of FF_84 : label is "ENABLED"; + attribute GSR of FF_83 : label is "ENABLED"; + attribute GSR of FF_82 : label is "ENABLED"; + attribute GSR of FF_81 : label is "ENABLED"; + attribute GSR of FF_80 : label is "ENABLED"; + attribute GSR of FF_79 : label is "ENABLED"; + attribute GSR of FF_78 : label is "ENABLED"; + attribute GSR of FF_77 : label is "ENABLED"; + attribute GSR of FF_76 : label is "ENABLED"; + attribute GSR of FF_75 : label is "ENABLED"; + attribute GSR of FF_74 : label is "ENABLED"; + attribute GSR of FF_73 : label is "ENABLED"; + attribute GSR of FF_72 : label is "ENABLED"; + attribute GSR of FF_71 : label is "ENABLED"; + attribute GSR of FF_70 : label is "ENABLED"; + attribute GSR of FF_69 : label is "ENABLED"; + attribute GSR of FF_68 : label is "ENABLED"; + attribute GSR of FF_67 : label is "ENABLED"; + attribute GSR of FF_66 : label is "ENABLED"; + attribute GSR of FF_65 : label is "ENABLED"; + attribute GSR of FF_64 : label is "ENABLED"; + attribute GSR of FF_63 : label is "ENABLED"; + attribute GSR of FF_62 : label is "ENABLED"; + attribute GSR of FF_61 : label is "ENABLED"; + attribute GSR of FF_60 : label is "ENABLED"; + attribute GSR of FF_59 : label is "ENABLED"; + attribute GSR of FF_58 : label is "ENABLED"; + attribute GSR of FF_57 : label is "ENABLED"; + attribute GSR of FF_56 : label is "ENABLED"; + attribute GSR of FF_55 : label is "ENABLED"; + attribute GSR of FF_54 : label is "ENABLED"; + attribute GSR of FF_53 : label is "ENABLED"; + attribute GSR of FF_52 : label is "ENABLED"; + attribute GSR of FF_51 : label is "ENABLED"; + attribute GSR of FF_50 : label is "ENABLED"; + attribute GSR of FF_49 : label is "ENABLED"; + attribute GSR of FF_48 : label is "ENABLED"; + attribute GSR of FF_47 : label is "ENABLED"; + attribute GSR of FF_46 : label is "ENABLED"; + attribute GSR of FF_45 : label is "ENABLED"; + attribute GSR of FF_44 : label is "ENABLED"; + attribute GSR of FF_43 : label is "ENABLED"; + attribute GSR of FF_42 : label is "ENABLED"; + attribute GSR of FF_41 : label is "ENABLED"; + attribute GSR of FF_40 : label is "ENABLED"; + attribute GSR of FF_39 : label is "ENABLED"; + attribute GSR of FF_38 : label is "ENABLED"; + attribute GSR of FF_37 : label is "ENABLED"; + attribute GSR of FF_36 : label is "ENABLED"; + attribute GSR of FF_35 : label is "ENABLED"; + attribute GSR of FF_34 : label is "ENABLED"; + attribute GSR of FF_33 : label is "ENABLED"; + attribute GSR of FF_32 : label is "ENABLED"; + attribute GSR of FF_31 : label is "ENABLED"; + attribute GSR of FF_30 : label is "ENABLED"; + attribute GSR of FF_29 : label is "ENABLED"; + attribute GSR of FF_28 : label is "ENABLED"; + attribute GSR of FF_27 : label is "ENABLED"; + attribute GSR of FF_26 : label is "ENABLED"; + attribute GSR of FF_25 : label is "ENABLED"; + attribute GSR of FF_24 : label is "ENABLED"; + attribute GSR of FF_23 : label is "ENABLED"; + attribute GSR of FF_22 : label is "ENABLED"; + attribute GSR of FF_21 : label is "ENABLED"; + attribute GSR of FF_20 : label is "ENABLED"; + attribute GSR of FF_19 : label is "ENABLED"; + attribute GSR of FF_18 : label is "ENABLED"; + attribute GSR of FF_17 : label is "ENABLED"; + attribute GSR of FF_16 : label is "ENABLED"; + attribute GSR of FF_15 : label is "ENABLED"; + attribute GSR of FF_14 : label is "ENABLED"; + attribute GSR of FF_13 : label is "ENABLED"; + attribute GSR of FF_12 : label is "ENABLED"; + attribute GSR of FF_11 : label is "ENABLED"; + attribute GSR of FF_10 : label is "ENABLED"; + attribute GSR of FF_9 : label is "ENABLED"; + attribute GSR of FF_8 : label is "ENABLED"; + attribute GSR of FF_7 : label is "ENABLED"; + attribute GSR of FF_6 : label is "ENABLED"; + attribute GSR of FF_5 : label is "ENABLED"; + attribute GSR of FF_4 : label is "ENABLED"; + attribute GSR of FF_3 : label is "ENABLED"; + attribute GSR of FF_2 : label is "ENABLED"; + attribute GSR of FF_1 : label is "ENABLED"; + attribute GSR of FF_0 : label is "ENABLED"; + attribute syn_keep : boolean; + +begin + -- component instantiation statements + AND2_t26: AND2 + port map (A=>WrEn, B=>invout_1, Z=>wren_i); + + INV_1: INV + port map (A=>full_i, Z=>invout_1); + + AND2_t25: AND2 + port map (A=>RdEn, B=>invout_0, Z=>rden_i); + + INV_0: INV + port map (A=>empty_i, Z=>invout_0); + + OR2_t24: OR2 + port map (A=>Reset, B=>RPReset, Z=>rRst); + + XOR2_t23: XOR2 + port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); + + XOR2_t22: XOR2 + port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); + + XOR2_t21: XOR2 + port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); + + XOR2_t20: XOR2 + port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); + + XOR2_t19: XOR2 + port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); + + XOR2_t18: XOR2 + port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); + + XOR2_t17: XOR2 + port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); + + XOR2_t16: XOR2 + port map (A=>wcount_7, B=>wcount_8, Z=>w_gdata_7); + + XOR2_t15: XOR2 + port map (A=>wcount_8, B=>wcount_9, Z=>w_gdata_8); + + XOR2_t14: XOR2 + port map (A=>wcount_9, B=>wcount_10, Z=>w_gdata_9); + + XOR2_t13: XOR2 + port map (A=>wcount_10, B=>wcount_11, Z=>w_gdata_10); + + XOR2_t12: XOR2 + port map (A=>wcount_11, B=>wcount_12, Z=>w_gdata_11); + + XOR2_t11: XOR2 + port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); + + XOR2_t10: XOR2 + port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); + + XOR2_t9: XOR2 + port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); + + XOR2_t8: XOR2 + port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); + + XOR2_t7: XOR2 + port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); + + XOR2_t6: XOR2 + port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); + + XOR2_t5: XOR2 + port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); + + XOR2_t4: XOR2 + port map (A=>rcount_7, B=>rcount_8, Z=>r_gdata_7); + + XOR2_t3: XOR2 + port map (A=>rcount_8, B=>rcount_9, Z=>r_gdata_8); + + XOR2_t2: XOR2 + port map (A=>rcount_9, B=>rcount_10, Z=>r_gdata_9); + + XOR2_t1: XOR2 + port map (A=>rcount_10, B=>rcount_11, Z=>r_gdata_10); + + XOR2_t0: XOR2 + port map (A=>rcount_11, B=>rcount_12, Z=>r_gdata_11); + + LUT4_33: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r29, AD2=>w_gcount_r210, + AD1=>w_gcount_r211, AD0=>w_gcount_r212, + DO0=>w_g2b_xor_cluster_0); + + LUT4_32: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r25, AD2=>w_gcount_r26, + AD1=>w_gcount_r27, AD0=>w_gcount_r28, + DO0=>w_g2b_xor_cluster_1); + + LUT4_31: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r21, AD2=>w_gcount_r22, + AD1=>w_gcount_r23, AD0=>w_gcount_r24, + DO0=>w_g2b_xor_cluster_2); + + LUT4_30: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r211, AD2=>w_gcount_r212, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>wcount_r11); + + LUT4_29: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r210, AD2=>w_gcount_r211, + AD1=>w_gcount_r212, AD0=>scuba_vlo, DO0=>wcount_r10); + + LUT4_28: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r28, AD2=>w_gcount_r29, + AD1=>w_gcount_r210, AD0=>wcount_r11, DO0=>wcount_r8); + + LUT4_27: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r27, AD2=>w_gcount_r28, + AD1=>w_gcount_r29, AD0=>wcount_r10, DO0=>wcount_r7); + + LUT4_26: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r26, AD2=>w_gcount_r27, + AD1=>w_gcount_r28, AD0=>w_g2b_xor_cluster_0, DO0=>wcount_r6); + + LUT4_25: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r5); + + LUT4_24: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r24, AD0=>scuba_vlo, DO0=>wcount_r4); + + LUT4_23: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r23, AD0=>w_gcount_r24, DO0=>wcount_r3); + + LUT4_22: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r22, AD2=>w_gcount_r23, + AD1=>w_gcount_r24, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_2_1); + + LUT4_21: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>wcount_r2); + + LUT4_20: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>wcount_r1); + + LUT4_19: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_gcount_r20, DO0=>wcount_r0); + + LUT4_18: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w29, AD2=>r_gcount_w210, + AD1=>r_gcount_w211, AD0=>r_gcount_w212, + DO0=>r_g2b_xor_cluster_0); + + LUT4_17: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w25, AD2=>r_gcount_w26, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, + DO0=>r_g2b_xor_cluster_1); + + LUT4_16: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w21, AD2=>r_gcount_w22, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, + DO0=>r_g2b_xor_cluster_2); + + LUT4_15: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w211, AD2=>r_gcount_w212, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>rcount_w11); + + LUT4_14: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w210, AD2=>r_gcount_w211, + AD1=>r_gcount_w212, AD0=>scuba_vlo, DO0=>rcount_w10); + + LUT4_13: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w28, AD2=>r_gcount_w29, + AD1=>r_gcount_w210, AD0=>rcount_w11, DO0=>rcount_w8); + + LUT4_12: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w27, AD2=>r_gcount_w28, + AD1=>r_gcount_w29, AD0=>rcount_w10, DO0=>rcount_w7); + + LUT4_11: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w26, AD2=>r_gcount_w27, + AD1=>r_gcount_w28, AD0=>r_g2b_xor_cluster_0, DO0=>rcount_w6); + + LUT4_10: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w5); + + LUT4_9: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w24, AD0=>scuba_vlo, DO0=>rcount_w4); + + LUT4_8: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, DO0=>rcount_w3); + + LUT4_7: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w22, AD2=>r_gcount_w23, + AD1=>r_gcount_w24, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_2_1); + + LUT4_6: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>rcount_w2); + + LUT4_5: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>rcount_w1); + + LUT4_4: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_gcount_w20, DO0=>rcount_w0); + + LUT4_3: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0410") + -- synopsys translate_on + port map (AD3=>rptr_12, AD2=>rcount_12, AD1=>w_gcount_r212, + AD0=>scuba_vlo, DO0=>empty_cmp_set); + + LUT4_2: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x1004") + -- synopsys translate_on + port map (AD3=>rptr_12, AD2=>rcount_12, AD1=>w_gcount_r212, + AD0=>scuba_vlo, DO0=>empty_cmp_clr); + + LUT4_1: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0140") + -- synopsys translate_on + port map (AD3=>wptr_12, AD2=>wcount_12, AD1=>r_gcount_w212, + AD0=>scuba_vlo, DO0=>full_cmp_set); + + LUT4_0: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x4001") + -- synopsys translate_on + port map (AD3=>wptr_12, AD2=>wcount_12, AD1=>r_gcount_w212, + AD0=>scuba_vlo, DO0=>full_cmp_clr); + + pdp_ram_0_0_1: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 9, + DATA_WIDTH_A=> 9) + -- synopsys translate_on + port map (DIA0=>Data(0), DIA1=>Data(1), DIA2=>Data(2), + DIA3=>Data(3), DIA4=>Data(4), DIA5=>Data(5), DIA6=>Data(6), + DIA7=>Data(7), DIA8=>Data(8), DIA9=>scuba_vlo, + DIA10=>scuba_vlo, DIA11=>scuba_vlo, DIA12=>scuba_vlo, + DIA13=>scuba_vlo, DIA14=>scuba_vlo, DIA15=>scuba_vlo, + DIA16=>scuba_vlo, DIA17=>scuba_vlo, ADA0=>scuba_vlo, + ADA1=>scuba_vlo, ADA2=>scuba_vlo, ADA3=>wptr_0, ADA4=>wptr_1, + ADA5=>wptr_2, ADA6=>wptr_3, ADA7=>wptr_4, ADA8=>wptr_5, + ADA9=>wptr_6, ADA10=>wptr_7, ADA11=>wptr_8, ADA12=>wptr_9, + ADA13=>wptr_10, CEA=>wren_i, CLKA=>WrClock, WEA=>scuba_vhi, + CSA0=>wptr_11, CSA1=>scuba_vlo, CSA2=>scuba_vlo, RSTA=>Reset, + DIB0=>scuba_vlo, DIB1=>scuba_vlo, DIB2=>scuba_vlo, + DIB3=>scuba_vlo, DIB4=>scuba_vlo, DIB5=>scuba_vlo, + DIB6=>scuba_vlo, DIB7=>scuba_vlo, DIB8=>scuba_vlo, + DIB9=>scuba_vlo, DIB10=>scuba_vlo, DIB11=>scuba_vlo, + DIB12=>scuba_vlo, DIB13=>scuba_vlo, DIB14=>scuba_vlo, + DIB15=>scuba_vlo, DIB16=>scuba_vlo, DIB17=>scuba_vlo, + ADB0=>scuba_vlo, ADB1=>scuba_vlo, ADB2=>scuba_vlo, + ADB3=>rptr_0, ADB4=>rptr_1, ADB5=>rptr_2, ADB6=>rptr_3, + ADB7=>rptr_4, ADB8=>rptr_5, ADB9=>rptr_6, ADB10=>rptr_7, + ADB11=>rptr_8, ADB12=>rptr_9, ADB13=>rptr_10, CEB=>rden_i, + CLKB=>RdClock, WEB=>scuba_vlo, CSB0=>rptr_11, + CSB1=>scuba_vlo, CSB2=>scuba_vlo, RSTB=>Reset, DOA0=>open, + DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, DOA5=>open, + DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, DOA10=>open, + DOA11=>open, DOA12=>open, DOA13=>open, DOA14=>open, + DOA15=>open, DOA16=>open, DOA17=>open, DOB0=>mdout1_0_0, + DOB1=>mdout1_0_1, DOB2=>mdout1_0_2, DOB3=>mdout1_0_3, + DOB4=>mdout1_0_4, DOB5=>mdout1_0_5, DOB6=>mdout1_0_6, + DOB7=>mdout1_0_7, DOB8=>mdout1_0_8, DOB9=>open, DOB10=>open, + DOB11=>open, DOB12=>open, DOB13=>open, DOB14=>open, + DOB15=>open, DOB16=>open, DOB17=>open); + + pdp_ram_1_0_0: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 9, + DATA_WIDTH_A=> 9) + -- synopsys translate_on + port map (DIA0=>Data(0), DIA1=>Data(1), DIA2=>Data(2), + DIA3=>Data(3), DIA4=>Data(4), DIA5=>Data(5), DIA6=>Data(6), + DIA7=>Data(7), DIA8=>Data(8), DIA9=>scuba_vlo, + DIA10=>scuba_vlo, DIA11=>scuba_vlo, DIA12=>scuba_vlo, + DIA13=>scuba_vlo, DIA14=>scuba_vlo, DIA15=>scuba_vlo, + DIA16=>scuba_vlo, DIA17=>scuba_vlo, ADA0=>scuba_vlo, + ADA1=>scuba_vlo, ADA2=>scuba_vlo, ADA3=>wptr_0, ADA4=>wptr_1, + ADA5=>wptr_2, ADA6=>wptr_3, ADA7=>wptr_4, ADA8=>wptr_5, + ADA9=>wptr_6, ADA10=>wptr_7, ADA11=>wptr_8, ADA12=>wptr_9, + ADA13=>wptr_10, CEA=>wren_i, CLKA=>WrClock, WEA=>scuba_vhi, + CSA0=>wptr_11, CSA1=>scuba_vlo, CSA2=>scuba_vlo, RSTA=>Reset, + DIB0=>scuba_vlo, DIB1=>scuba_vlo, DIB2=>scuba_vlo, + DIB3=>scuba_vlo, DIB4=>scuba_vlo, DIB5=>scuba_vlo, + DIB6=>scuba_vlo, DIB7=>scuba_vlo, DIB8=>scuba_vlo, + DIB9=>scuba_vlo, DIB10=>scuba_vlo, DIB11=>scuba_vlo, + DIB12=>scuba_vlo, DIB13=>scuba_vlo, DIB14=>scuba_vlo, + DIB15=>scuba_vlo, DIB16=>scuba_vlo, DIB17=>scuba_vlo, + ADB0=>scuba_vlo, ADB1=>scuba_vlo, ADB2=>scuba_vlo, + ADB3=>rptr_0, ADB4=>rptr_1, ADB5=>rptr_2, ADB6=>rptr_3, + ADB7=>rptr_4, ADB8=>rptr_5, ADB9=>rptr_6, ADB10=>rptr_7, + ADB11=>rptr_8, ADB12=>rptr_9, ADB13=>rptr_10, CEB=>rden_i, + CLKB=>RdClock, WEB=>scuba_vlo, CSB0=>rptr_11, + CSB1=>scuba_vlo, CSB2=>scuba_vlo, RSTB=>Reset, DOA0=>open, + DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, DOA5=>open, + DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, DOA10=>open, + DOA11=>open, DOA12=>open, DOA13=>open, DOA14=>open, + DOA15=>open, DOA16=>open, DOA17=>open, DOB0=>mdout1_1_0, + DOB1=>mdout1_1_1, DOB2=>mdout1_1_2, DOB3=>mdout1_1_3, + DOB4=>mdout1_1_4, DOB5=>mdout1_1_5, DOB6=>mdout1_1_6, + DOB7=>mdout1_1_7, DOB8=>mdout1_1_8, DOB9=>open, DOB10=>open, + DOB11=>open, DOB12=>open, DOB13=>open, DOB14=>open, + DOB15=>open, DOB16=>open, DOB17=>open); + + FF_132: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset, + Q=>wcount_0); + + FF_131: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_1); + + FF_130: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_2); + + FF_129: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_3); + + FF_128: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_4); + + FF_127: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_5); + + FF_126: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_6); + + FF_125: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_7); + + FF_124: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_8); + + FF_123: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_9); + + FF_122: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_10); + + FF_121: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_11); + + FF_120: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_12); + + FF_119: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_0); + + FF_118: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_1); + + FF_117: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_2); + + FF_116: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_3); + + FF_115: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_4); + + FF_114: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_5); + + FF_113: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_6); + + FF_112: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_7); + + FF_111: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_8); + + FF_110: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_9); + + FF_109: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_10); + + FF_108: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_11); + + FF_107: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_12); + + FF_106: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_0); + + FF_105: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_1); + + FF_104: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_2); + + FF_103: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_3); + + FF_102: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_4); + + FF_101: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_5); + + FF_100: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_6); + + FF_99: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_7); + + FF_98: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_8); + + FF_97: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_9); + + FF_96: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_10); + + FF_95: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_11); + + FF_94: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_12); + + FF_93: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_0, SP=>rden_i, CK=>RdClock, PD=>rRst, + Q=>rcount_0); + + FF_92: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_1); + + FF_91: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_2); + + FF_90: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_3); + + FF_89: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_4); + + FF_88: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_5); + + FF_87: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_6); + + FF_86: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_7); + + FF_85: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_8); + + FF_84: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_9); + + FF_83: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_10); + + FF_82: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_11); + + FF_81: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_12); + + FF_80: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_0); + + FF_79: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_1); + + FF_78: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_2); + + FF_77: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_3); + + FF_76: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_4); + + FF_75: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_5); + + FF_74: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_6); + + FF_73: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_7); + + FF_72: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_8); + + FF_71: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_9); + + FF_70: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_10); + + FF_69: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_11); + + FF_68: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_12); + + FF_67: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_0); + + FF_66: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_1); + + FF_65: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_2); + + FF_64: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_3); + + FF_63: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_4); + + FF_62: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_5); + + FF_61: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_6); + + FF_60: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_7); + + FF_59: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_8); + + FF_58: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_9); + + FF_57: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_10); + + FF_56: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_11); + + FF_55: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_12); + + FF_54: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rptr_11, SP=>rden_i, CK=>RdClock, CD=>scuba_vlo, + Q=>rptr_11_ff); + + FF_53: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_0, CK=>RdClock, CD=>Reset, Q=>w_gcount_r0); + + FF_52: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_1, CK=>RdClock, CD=>Reset, Q=>w_gcount_r1); + + FF_51: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_2, CK=>RdClock, CD=>Reset, Q=>w_gcount_r2); + + FF_50: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_3, CK=>RdClock, CD=>Reset, Q=>w_gcount_r3); + + FF_49: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_4, CK=>RdClock, CD=>Reset, Q=>w_gcount_r4); + + FF_48: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_5, CK=>RdClock, CD=>Reset, Q=>w_gcount_r5); + + FF_47: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_6, CK=>RdClock, CD=>Reset, Q=>w_gcount_r6); + + FF_46: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_7, CK=>RdClock, CD=>Reset, Q=>w_gcount_r7); + + FF_45: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_8, CK=>RdClock, CD=>Reset, Q=>w_gcount_r8); + + FF_44: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_9, CK=>RdClock, CD=>Reset, Q=>w_gcount_r9); + + FF_43: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r10); + + FF_42: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r11); + + FF_41: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r12); + + FF_40: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w0); + + FF_39: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w1); + + FF_38: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w2); + + FF_37: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w3); + + FF_36: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w4); + + FF_35: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w5); + + FF_34: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w6); + + FF_33: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w7); + + FF_32: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w8); + + FF_31: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w9); + + FF_30: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_10, CK=>WrClock, CD=>rRst, Q=>r_gcount_w10); + + FF_29: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_11, CK=>WrClock, CD=>rRst, Q=>r_gcount_w11); + + FF_28: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_12, CK=>WrClock, CD=>rRst, Q=>r_gcount_w12); + + FF_27: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r0, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r20); + + FF_26: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r1, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r21); + + FF_25: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r2, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r22); + + FF_24: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r3, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r23); + + FF_23: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r4, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r24); + + FF_22: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r5, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r25); + + FF_21: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r6, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r26); + + FF_20: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r7, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r27); + + FF_19: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r8, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r28); + + FF_18: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r9, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r29); + + FF_17: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r210); + + FF_16: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r211); + + FF_15: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r212); + + FF_14: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w20); + + FF_13: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w21); + + FF_12: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w22); + + FF_11: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w23); + + FF_10: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w24); + + FF_9: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w25); + + FF_8: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w26); + + FF_7: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); + + FF_6: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w28); + + FF_5: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w29); + + FF_4: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w10, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w210); + + FF_3: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w11, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w211); + + FF_2: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w12, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w212); + + FF_1: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); + + FF_0: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); + + w_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>w_gctr_ci, S0=>open, + S1=>open); + + w_gctr_0: CU2 + port map (CI=>w_gctr_ci, PC0=>wcount_0, PC1=>wcount_1, CO=>co0, + NC0=>iwcount_0, NC1=>iwcount_1); + + w_gctr_1: CU2 + port map (CI=>co0, PC0=>wcount_2, PC1=>wcount_3, CO=>co1, + NC0=>iwcount_2, NC1=>iwcount_3); + + w_gctr_2: CU2 + port map (CI=>co1, PC0=>wcount_4, PC1=>wcount_5, CO=>co2, + NC0=>iwcount_4, NC1=>iwcount_5); + + w_gctr_3: CU2 + port map (CI=>co2, PC0=>wcount_6, PC1=>wcount_7, CO=>co3, + NC0=>iwcount_6, NC1=>iwcount_7); + + w_gctr_4: CU2 + port map (CI=>co3, PC0=>wcount_8, PC1=>wcount_9, CO=>co4, + NC0=>iwcount_8, NC1=>iwcount_9); + + w_gctr_5: CU2 + port map (CI=>co4, PC0=>wcount_10, PC1=>wcount_11, CO=>co5, + NC0=>iwcount_10, NC1=>iwcount_11); + + w_gctr_6: CU2 + port map (CI=>co5, PC0=>wcount_12, PC1=>scuba_vlo, CO=>co6, + NC0=>iwcount_12, NC1=>open); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + r_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>r_gctr_ci, S0=>open, + S1=>open); + + r_gctr_0: CU2 + port map (CI=>r_gctr_ci, PC0=>rcount_0, PC1=>rcount_1, CO=>co0_1, + NC0=>ircount_0, NC1=>ircount_1); + + r_gctr_1: CU2 + port map (CI=>co0_1, PC0=>rcount_2, PC1=>rcount_3, CO=>co1_1, + NC0=>ircount_2, NC1=>ircount_3); + + r_gctr_2: CU2 + port map (CI=>co1_1, PC0=>rcount_4, PC1=>rcount_5, CO=>co2_1, + NC0=>ircount_4, NC1=>ircount_5); + + r_gctr_3: CU2 + port map (CI=>co2_1, PC0=>rcount_6, PC1=>rcount_7, CO=>co3_1, + NC0=>ircount_6, NC1=>ircount_7); + + r_gctr_4: CU2 + port map (CI=>co3_1, PC0=>rcount_8, PC1=>rcount_9, CO=>co4_1, + NC0=>ircount_8, NC1=>ircount_9); + + r_gctr_5: CU2 + port map (CI=>co4_1, PC0=>rcount_10, PC1=>rcount_11, CO=>co5_1, + NC0=>ircount_10, NC1=>ircount_11); + + r_gctr_6: CU2 + port map (CI=>co5_1, PC0=>rcount_12, PC1=>scuba_vlo, CO=>co6_1, + NC0=>ircount_12, NC1=>open); + + mux_8: MUX21 + port map (D0=>mdout1_0_0, D1=>mdout1_1_0, SD=>rptr_11_ff, + Z=>Q(0)); + + mux_7: MUX21 + port map (D0=>mdout1_0_1, D1=>mdout1_1_1, SD=>rptr_11_ff, + Z=>Q(1)); + + mux_6: MUX21 + port map (D0=>mdout1_0_2, D1=>mdout1_1_2, SD=>rptr_11_ff, + Z=>Q(2)); + + mux_5: MUX21 + port map (D0=>mdout1_0_3, D1=>mdout1_1_3, SD=>rptr_11_ff, + Z=>Q(3)); + + mux_4: MUX21 + port map (D0=>mdout1_0_4, D1=>mdout1_1_4, SD=>rptr_11_ff, + Z=>Q(4)); + + mux_3: MUX21 + port map (D0=>mdout1_0_5, D1=>mdout1_1_5, SD=>rptr_11_ff, + Z=>Q(5)); + + mux_2: MUX21 + port map (D0=>mdout1_0_6, D1=>mdout1_1_6, SD=>rptr_11_ff, + Z=>Q(6)); + + mux_1: MUX21 + port map (D0=>mdout1_0_7, D1=>mdout1_1_7, SD=>rptr_11_ff, + Z=>Q(7)); + + mux_0: MUX21 + port map (D0=>mdout1_0_8, D1=>mdout1_1_8, SD=>rptr_11_ff, + Z=>Q(8)); + + empty_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci, S0=>open, S1=>open); + + empty_cmp_0: AGEB2 + port map (A0=>rcount_0, A1=>rcount_1, B0=>wcount_r0, + B1=>wcount_r1, CI=>cmp_ci, GE=>co0_2); + + empty_cmp_1: AGEB2 + port map (A0=>rcount_2, A1=>rcount_3, B0=>wcount_r2, + B1=>wcount_r3, CI=>co0_2, GE=>co1_2); + + empty_cmp_2: AGEB2 + port map (A0=>rcount_4, A1=>rcount_5, B0=>wcount_r4, + B1=>wcount_r5, CI=>co1_2, GE=>co2_2); + + empty_cmp_3: AGEB2 + port map (A0=>rcount_6, A1=>rcount_7, B0=>wcount_r6, + B1=>wcount_r7, CI=>co2_2, GE=>co3_2); + + empty_cmp_4: AGEB2 + port map (A0=>rcount_8, A1=>rcount_9, B0=>wcount_r8, + B1=>w_g2b_xor_cluster_0, CI=>co3_2, GE=>co4_2); + + empty_cmp_5: AGEB2 + port map (A0=>rcount_10, A1=>rcount_11, B0=>wcount_r10, + B1=>wcount_r11, CI=>co4_2, GE=>co5_2); + + empty_cmp_6: AGEB2 + port map (A0=>empty_cmp_set, A1=>scuba_vlo, B0=>empty_cmp_clr, + B1=>scuba_vlo, CI=>co5_2, GE=>empty_d_c); + + a0: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>empty_d_c, COUT=>open, S0=>empty_d, + S1=>open); + + full_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_1, S0=>open, S1=>open); + + full_cmp_0: AGEB2 + port map (A0=>wcount_0, A1=>wcount_1, B0=>rcount_w0, + B1=>rcount_w1, CI=>cmp_ci_1, GE=>co0_3); + + full_cmp_1: AGEB2 + port map (A0=>wcount_2, A1=>wcount_3, B0=>rcount_w2, + B1=>rcount_w3, CI=>co0_3, GE=>co1_3); + + full_cmp_2: AGEB2 + port map (A0=>wcount_4, A1=>wcount_5, B0=>rcount_w4, + B1=>rcount_w5, CI=>co1_3, GE=>co2_3); + + full_cmp_3: AGEB2 + port map (A0=>wcount_6, A1=>wcount_7, B0=>rcount_w6, + B1=>rcount_w7, CI=>co2_3, GE=>co3_3); + + full_cmp_4: AGEB2 + port map (A0=>wcount_8, A1=>wcount_9, B0=>rcount_w8, + B1=>r_g2b_xor_cluster_0, CI=>co3_3, GE=>co4_3); + + full_cmp_5: AGEB2 + port map (A0=>wcount_10, A1=>wcount_11, B0=>rcount_w10, + B1=>rcount_w11, CI=>co4_3, GE=>co5_3); + + full_cmp_6: AGEB2 + port map (A0=>full_cmp_set, A1=>scuba_vlo, B0=>full_cmp_clr, + B1=>scuba_vlo, CI=>co5_3, GE=>full_d_c); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + a1: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, + S1=>open); + + Empty <= empty_i; + Full <= full_i; +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of fifo_4096x9 is + for Structure + for all:AGEB2 use entity ecp2m.AGEB2(V); end for; + for all:AND2 use entity ecp2m.AND2(V); end for; + for all:CU2 use entity ecp2m.CU2(V); end for; + for all:FADD2B use entity ecp2m.FADD2B(V); end for; + for all:FD1P3BX use entity ecp2m.FD1P3BX(V); end for; + for all:FD1P3DX use entity ecp2m.FD1P3DX(V); end for; + for all:FD1S3BX use entity ecp2m.FD1S3BX(V); end for; + for all:FD1S3DX use entity ecp2m.FD1S3DX(V); end for; + for all:INV use entity ecp2m.INV(V); end for; + for all:MUX21 use entity ecp2m.MUX21(V); end for; + for all:OR2 use entity ecp2m.OR2(V); end for; + for all:ROM16X1 use entity ecp2m.ROM16X1(V); end for; + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:XOR2 use entity ecp2m.XOR2(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/fifo_4096x9_tmpl.vhd b/gbe_ecp2m/ipcores/fifo_4096x9_tmpl.vhd new file mode 100755 index 0000000..f754d74 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_4096x9_tmpl.vhd @@ -0,0 +1,18 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +-- Tue Jan 5 23:44:15 2010 + +-- parameterized module component declaration +component fifo_4096x9 + port (Data: in std_logic_vector(8 downto 0); WrClock: in std_logic; + RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; + Reset: in std_logic; RPReset: in std_logic; + Q: out std_logic_vector(8 downto 0); Empty: out std_logic; + Full: out std_logic); +end component; + +-- parameterized module component instance +__ : fifo_4096x9 + port map (Data(8 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, + RdEn=>__, Reset=>__, RPReset=>__, Q(8 downto 0)=>__, Empty=>__, + Full=>__); diff --git a/gbe_ecp2m/ipcores/fifo_64kx8.lpc b/gbe_ecp2m/ipcores/fifo_64kx8.lpc new file mode 100755 index 0000000..3d27821 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_64kx8.lpc @@ -0,0 +1,47 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=FIFO_DC +CoreRevision=5.2 +ModuleName=fifo_64kx8 +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=12/26/2009 +Time=00:12:05 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +FIFOImp=EBR Based +Depth=65536 +Width=8 +RDepth=65536 +RWidth=8 +regout=0 +CtrlByRdEn=0 +EmpFlg=0 +PeMode=Static - Dual Threshold +PeAssert=10 +PeDeassert=12 +FullFlg=0 +PfMode=Static - Dual Threshold +PfAssert=508 +PfDeassert=506 +RDataCount=0 +WDataCount=0 +EnECC=0 diff --git a/gbe_ecp2m/ipcores/fifo_64kx8.vhd b/gbe_ecp2m/ipcores/fifo_64kx8.vhd new file mode 100755 index 0000000..ba79880 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_64kx8.vhd @@ -0,0 +1,4435 @@ +-- VHDL netlist generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +--/opt/lattice/ispLEVER7.2/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type ebfifo -depth 65536 -width 8 -depth 65536 -rdata_width 8 -no_enable -pe -1 -pf -1 -e + +-- Sat Dec 26 00:12:05 2009 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity fifo_64kx8 is + port ( + Data: in std_logic_vector(7 downto 0); + WrClock: in std_logic; + RdClock: in std_logic; + WrEn: in std_logic; + RdEn: in std_logic; + Reset: in std_logic; + RPReset: in std_logic; + Q: out std_logic_vector(7 downto 0); + Empty: out std_logic; + Full: out std_logic); +end fifo_64kx8; + +architecture Structure of fifo_64kx8 is + + -- internal signal declarations + signal invout_1: std_logic; + signal invout_0: std_logic; + signal w_g2b_xor_cluster_2_1: std_logic; + signal w_g2b_xor_cluster_3_1: std_logic; + signal w_g2b_xor_cluster_3_2: std_logic; + signal w_g2b_xor_cluster_3: std_logic; + signal w_g2b_xor_cluster_2: std_logic; + signal w_g2b_xor_cluster_1: std_logic; + signal func_xor_inet_3: std_logic; + signal func_xor_inet_2: std_logic; + signal func_xor_inet_1: std_logic; + signal func_xor_inet: std_logic; + signal func_xor_inet_4: std_logic; + signal func_xor_inet_5: std_logic; + signal r_g2b_xor_cluster_2_1: std_logic; + signal r_g2b_xor_cluster_3_1: std_logic; + signal r_g2b_xor_cluster_3_2: std_logic; + signal r_g2b_xor_cluster_3: std_logic; + signal r_g2b_xor_cluster_2: std_logic; + signal r_g2b_xor_cluster_1: std_logic; + signal func_xor_inet_9: std_logic; + signal func_xor_inet_8: std_logic; + signal func_xor_inet_7: std_logic; + signal func_xor_inet_6: std_logic; + signal func_xor_inet_10: std_logic; + signal func_xor_inet_11: std_logic; + signal w_gdata_0: std_logic; + signal w_gdata_1: std_logic; + signal w_gdata_2: std_logic; + signal w_gdata_3: std_logic; + signal w_gdata_4: std_logic; + signal w_gdata_5: std_logic; + signal w_gdata_6: std_logic; + signal w_gdata_7: std_logic; + signal w_gdata_8: std_logic; + signal w_gdata_9: std_logic; + signal w_gdata_10: std_logic; + signal w_gdata_11: std_logic; + signal w_gdata_12: std_logic; + signal w_gdata_13: std_logic; + signal w_gdata_14: std_logic; + signal w_gdata_15: std_logic; + signal wptr_0: std_logic; + signal wptr_1: std_logic; + signal wptr_2: std_logic; + signal wptr_3: std_logic; + signal wptr_4: std_logic; + signal wptr_5: std_logic; + signal wptr_6: std_logic; + signal wptr_7: std_logic; + signal wptr_8: std_logic; + signal wptr_9: std_logic; + signal wptr_10: std_logic; + signal wptr_11: std_logic; + signal wptr_12: std_logic; + signal wptr_13: std_logic; + signal wptr_14: std_logic; + signal wptr_15: std_logic; + signal wptr_16: std_logic; + signal r_gdata_0: std_logic; + signal r_gdata_1: std_logic; + signal r_gdata_2: std_logic; + signal r_gdata_3: std_logic; + signal r_gdata_4: std_logic; + signal r_gdata_5: std_logic; + signal r_gdata_6: std_logic; + signal r_gdata_7: std_logic; + signal r_gdata_8: std_logic; + signal r_gdata_9: std_logic; + signal r_gdata_10: std_logic; + signal r_gdata_11: std_logic; + signal r_gdata_12: std_logic; + signal r_gdata_13: std_logic; + signal r_gdata_14: std_logic; + signal r_gdata_15: std_logic; + signal rptr_0: std_logic; + signal rptr_1: std_logic; + signal rptr_2: std_logic; + signal rptr_3: std_logic; + signal rptr_4: std_logic; + signal rptr_5: std_logic; + signal rptr_6: std_logic; + signal rptr_7: std_logic; + signal rptr_8: std_logic; + signal rptr_9: std_logic; + signal rptr_10: std_logic; + signal rptr_11: std_logic; + signal rptr_12: std_logic; + signal rptr_13: std_logic; + signal rptr_16: std_logic; + signal rptr_14: std_logic; + signal rptr_15: std_logic; + signal w_gcount_0: std_logic; + signal w_gcount_1: std_logic; + signal w_gcount_2: std_logic; + signal w_gcount_3: std_logic; + signal w_gcount_4: std_logic; + signal w_gcount_5: std_logic; + signal w_gcount_6: std_logic; + signal w_gcount_7: std_logic; + signal w_gcount_8: std_logic; + signal w_gcount_9: std_logic; + signal w_gcount_10: std_logic; + signal w_gcount_11: std_logic; + signal w_gcount_12: std_logic; + signal w_gcount_13: std_logic; + signal w_gcount_14: std_logic; + signal w_gcount_15: std_logic; + signal w_gcount_16: std_logic; + signal r_gcount_0: std_logic; + signal r_gcount_1: std_logic; + signal r_gcount_2: std_logic; + signal r_gcount_3: std_logic; + signal r_gcount_4: std_logic; + signal r_gcount_5: std_logic; + signal r_gcount_6: std_logic; + signal r_gcount_7: std_logic; + signal r_gcount_8: std_logic; + signal r_gcount_9: std_logic; + signal r_gcount_10: std_logic; + signal r_gcount_11: std_logic; + signal r_gcount_12: std_logic; + signal r_gcount_13: std_logic; + signal r_gcount_14: std_logic; + signal r_gcount_15: std_logic; + signal r_gcount_16: std_logic; + signal w_gcount_r20: std_logic; + signal w_gcount_r0: std_logic; + signal w_gcount_r21: std_logic; + signal w_gcount_r1: std_logic; + signal w_gcount_r22: std_logic; + signal w_gcount_r2: std_logic; + signal w_gcount_r23: std_logic; + signal w_gcount_r3: std_logic; + signal w_gcount_r24: std_logic; + signal w_gcount_r4: std_logic; + signal w_gcount_r25: std_logic; + signal w_gcount_r5: std_logic; + signal w_gcount_r26: std_logic; + signal w_gcount_r6: std_logic; + signal w_gcount_r27: std_logic; + signal w_gcount_r7: std_logic; + signal w_gcount_r28: std_logic; + signal w_gcount_r8: std_logic; + signal w_gcount_r29: std_logic; + signal w_gcount_r9: std_logic; + signal w_gcount_r210: std_logic; + signal w_gcount_r10: std_logic; + signal w_gcount_r211: std_logic; + signal w_gcount_r11: std_logic; + signal w_gcount_r212: std_logic; + signal w_gcount_r12: std_logic; + signal w_gcount_r213: std_logic; + signal w_gcount_r13: std_logic; + signal w_gcount_r214: std_logic; + signal w_gcount_r14: std_logic; + signal w_gcount_r215: std_logic; + signal w_gcount_r15: std_logic; + signal w_gcount_r216: std_logic; + signal w_gcount_r16: std_logic; + signal r_gcount_w20: std_logic; + signal r_gcount_w0: std_logic; + signal r_gcount_w21: std_logic; + signal r_gcount_w1: std_logic; + signal r_gcount_w22: std_logic; + signal r_gcount_w2: std_logic; + signal r_gcount_w23: std_logic; + signal r_gcount_w3: std_logic; + signal r_gcount_w24: std_logic; + signal r_gcount_w4: std_logic; + signal r_gcount_w25: std_logic; + signal r_gcount_w5: std_logic; + signal r_gcount_w26: std_logic; + signal r_gcount_w6: std_logic; + signal r_gcount_w27: std_logic; + signal r_gcount_w7: std_logic; + signal r_gcount_w28: std_logic; + signal r_gcount_w8: std_logic; + signal r_gcount_w29: std_logic; + signal r_gcount_w9: std_logic; + signal r_gcount_w210: std_logic; + signal r_gcount_w10: std_logic; + signal r_gcount_w211: std_logic; + signal r_gcount_w11: std_logic; + signal r_gcount_w212: std_logic; + signal r_gcount_w12: std_logic; + signal r_gcount_w213: std_logic; + signal r_gcount_w13: std_logic; + signal r_gcount_w214: std_logic; + signal r_gcount_w14: std_logic; + signal r_gcount_w215: std_logic; + signal r_gcount_w15: std_logic; + signal r_gcount_w216: std_logic; + signal r_gcount_w16: std_logic; + signal empty_i: std_logic; + signal rRst: std_logic; + signal full_i: std_logic; + signal iwcount_0: std_logic; + signal iwcount_1: std_logic; + signal w_gctr_ci: std_logic; + signal iwcount_2: std_logic; + signal iwcount_3: std_logic; + signal co0: std_logic; + signal iwcount_4: std_logic; + signal iwcount_5: std_logic; + signal co1: std_logic; + signal iwcount_6: std_logic; + signal iwcount_7: std_logic; + signal co2: std_logic; + signal iwcount_8: std_logic; + signal iwcount_9: std_logic; + signal co3: std_logic; + signal iwcount_10: std_logic; + signal iwcount_11: std_logic; + signal co4: std_logic; + signal iwcount_12: std_logic; + signal iwcount_13: std_logic; + signal co5: std_logic; + signal iwcount_14: std_logic; + signal iwcount_15: std_logic; + signal co6: std_logic; + signal iwcount_16: std_logic; + signal co8: std_logic; + signal wcount_16: std_logic; + signal co7: std_logic; + signal scuba_vhi: std_logic; + signal ircount_0: std_logic; + signal ircount_1: std_logic; + signal r_gctr_ci: std_logic; + signal ircount_2: std_logic; + signal ircount_3: std_logic; + signal co0_1: std_logic; + signal ircount_4: std_logic; + signal ircount_5: std_logic; + signal co1_1: std_logic; + signal ircount_6: std_logic; + signal ircount_7: std_logic; + signal co2_1: std_logic; + signal ircount_8: std_logic; + signal ircount_9: std_logic; + signal co3_1: std_logic; + signal ircount_10: std_logic; + signal ircount_11: std_logic; + signal co4_1: std_logic; + signal ircount_12: std_logic; + signal ircount_13: std_logic; + signal co5_1: std_logic; + signal ircount_14: std_logic; + signal ircount_15: std_logic; + signal co6_1: std_logic; + signal ircount_16: std_logic; + signal co8_1: std_logic; + signal rcount_16: std_logic; + signal co7_1: std_logic; + signal mdout1_3_0: std_logic; + signal mdout1_2_0: std_logic; + signal mdout1_1_0: std_logic; + signal mdout1_0_0: std_logic; + signal mdout1_3_1: std_logic; + signal mdout1_2_1: std_logic; + signal mdout1_1_1: std_logic; + signal mdout1_0_1: std_logic; + signal mdout1_3_2: std_logic; + signal mdout1_2_2: std_logic; + signal mdout1_1_2: std_logic; + signal mdout1_0_2: std_logic; + signal mdout1_3_3: std_logic; + signal mdout1_2_3: std_logic; + signal mdout1_1_3: std_logic; + signal mdout1_0_3: std_logic; + signal mdout1_3_4: std_logic; + signal mdout1_2_4: std_logic; + signal mdout1_1_4: std_logic; + signal mdout1_0_4: std_logic; + signal mdout1_3_5: std_logic; + signal mdout1_2_5: std_logic; + signal mdout1_1_5: std_logic; + signal mdout1_0_5: std_logic; + signal mdout1_3_6: std_logic; + signal mdout1_2_6: std_logic; + signal mdout1_1_6: std_logic; + signal mdout1_0_6: std_logic; + signal rptr_15_ff: std_logic; + signal rptr_14_ff: std_logic; + signal mdout1_3_7: std_logic; + signal mdout1_2_7: std_logic; + signal mdout1_1_7: std_logic; + signal mdout1_0_7: std_logic; + signal rden_i: std_logic; + signal cmp_ci: std_logic; + signal wcount_r0: std_logic; + signal wcount_r1: std_logic; + signal rcount_0: std_logic; + signal rcount_1: std_logic; + signal co0_2: std_logic; + signal wcount_r2: std_logic; + signal wcount_r3: std_logic; + signal rcount_2: std_logic; + signal rcount_3: std_logic; + signal co1_2: std_logic; + signal wcount_r4: std_logic; + signal wcount_r5: std_logic; + signal rcount_4: std_logic; + signal rcount_5: std_logic; + signal co2_2: std_logic; + signal wcount_r6: std_logic; + signal wcount_r7: std_logic; + signal rcount_6: std_logic; + signal rcount_7: std_logic; + signal co3_2: std_logic; + signal wcount_r8: std_logic; + signal wcount_r9: std_logic; + signal rcount_8: std_logic; + signal rcount_9: std_logic; + signal co4_2: std_logic; + signal wcount_r10: std_logic; + signal wcount_r11: std_logic; + signal rcount_10: std_logic; + signal rcount_11: std_logic; + signal co5_2: std_logic; + signal wcount_r12: std_logic; + signal w_g2b_xor_cluster_0: std_logic; + signal rcount_12: std_logic; + signal rcount_13: std_logic; + signal co6_2: std_logic; + signal wcount_r14: std_logic; + signal wcount_r15: std_logic; + signal rcount_14: std_logic; + signal rcount_15: std_logic; + signal co7_2: std_logic; + signal empty_cmp_clr: std_logic; + signal empty_cmp_set: std_logic; + signal empty_d: std_logic; + signal empty_d_c: std_logic; + signal wren_i: std_logic; + signal cmp_ci_1: std_logic; + signal rcount_w0: std_logic; + signal rcount_w1: std_logic; + signal wcount_0: std_logic; + signal wcount_1: std_logic; + signal co0_3: std_logic; + signal rcount_w2: std_logic; + signal rcount_w3: std_logic; + signal wcount_2: std_logic; + signal wcount_3: std_logic; + signal co1_3: std_logic; + signal rcount_w4: std_logic; + signal rcount_w5: std_logic; + signal wcount_4: std_logic; + signal wcount_5: std_logic; + signal co2_3: std_logic; + signal rcount_w6: std_logic; + signal rcount_w7: std_logic; + signal wcount_6: std_logic; + signal wcount_7: std_logic; + signal co3_3: std_logic; + signal rcount_w8: std_logic; + signal rcount_w9: std_logic; + signal wcount_8: std_logic; + signal wcount_9: std_logic; + signal co4_3: std_logic; + signal rcount_w10: std_logic; + signal rcount_w11: std_logic; + signal wcount_10: std_logic; + signal wcount_11: std_logic; + signal co5_3: std_logic; + signal rcount_w12: std_logic; + signal r_g2b_xor_cluster_0: std_logic; + signal wcount_12: std_logic; + signal wcount_13: std_logic; + signal co6_3: std_logic; + signal rcount_w14: std_logic; + signal rcount_w15: std_logic; + signal wcount_14: std_logic; + signal wcount_15: std_logic; + signal co7_3: std_logic; + signal full_cmp_clr: std_logic; + signal full_cmp_set: std_logic; + signal full_d: std_logic; + signal full_d_c: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component AGEB2 + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; GE: out std_logic); + end component; + component AND2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component CU2 + port (CI: in std_logic; PC0: in std_logic; PC1: in std_logic; + CO: out std_logic; NC0: out std_logic; NC1: out std_logic); + end component; + component FADD2B + port (A0: in std_logic; A1: in std_logic; B0: in std_logic; + B1: in std_logic; CI: in std_logic; COUT: out std_logic; + S0: out std_logic; S1: out std_logic); + end component; + component FD1P3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + PD: in std_logic; Q: out std_logic); + end component; + component FD1P3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; SP: in std_logic; CK: in std_logic; + CD: in std_logic; Q: out std_logic); + end component; + component FD1S3BX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; PD: in std_logic; + Q: out std_logic); + end component; + component FD1S3DX + -- synopsys translate_off + generic (GSR : in String); + -- synopsys translate_on + port (D: in std_logic; CK: in std_logic; CD: in std_logic; + Q: out std_logic); + end component; + component INV + port (A: in std_logic; Z: out std_logic); + end component; + component MUX41 + port (D0: in std_logic; D1: in std_logic; D2: in std_logic; + D3: in std_logic; SD1: in std_logic; SD2: in std_logic; + Z: out std_logic); + end component; + component OR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component ROM16X1 + -- synopsys translate_off + generic (initval : in String); + -- synopsys translate_on + port (AD3: in std_logic; AD2: in std_logic; AD1: in std_logic; + AD0: in std_logic; DO0: out std_logic); + end component; + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component XOR2 + port (A: in std_logic; B: in std_logic; Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute initval : string; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute GSR : string; + attribute initval of LUT4_59 : label is "0x6996"; + attribute initval of LUT4_58 : label is "0x6996"; + attribute initval of LUT4_57 : label is "0x6996"; + attribute initval of LUT4_56 : label is "0x6996"; + attribute initval of LUT4_55 : label is "0x6996"; + attribute initval of LUT4_54 : label is "0x6996"; + attribute initval of LUT4_53 : label is "0x6996"; + attribute initval of LUT4_52 : label is "0x6996"; + attribute initval of LUT4_51 : label is "0x6996"; + attribute initval of LUT4_50 : label is "0x6996"; + attribute initval of LUT4_49 : label is "0x6996"; + attribute initval of LUT4_48 : label is "0x6996"; + attribute initval of LUT4_47 : label is "0x6996"; + attribute initval of LUT4_46 : label is "0x6996"; + attribute initval of LUT4_45 : label is "0x6996"; + attribute initval of LUT4_44 : label is "0x6996"; + attribute initval of LUT4_43 : label is "0x6996"; + attribute initval of LUT4_42 : label is "0x6996"; + attribute initval of LUT4_41 : label is "0x6996"; + attribute initval of LUT4_40 : label is "0x6996"; + attribute initval of LUT4_39 : label is "0x6996"; + attribute initval of LUT4_38 : label is "0x6996"; + attribute initval of LUT4_37 : label is "0x6996"; + attribute initval of LUT4_36 : label is "0x6996"; + attribute initval of LUT4_35 : label is "0x6996"; + attribute initval of LUT4_34 : label is "0x6996"; + attribute initval of LUT4_33 : label is "0x6996"; + attribute initval of LUT4_32 : label is "0x6996"; + attribute initval of LUT4_31 : label is "0x6996"; + attribute initval of LUT4_30 : label is "0x6996"; + attribute initval of LUT4_29 : label is "0x6996"; + attribute initval of LUT4_28 : label is "0x6996"; + attribute initval of LUT4_27 : label is "0x6996"; + attribute initval of LUT4_26 : label is "0x6996"; + attribute initval of LUT4_25 : label is "0x6996"; + attribute initval of LUT4_24 : label is "0x6996"; + attribute initval of LUT4_23 : label is "0x6996"; + attribute initval of LUT4_22 : label is "0x6996"; + attribute initval of LUT4_21 : label is "0x6996"; + attribute initval of LUT4_20 : label is "0x6996"; + attribute initval of LUT4_19 : label is "0x6996"; + attribute initval of LUT4_18 : label is "0x6996"; + attribute initval of LUT4_17 : label is "0x6996"; + attribute initval of LUT4_16 : label is "0x6996"; + attribute initval of LUT4_15 : label is "0x6996"; + attribute initval of LUT4_14 : label is "0x6996"; + attribute initval of LUT4_13 : label is "0x6996"; + attribute initval of LUT4_12 : label is "0x6996"; + attribute initval of LUT4_11 : label is "0x6996"; + attribute initval of LUT4_10 : label is "0x6996"; + attribute initval of LUT4_9 : label is "0x6996"; + attribute initval of LUT4_8 : label is "0x6996"; + attribute initval of LUT4_7 : label is "0x6996"; + attribute initval of LUT4_6 : label is "0x6996"; + attribute initval of LUT4_5 : label is "0x6996"; + attribute initval of LUT4_4 : label is "0x6996"; + attribute initval of LUT4_3 : label is "0x0410"; + attribute initval of LUT4_2 : label is "0x1004"; + attribute initval of LUT4_1 : label is "0x0140"; + attribute initval of LUT4_0 : label is "0x4001"; + attribute MEM_LPC_FILE of pdp_ram_0_0_31 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_0_31 : label is ""; + attribute CSDECODE_B of pdp_ram_0_0_31 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_0_31 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_0_31 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_0_31 : label is "NORMAL"; + attribute GSR of pdp_ram_0_0_31 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_0_31 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_0_31 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_0_31 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_0_31 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_0_31 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_1_30 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_1_30 : label is ""; + attribute CSDECODE_B of pdp_ram_0_1_30 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_1_30 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_1_30 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_1_30 : label is "NORMAL"; + attribute GSR of pdp_ram_0_1_30 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_1_30 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_1_30 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_1_30 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_1_30 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_1_30 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_2_29 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_2_29 : label is ""; + attribute CSDECODE_B of pdp_ram_0_2_29 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_2_29 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_2_29 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_2_29 : label is "NORMAL"; + attribute GSR of pdp_ram_0_2_29 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_2_29 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_2_29 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_2_29 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_2_29 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_2_29 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_3_28 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_3_28 : label is ""; + attribute CSDECODE_B of pdp_ram_0_3_28 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_3_28 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_3_28 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_3_28 : label is "NORMAL"; + attribute GSR of pdp_ram_0_3_28 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_3_28 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_3_28 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_3_28 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_3_28 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_3_28 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_4_27 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_4_27 : label is ""; + attribute CSDECODE_B of pdp_ram_0_4_27 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_4_27 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_4_27 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_4_27 : label is "NORMAL"; + attribute GSR of pdp_ram_0_4_27 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_4_27 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_4_27 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_4_27 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_4_27 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_4_27 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_5_26 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_5_26 : label is ""; + attribute CSDECODE_B of pdp_ram_0_5_26 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_5_26 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_5_26 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_5_26 : label is "NORMAL"; + attribute GSR of pdp_ram_0_5_26 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_5_26 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_5_26 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_5_26 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_5_26 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_5_26 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_6_25 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_6_25 : label is ""; + attribute CSDECODE_B of pdp_ram_0_6_25 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_6_25 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_6_25 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_6_25 : label is "NORMAL"; + attribute GSR of pdp_ram_0_6_25 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_6_25 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_6_25 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_6_25 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_6_25 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_6_25 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_0_7_24 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_0_7_24 : label is ""; + attribute CSDECODE_B of pdp_ram_0_7_24 : label is "0b000"; + attribute CSDECODE_A of pdp_ram_0_7_24 : label is "0b000"; + attribute WRITEMODE_B of pdp_ram_0_7_24 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_0_7_24 : label is "NORMAL"; + attribute GSR of pdp_ram_0_7_24 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_0_7_24 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_0_7_24 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_0_7_24 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_0_7_24 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_0_7_24 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_0_23 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_0_23 : label is ""; + attribute CSDECODE_B of pdp_ram_1_0_23 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_0_23 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_0_23 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_0_23 : label is "NORMAL"; + attribute GSR of pdp_ram_1_0_23 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_0_23 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_0_23 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_0_23 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_0_23 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_0_23 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_1_22 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_1_22 : label is ""; + attribute CSDECODE_B of pdp_ram_1_1_22 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_1_22 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_1_22 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_1_22 : label is "NORMAL"; + attribute GSR of pdp_ram_1_1_22 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_1_22 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_1_22 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_1_22 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_1_22 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_1_22 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_2_21 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_2_21 : label is ""; + attribute CSDECODE_B of pdp_ram_1_2_21 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_2_21 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_2_21 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_2_21 : label is "NORMAL"; + attribute GSR of pdp_ram_1_2_21 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_2_21 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_2_21 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_2_21 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_2_21 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_2_21 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_3_20 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_3_20 : label is ""; + attribute CSDECODE_B of pdp_ram_1_3_20 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_3_20 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_3_20 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_3_20 : label is "NORMAL"; + attribute GSR of pdp_ram_1_3_20 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_3_20 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_3_20 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_3_20 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_3_20 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_3_20 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_4_19 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_4_19 : label is ""; + attribute CSDECODE_B of pdp_ram_1_4_19 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_4_19 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_4_19 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_4_19 : label is "NORMAL"; + attribute GSR of pdp_ram_1_4_19 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_4_19 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_4_19 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_4_19 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_4_19 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_4_19 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_5_18 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_5_18 : label is ""; + attribute CSDECODE_B of pdp_ram_1_5_18 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_5_18 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_5_18 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_5_18 : label is "NORMAL"; + attribute GSR of pdp_ram_1_5_18 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_5_18 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_5_18 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_5_18 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_5_18 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_5_18 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_6_17 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_6_17 : label is ""; + attribute CSDECODE_B of pdp_ram_1_6_17 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_6_17 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_6_17 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_6_17 : label is "NORMAL"; + attribute GSR of pdp_ram_1_6_17 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_6_17 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_6_17 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_6_17 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_6_17 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_6_17 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_1_7_16 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_1_7_16 : label is ""; + attribute CSDECODE_B of pdp_ram_1_7_16 : label is "0b001"; + attribute CSDECODE_A of pdp_ram_1_7_16 : label is "0b001"; + attribute WRITEMODE_B of pdp_ram_1_7_16 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_1_7_16 : label is "NORMAL"; + attribute GSR of pdp_ram_1_7_16 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_1_7_16 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_1_7_16 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_1_7_16 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_1_7_16 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_1_7_16 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_0_15 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_0_15 : label is ""; + attribute CSDECODE_B of pdp_ram_2_0_15 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_0_15 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_0_15 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_0_15 : label is "NORMAL"; + attribute GSR of pdp_ram_2_0_15 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_0_15 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_0_15 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_0_15 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_0_15 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_0_15 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_1_14 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_1_14 : label is ""; + attribute CSDECODE_B of pdp_ram_2_1_14 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_1_14 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_1_14 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_1_14 : label is "NORMAL"; + attribute GSR of pdp_ram_2_1_14 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_1_14 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_1_14 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_1_14 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_1_14 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_1_14 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_2_13 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_2_13 : label is ""; + attribute CSDECODE_B of pdp_ram_2_2_13 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_2_13 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_2_13 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_2_13 : label is "NORMAL"; + attribute GSR of pdp_ram_2_2_13 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_2_13 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_2_13 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_2_13 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_2_13 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_2_13 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_3_12 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_3_12 : label is ""; + attribute CSDECODE_B of pdp_ram_2_3_12 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_3_12 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_3_12 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_3_12 : label is "NORMAL"; + attribute GSR of pdp_ram_2_3_12 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_3_12 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_3_12 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_3_12 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_3_12 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_3_12 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_4_11 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_4_11 : label is ""; + attribute CSDECODE_B of pdp_ram_2_4_11 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_4_11 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_4_11 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_4_11 : label is "NORMAL"; + attribute GSR of pdp_ram_2_4_11 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_4_11 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_4_11 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_4_11 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_4_11 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_4_11 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_5_10 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_5_10 : label is ""; + attribute CSDECODE_B of pdp_ram_2_5_10 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_5_10 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_5_10 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_5_10 : label is "NORMAL"; + attribute GSR of pdp_ram_2_5_10 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_5_10 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_5_10 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_5_10 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_5_10 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_5_10 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_6_9 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_6_9 : label is ""; + attribute CSDECODE_B of pdp_ram_2_6_9 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_6_9 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_6_9 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_6_9 : label is "NORMAL"; + attribute GSR of pdp_ram_2_6_9 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_6_9 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_6_9 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_6_9 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_6_9 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_6_9 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_2_7_8 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_2_7_8 : label is ""; + attribute CSDECODE_B of pdp_ram_2_7_8 : label is "0b010"; + attribute CSDECODE_A of pdp_ram_2_7_8 : label is "0b010"; + attribute WRITEMODE_B of pdp_ram_2_7_8 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_2_7_8 : label is "NORMAL"; + attribute GSR of pdp_ram_2_7_8 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_2_7_8 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_2_7_8 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_2_7_8 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_2_7_8 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_2_7_8 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_0_7 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_0_7 : label is ""; + attribute CSDECODE_B of pdp_ram_3_0_7 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_0_7 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_0_7 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_0_7 : label is "NORMAL"; + attribute GSR of pdp_ram_3_0_7 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_0_7 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_0_7 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_0_7 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_0_7 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_0_7 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_1_6 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_1_6 : label is ""; + attribute CSDECODE_B of pdp_ram_3_1_6 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_1_6 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_1_6 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_1_6 : label is "NORMAL"; + attribute GSR of pdp_ram_3_1_6 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_1_6 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_1_6 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_1_6 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_1_6 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_1_6 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_2_5 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_2_5 : label is ""; + attribute CSDECODE_B of pdp_ram_3_2_5 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_2_5 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_2_5 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_2_5 : label is "NORMAL"; + attribute GSR of pdp_ram_3_2_5 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_2_5 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_2_5 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_2_5 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_2_5 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_2_5 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_3_4 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_3_4 : label is ""; + attribute CSDECODE_B of pdp_ram_3_3_4 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_3_4 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_3_4 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_3_4 : label is "NORMAL"; + attribute GSR of pdp_ram_3_3_4 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_3_4 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_3_4 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_3_4 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_3_4 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_3_4 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_4_3 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_4_3 : label is ""; + attribute CSDECODE_B of pdp_ram_3_4_3 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_4_3 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_4_3 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_4_3 : label is "NORMAL"; + attribute GSR of pdp_ram_3_4_3 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_4_3 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_4_3 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_4_3 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_4_3 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_4_3 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_5_2 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_5_2 : label is ""; + attribute CSDECODE_B of pdp_ram_3_5_2 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_5_2 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_5_2 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_5_2 : label is "NORMAL"; + attribute GSR of pdp_ram_3_5_2 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_5_2 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_5_2 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_5_2 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_5_2 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_5_2 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_6_1 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_6_1 : label is ""; + attribute CSDECODE_B of pdp_ram_3_6_1 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_6_1 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_6_1 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_6_1 : label is "NORMAL"; + attribute GSR of pdp_ram_3_6_1 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_6_1 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_6_1 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_6_1 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_6_1 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_6_1 : label is "1"; + attribute MEM_LPC_FILE of pdp_ram_3_7_0 : label is "fifo_64kx8.lpc"; + attribute MEM_INIT_FILE of pdp_ram_3_7_0 : label is ""; + attribute CSDECODE_B of pdp_ram_3_7_0 : label is "0b011"; + attribute CSDECODE_A of pdp_ram_3_7_0 : label is "0b011"; + attribute WRITEMODE_B of pdp_ram_3_7_0 : label is "NORMAL"; + attribute WRITEMODE_A of pdp_ram_3_7_0 : label is "NORMAL"; + attribute GSR of pdp_ram_3_7_0 : label is "DISABLED"; + attribute RESETMODE of pdp_ram_3_7_0 : label is "ASYNC"; + attribute REGMODE_B of pdp_ram_3_7_0 : label is "NOREG"; + attribute REGMODE_A of pdp_ram_3_7_0 : label is "NOREG"; + attribute DATA_WIDTH_B of pdp_ram_3_7_0 : label is "1"; + attribute DATA_WIDTH_A of pdp_ram_3_7_0 : label is "1"; + attribute GSR of FF_173 : label is "ENABLED"; + attribute GSR of FF_172 : label is "ENABLED"; + attribute GSR of FF_171 : label is "ENABLED"; + attribute GSR of FF_170 : label is "ENABLED"; + attribute GSR of FF_169 : label is "ENABLED"; + attribute GSR of FF_168 : label is "ENABLED"; + attribute GSR of FF_167 : label is "ENABLED"; + attribute GSR of FF_166 : label is "ENABLED"; + attribute GSR of FF_165 : label is "ENABLED"; + attribute GSR of FF_164 : label is "ENABLED"; + attribute GSR of FF_163 : label is "ENABLED"; + attribute GSR of FF_162 : label is "ENABLED"; + attribute GSR of FF_161 : label is "ENABLED"; + attribute GSR of FF_160 : label is "ENABLED"; + attribute GSR of FF_159 : label is "ENABLED"; + attribute GSR of FF_158 : label is "ENABLED"; + attribute GSR of FF_157 : label is "ENABLED"; + attribute GSR of FF_156 : label is "ENABLED"; + attribute GSR of FF_155 : label is "ENABLED"; + attribute GSR of FF_154 : label is "ENABLED"; + attribute GSR of FF_153 : label is "ENABLED"; + attribute GSR of FF_152 : label is "ENABLED"; + attribute GSR of FF_151 : label is "ENABLED"; + attribute GSR of FF_150 : label is "ENABLED"; + attribute GSR of FF_149 : label is "ENABLED"; + attribute GSR of FF_148 : label is "ENABLED"; + attribute GSR of FF_147 : label is "ENABLED"; + attribute GSR of FF_146 : label is "ENABLED"; + attribute GSR of FF_145 : label is "ENABLED"; + attribute GSR of FF_144 : label is "ENABLED"; + attribute GSR of FF_143 : label is "ENABLED"; + attribute GSR of FF_142 : label is "ENABLED"; + attribute GSR of FF_141 : label is "ENABLED"; + attribute GSR of FF_140 : label is "ENABLED"; + attribute GSR of FF_139 : label is "ENABLED"; + attribute GSR of FF_138 : label is "ENABLED"; + attribute GSR of FF_137 : label is "ENABLED"; + attribute GSR of FF_136 : label is "ENABLED"; + attribute GSR of FF_135 : label is "ENABLED"; + attribute GSR of FF_134 : label is "ENABLED"; + attribute GSR of FF_133 : label is "ENABLED"; + attribute GSR of FF_132 : label is "ENABLED"; + attribute GSR of FF_131 : label is "ENABLED"; + attribute GSR of FF_130 : label is "ENABLED"; + attribute GSR of FF_129 : label is "ENABLED"; + attribute GSR of FF_128 : label is "ENABLED"; + attribute GSR of FF_127 : label is "ENABLED"; + attribute GSR of FF_126 : label is "ENABLED"; + attribute GSR of FF_125 : label is "ENABLED"; + attribute GSR of FF_124 : label is "ENABLED"; + attribute GSR of FF_123 : label is "ENABLED"; + attribute GSR of FF_122 : label is "ENABLED"; + attribute GSR of FF_121 : label is "ENABLED"; + attribute GSR of FF_120 : label is "ENABLED"; + attribute GSR of FF_119 : label is "ENABLED"; + attribute GSR of FF_118 : label is "ENABLED"; + attribute GSR of FF_117 : label is "ENABLED"; + attribute GSR of FF_116 : label is "ENABLED"; + attribute GSR of FF_115 : label is "ENABLED"; + attribute GSR of FF_114 : label is "ENABLED"; + attribute GSR of FF_113 : label is "ENABLED"; + attribute GSR of FF_112 : label is "ENABLED"; + attribute GSR of FF_111 : label is "ENABLED"; + attribute GSR of FF_110 : label is "ENABLED"; + attribute GSR of FF_109 : label is "ENABLED"; + attribute GSR of FF_108 : label is "ENABLED"; + attribute GSR of FF_107 : label is "ENABLED"; + attribute GSR of FF_106 : label is "ENABLED"; + attribute GSR of FF_105 : label is "ENABLED"; + attribute GSR of FF_104 : label is "ENABLED"; + attribute GSR of FF_103 : label is "ENABLED"; + attribute GSR of FF_102 : label is "ENABLED"; + attribute GSR of FF_101 : label is "ENABLED"; + attribute GSR of FF_100 : label is "ENABLED"; + attribute GSR of FF_99 : label is "ENABLED"; + attribute GSR of FF_98 : label is "ENABLED"; + attribute GSR of FF_97 : label is "ENABLED"; + attribute GSR of FF_96 : label is "ENABLED"; + attribute GSR of FF_95 : label is "ENABLED"; + attribute GSR of FF_94 : label is "ENABLED"; + attribute GSR of FF_93 : label is "ENABLED"; + attribute GSR of FF_92 : label is "ENABLED"; + attribute GSR of FF_91 : label is "ENABLED"; + attribute GSR of FF_90 : label is "ENABLED"; + attribute GSR of FF_89 : label is "ENABLED"; + attribute GSR of FF_88 : label is "ENABLED"; + attribute GSR of FF_87 : label is "ENABLED"; + attribute GSR of FF_86 : label is "ENABLED"; + attribute GSR of FF_85 : label is "ENABLED"; + attribute GSR of FF_84 : label is "ENABLED"; + attribute GSR of FF_83 : label is "ENABLED"; + attribute GSR of FF_82 : label is "ENABLED"; + attribute GSR of FF_81 : label is "ENABLED"; + attribute GSR of FF_80 : label is "ENABLED"; + attribute GSR of FF_79 : label is "ENABLED"; + attribute GSR of FF_78 : label is "ENABLED"; + attribute GSR of FF_77 : label is "ENABLED"; + attribute GSR of FF_76 : label is "ENABLED"; + attribute GSR of FF_75 : label is "ENABLED"; + attribute GSR of FF_74 : label is "ENABLED"; + attribute GSR of FF_73 : label is "ENABLED"; + attribute GSR of FF_72 : label is "ENABLED"; + attribute GSR of FF_71 : label is "ENABLED"; + attribute GSR of FF_70 : label is "ENABLED"; + attribute GSR of FF_69 : label is "ENABLED"; + attribute GSR of FF_68 : label is "ENABLED"; + attribute GSR of FF_67 : label is "ENABLED"; + attribute GSR of FF_66 : label is "ENABLED"; + attribute GSR of FF_65 : label is "ENABLED"; + attribute GSR of FF_64 : label is "ENABLED"; + attribute GSR of FF_63 : label is "ENABLED"; + attribute GSR of FF_62 : label is "ENABLED"; + attribute GSR of FF_61 : label is "ENABLED"; + attribute GSR of FF_60 : label is "ENABLED"; + attribute GSR of FF_59 : label is "ENABLED"; + attribute GSR of FF_58 : label is "ENABLED"; + attribute GSR of FF_57 : label is "ENABLED"; + attribute GSR of FF_56 : label is "ENABLED"; + attribute GSR of FF_55 : label is "ENABLED"; + attribute GSR of FF_54 : label is "ENABLED"; + attribute GSR of FF_53 : label is "ENABLED"; + attribute GSR of FF_52 : label is "ENABLED"; + attribute GSR of FF_51 : label is "ENABLED"; + attribute GSR of FF_50 : label is "ENABLED"; + attribute GSR of FF_49 : label is "ENABLED"; + attribute GSR of FF_48 : label is "ENABLED"; + attribute GSR of FF_47 : label is "ENABLED"; + attribute GSR of FF_46 : label is "ENABLED"; + attribute GSR of FF_45 : label is "ENABLED"; + attribute GSR of FF_44 : label is "ENABLED"; + attribute GSR of FF_43 : label is "ENABLED"; + attribute GSR of FF_42 : label is "ENABLED"; + attribute GSR of FF_41 : label is "ENABLED"; + attribute GSR of FF_40 : label is "ENABLED"; + attribute GSR of FF_39 : label is "ENABLED"; + attribute GSR of FF_38 : label is "ENABLED"; + attribute GSR of FF_37 : label is "ENABLED"; + attribute GSR of FF_36 : label is "ENABLED"; + attribute GSR of FF_35 : label is "ENABLED"; + attribute GSR of FF_34 : label is "ENABLED"; + attribute GSR of FF_33 : label is "ENABLED"; + attribute GSR of FF_32 : label is "ENABLED"; + attribute GSR of FF_31 : label is "ENABLED"; + attribute GSR of FF_30 : label is "ENABLED"; + attribute GSR of FF_29 : label is "ENABLED"; + attribute GSR of FF_28 : label is "ENABLED"; + attribute GSR of FF_27 : label is "ENABLED"; + attribute GSR of FF_26 : label is "ENABLED"; + attribute GSR of FF_25 : label is "ENABLED"; + attribute GSR of FF_24 : label is "ENABLED"; + attribute GSR of FF_23 : label is "ENABLED"; + attribute GSR of FF_22 : label is "ENABLED"; + attribute GSR of FF_21 : label is "ENABLED"; + attribute GSR of FF_20 : label is "ENABLED"; + attribute GSR of FF_19 : label is "ENABLED"; + attribute GSR of FF_18 : label is "ENABLED"; + attribute GSR of FF_17 : label is "ENABLED"; + attribute GSR of FF_16 : label is "ENABLED"; + attribute GSR of FF_15 : label is "ENABLED"; + attribute GSR of FF_14 : label is "ENABLED"; + attribute GSR of FF_13 : label is "ENABLED"; + attribute GSR of FF_12 : label is "ENABLED"; + attribute GSR of FF_11 : label is "ENABLED"; + attribute GSR of FF_10 : label is "ENABLED"; + attribute GSR of FF_9 : label is "ENABLED"; + attribute GSR of FF_8 : label is "ENABLED"; + attribute GSR of FF_7 : label is "ENABLED"; + attribute GSR of FF_6 : label is "ENABLED"; + attribute GSR of FF_5 : label is "ENABLED"; + attribute GSR of FF_4 : label is "ENABLED"; + attribute GSR of FF_3 : label is "ENABLED"; + attribute GSR of FF_2 : label is "ENABLED"; + attribute GSR of FF_1 : label is "ENABLED"; + attribute GSR of FF_0 : label is "ENABLED"; + attribute syn_keep : boolean; + +begin + -- component instantiation statements + AND2_t34: AND2 + port map (A=>WrEn, B=>invout_1, Z=>wren_i); + + INV_1: INV + port map (A=>full_i, Z=>invout_1); + + AND2_t33: AND2 + port map (A=>RdEn, B=>invout_0, Z=>rden_i); + + INV_0: INV + port map (A=>empty_i, Z=>invout_0); + + OR2_t32: OR2 + port map (A=>Reset, B=>RPReset, Z=>rRst); + + XOR2_t31: XOR2 + port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0); + + XOR2_t30: XOR2 + port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1); + + XOR2_t29: XOR2 + port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2); + + XOR2_t28: XOR2 + port map (A=>wcount_3, B=>wcount_4, Z=>w_gdata_3); + + XOR2_t27: XOR2 + port map (A=>wcount_4, B=>wcount_5, Z=>w_gdata_4); + + XOR2_t26: XOR2 + port map (A=>wcount_5, B=>wcount_6, Z=>w_gdata_5); + + XOR2_t25: XOR2 + port map (A=>wcount_6, B=>wcount_7, Z=>w_gdata_6); + + XOR2_t24: XOR2 + port map (A=>wcount_7, B=>wcount_8, Z=>w_gdata_7); + + XOR2_t23: XOR2 + port map (A=>wcount_8, B=>wcount_9, Z=>w_gdata_8); + + XOR2_t22: XOR2 + port map (A=>wcount_9, B=>wcount_10, Z=>w_gdata_9); + + XOR2_t21: XOR2 + port map (A=>wcount_10, B=>wcount_11, Z=>w_gdata_10); + + XOR2_t20: XOR2 + port map (A=>wcount_11, B=>wcount_12, Z=>w_gdata_11); + + XOR2_t19: XOR2 + port map (A=>wcount_12, B=>wcount_13, Z=>w_gdata_12); + + XOR2_t18: XOR2 + port map (A=>wcount_13, B=>wcount_14, Z=>w_gdata_13); + + XOR2_t17: XOR2 + port map (A=>wcount_14, B=>wcount_15, Z=>w_gdata_14); + + XOR2_t16: XOR2 + port map (A=>wcount_15, B=>wcount_16, Z=>w_gdata_15); + + XOR2_t15: XOR2 + port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0); + + XOR2_t14: XOR2 + port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1); + + XOR2_t13: XOR2 + port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2); + + XOR2_t12: XOR2 + port map (A=>rcount_3, B=>rcount_4, Z=>r_gdata_3); + + XOR2_t11: XOR2 + port map (A=>rcount_4, B=>rcount_5, Z=>r_gdata_4); + + XOR2_t10: XOR2 + port map (A=>rcount_5, B=>rcount_6, Z=>r_gdata_5); + + XOR2_t9: XOR2 + port map (A=>rcount_6, B=>rcount_7, Z=>r_gdata_6); + + XOR2_t8: XOR2 + port map (A=>rcount_7, B=>rcount_8, Z=>r_gdata_7); + + XOR2_t7: XOR2 + port map (A=>rcount_8, B=>rcount_9, Z=>r_gdata_8); + + XOR2_t6: XOR2 + port map (A=>rcount_9, B=>rcount_10, Z=>r_gdata_9); + + XOR2_t5: XOR2 + port map (A=>rcount_10, B=>rcount_11, Z=>r_gdata_10); + + XOR2_t4: XOR2 + port map (A=>rcount_11, B=>rcount_12, Z=>r_gdata_11); + + XOR2_t3: XOR2 + port map (A=>rcount_12, B=>rcount_13, Z=>r_gdata_12); + + XOR2_t2: XOR2 + port map (A=>rcount_13, B=>rcount_14, Z=>r_gdata_13); + + XOR2_t1: XOR2 + port map (A=>rcount_14, B=>rcount_15, Z=>r_gdata_14); + + XOR2_t0: XOR2 + port map (A=>rcount_15, B=>rcount_16, Z=>r_gdata_15); + + LUT4_59: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r213, AD2=>w_gcount_r214, + AD1=>w_gcount_r215, AD0=>w_gcount_r216, + DO0=>w_g2b_xor_cluster_0); + + LUT4_58: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r29, AD2=>w_gcount_r210, + AD1=>w_gcount_r211, AD0=>w_gcount_r212, + DO0=>w_g2b_xor_cluster_1); + + LUT4_57: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r25, AD2=>w_gcount_r26, + AD1=>w_gcount_r27, AD0=>w_gcount_r28, + DO0=>w_g2b_xor_cluster_2); + + LUT4_56: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r21, AD2=>w_gcount_r22, + AD1=>w_gcount_r23, AD0=>w_gcount_r24, + DO0=>w_g2b_xor_cluster_3); + + LUT4_55: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r215, AD2=>w_gcount_r216, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>wcount_r15); + + LUT4_54: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r214, AD2=>w_gcount_r215, + AD1=>w_gcount_r216, AD0=>scuba_vlo, DO0=>wcount_r14); + + LUT4_53: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r212, AD2=>w_gcount_r213, + AD1=>w_gcount_r214, AD0=>wcount_r15, DO0=>wcount_r12); + + LUT4_52: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r211, AD2=>w_gcount_r212, + AD1=>w_gcount_r213, AD0=>wcount_r14, DO0=>wcount_r11); + + LUT4_51: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r210, AD2=>w_gcount_r211, + AD1=>w_gcount_r212, AD0=>w_g2b_xor_cluster_0, + DO0=>wcount_r10); + + LUT4_50: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r9); + + LUT4_49: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r28, AD0=>scuba_vlo, DO0=>wcount_r8); + + LUT4_48: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_gcount_r27, AD0=>w_gcount_r28, DO0=>wcount_r7); + + LUT4_47: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r26, AD2=>w_gcount_r27, + AD1=>w_gcount_r28, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_2_1); + + LUT4_46: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>wcount_r6); + + LUT4_45: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>wcount_r5); + + LUT4_44: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_gcount_r24, DO0=>wcount_r4); + + LUT4_43: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r23, AD2=>w_gcount_r24, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>w_g2b_xor_cluster_3_1); + + LUT4_42: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3_1, + DO0=>wcount_r3); + + LUT4_41: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r22, AD2=>w_gcount_r23, + AD1=>w_gcount_r24, AD0=>scuba_vlo, + DO0=>w_g2b_xor_cluster_3_2); + + LUT4_40: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3_2, + DO0=>wcount_r2); + + LUT4_39: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_g2b_xor_cluster_0, AD2=>w_g2b_xor_cluster_1, + AD1=>w_g2b_xor_cluster_2, AD0=>w_g2b_xor_cluster_3, + DO0=>wcount_r1); + + LUT4_38: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r20, AD2=>w_gcount_r21, + AD1=>w_gcount_r22, AD0=>w_gcount_r23, DO0=>func_xor_inet); + + LUT4_37: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r24, AD2=>w_gcount_r25, + AD1=>w_gcount_r26, AD0=>w_gcount_r27, DO0=>func_xor_inet_1); + + LUT4_36: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r28, AD2=>w_gcount_r29, + AD1=>w_gcount_r210, AD0=>w_gcount_r211, DO0=>func_xor_inet_2); + + LUT4_35: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r212, AD2=>w_gcount_r213, + AD1=>w_gcount_r214, AD0=>w_gcount_r215, DO0=>func_xor_inet_3); + + LUT4_34: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>w_gcount_r216, AD2=>scuba_vlo, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>func_xor_inet_4); + + LUT4_33: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet, AD2=>func_xor_inet_1, + AD1=>func_xor_inet_2, AD0=>func_xor_inet_3, + DO0=>func_xor_inet_5); + + LUT4_32: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet_5, AD2=>func_xor_inet_4, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>wcount_r0); + + LUT4_31: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w213, AD2=>r_gcount_w214, + AD1=>r_gcount_w215, AD0=>r_gcount_w216, + DO0=>r_g2b_xor_cluster_0); + + LUT4_30: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w29, AD2=>r_gcount_w210, + AD1=>r_gcount_w211, AD0=>r_gcount_w212, + DO0=>r_g2b_xor_cluster_1); + + LUT4_29: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w25, AD2=>r_gcount_w26, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, + DO0=>r_g2b_xor_cluster_2); + + LUT4_28: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w21, AD2=>r_gcount_w22, + AD1=>r_gcount_w23, AD0=>r_gcount_w24, + DO0=>r_g2b_xor_cluster_3); + + LUT4_27: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w215, AD2=>r_gcount_w216, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>rcount_w15); + + LUT4_26: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w214, AD2=>r_gcount_w215, + AD1=>r_gcount_w216, AD0=>scuba_vlo, DO0=>rcount_w14); + + LUT4_25: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w212, AD2=>r_gcount_w213, + AD1=>r_gcount_w214, AD0=>rcount_w15, DO0=>rcount_w12); + + LUT4_24: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w211, AD2=>r_gcount_w212, + AD1=>r_gcount_w213, AD0=>rcount_w14, DO0=>rcount_w11); + + LUT4_23: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w210, AD2=>r_gcount_w211, + AD1=>r_gcount_w212, AD0=>r_g2b_xor_cluster_0, + DO0=>rcount_w10); + + LUT4_22: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w9); + + LUT4_21: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w28, AD0=>scuba_vlo, DO0=>rcount_w8); + + LUT4_20: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_gcount_w27, AD0=>r_gcount_w28, DO0=>rcount_w7); + + LUT4_19: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w26, AD2=>r_gcount_w27, + AD1=>r_gcount_w28, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_2_1); + + LUT4_18: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2_1, AD0=>scuba_vlo, DO0=>rcount_w6); + + LUT4_17: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>scuba_vlo, DO0=>rcount_w5); + + LUT4_16: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_gcount_w24, DO0=>rcount_w4); + + LUT4_15: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w23, AD2=>r_gcount_w24, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>r_g2b_xor_cluster_3_1); + + LUT4_14: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3_1, + DO0=>rcount_w3); + + LUT4_13: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w22, AD2=>r_gcount_w23, + AD1=>r_gcount_w24, AD0=>scuba_vlo, + DO0=>r_g2b_xor_cluster_3_2); + + LUT4_12: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3_2, + DO0=>rcount_w2); + + LUT4_11: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_g2b_xor_cluster_0, AD2=>r_g2b_xor_cluster_1, + AD1=>r_g2b_xor_cluster_2, AD0=>r_g2b_xor_cluster_3, + DO0=>rcount_w1); + + LUT4_10: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w20, AD2=>r_gcount_w21, + AD1=>r_gcount_w22, AD0=>r_gcount_w23, DO0=>func_xor_inet_6); + + LUT4_9: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w24, AD2=>r_gcount_w25, + AD1=>r_gcount_w26, AD0=>r_gcount_w27, DO0=>func_xor_inet_7); + + LUT4_8: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w28, AD2=>r_gcount_w29, + AD1=>r_gcount_w210, AD0=>r_gcount_w211, DO0=>func_xor_inet_8); + + LUT4_7: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w212, AD2=>r_gcount_w213, + AD1=>r_gcount_w214, AD0=>r_gcount_w215, DO0=>func_xor_inet_9); + + LUT4_6: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>r_gcount_w216, AD2=>scuba_vlo, AD1=>scuba_vlo, + AD0=>scuba_vlo, DO0=>func_xor_inet_10); + + LUT4_5: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet_6, AD2=>func_xor_inet_7, + AD1=>func_xor_inet_8, AD0=>func_xor_inet_9, + DO0=>func_xor_inet_11); + + LUT4_4: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x6996") + -- synopsys translate_on + port map (AD3=>func_xor_inet_11, AD2=>func_xor_inet_10, + AD1=>scuba_vlo, AD0=>scuba_vlo, DO0=>rcount_w0); + + LUT4_3: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0410") + -- synopsys translate_on + port map (AD3=>rptr_16, AD2=>rcount_16, AD1=>w_gcount_r216, + AD0=>scuba_vlo, DO0=>empty_cmp_set); + + LUT4_2: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x1004") + -- synopsys translate_on + port map (AD3=>rptr_16, AD2=>rcount_16, AD1=>w_gcount_r216, + AD0=>scuba_vlo, DO0=>empty_cmp_clr); + + LUT4_1: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x0140") + -- synopsys translate_on + port map (AD3=>wptr_16, AD2=>wcount_16, AD1=>r_gcount_w216, + AD0=>scuba_vlo, DO0=>full_cmp_set); + + LUT4_0: ROM16X1 + -- synopsys translate_off + generic map (initval=> "0x4001") + -- synopsys translate_on + port map (AD3=>wptr_16, AD2=>wcount_16, AD1=>r_gcount_w216, + AD0=>scuba_vlo, DO0=>full_cmp_clr); + + pdp_ram_0_0_31: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_1_30: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_2_29: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_3_28: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_4_27: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_5_26: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_6_25: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_0_7_24: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_0_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_0_23: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_1_22: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_2_21: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_3_20: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_4_19: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_5_18: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_6_17: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_1_7_16: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "001", CSDECODE_A=> "001", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_1_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_0_15: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_1_14: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_2_13: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_3_12: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_4_11: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_5_10: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_6_9: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_2_7_8: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "010", CSDECODE_A=> "010", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_2_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_0_7: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(0), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_0, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_1_6: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(1), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_1, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_2_5: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(2), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_2, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_3_4: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(3), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_3, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_4_3: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(4), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_4, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_5_2: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(5), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_5, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_6_1: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(6), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_6, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + pdp_ram_3_7_0: DP16KB + -- synopsys translate_off + generic map (CSDECODE_B=> "011", CSDECODE_A=> "011", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "ASYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 1, + DATA_WIDTH_A=> 1) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>Data(7), + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>wptr_0, ADA1=>wptr_1, ADA2=>wptr_2, ADA3=>wptr_3, + ADA4=>wptr_4, ADA5=>wptr_5, ADA6=>wptr_6, ADA7=>wptr_7, + ADA8=>wptr_8, ADA9=>wptr_9, ADA10=>wptr_10, ADA11=>wptr_11, + ADA12=>wptr_12, ADA13=>wptr_13, CEA=>wren_i, CLKA=>WrClock, + WEA=>scuba_vhi, CSA0=>wptr_14, CSA1=>wptr_15, + CSA2=>scuba_vlo, RSTA=>Reset, DIB0=>scuba_vlo, + DIB1=>scuba_vlo, DIB2=>scuba_vlo, DIB3=>scuba_vlo, + DIB4=>scuba_vlo, DIB5=>scuba_vlo, DIB6=>scuba_vlo, + DIB7=>scuba_vlo, DIB8=>scuba_vlo, DIB9=>scuba_vlo, + DIB10=>scuba_vlo, DIB11=>scuba_vlo, DIB12=>scuba_vlo, + DIB13=>scuba_vlo, DIB14=>scuba_vlo, DIB15=>scuba_vlo, + DIB16=>scuba_vlo, DIB17=>scuba_vlo, ADB0=>rptr_0, + ADB1=>rptr_1, ADB2=>rptr_2, ADB3=>rptr_3, ADB4=>rptr_4, + ADB5=>rptr_5, ADB6=>rptr_6, ADB7=>rptr_7, ADB8=>rptr_8, + ADB9=>rptr_9, ADB10=>rptr_10, ADB11=>rptr_11, ADB12=>rptr_12, + ADB13=>rptr_13, CEB=>rden_i, CLKB=>RdClock, WEB=>scuba_vlo, + CSB0=>rptr_14, CSB1=>rptr_15, CSB2=>scuba_vlo, RSTB=>Reset, + DOA0=>open, DOA1=>open, DOA2=>open, DOA3=>open, DOA4=>open, + DOA5=>open, DOA6=>open, DOA7=>open, DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>mdout1_3_7, DOB1=>open, DOB2=>open, DOB3=>open, + DOB4=>open, DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, + DOB9=>open, DOB10=>open, DOB11=>open, DOB12=>open, + DOB13=>open, DOB14=>open, DOB15=>open, DOB16=>open, + DOB17=>open); + + FF_173: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset, + Q=>wcount_0); + + FF_172: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_1); + + FF_171: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_2); + + FF_170: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_3); + + FF_169: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_4); + + FF_168: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_5); + + FF_167: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_6); + + FF_166: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_7); + + FF_165: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_8); + + FF_164: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_9); + + FF_163: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_10); + + FF_162: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_11); + + FF_161: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_12); + + FF_160: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_13); + + FF_159: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_14); + + FF_158: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_15); + + FF_157: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>iwcount_16, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wcount_16); + + FF_156: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_0); + + FF_155: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_1); + + FF_154: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_2); + + FF_153: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_3); + + FF_152: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_4); + + FF_151: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_5); + + FF_150: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_6); + + FF_149: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_7); + + FF_148: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_8); + + FF_147: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_9); + + FF_146: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_10); + + FF_145: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_11); + + FF_144: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_12); + + FF_143: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_13); + + FF_142: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_14); + + FF_141: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gdata_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_15); + + FF_140: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_16, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>w_gcount_16); + + FF_139: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_0, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_0); + + FF_138: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_1, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_1); + + FF_137: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_2); + + FF_136: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_3); + + FF_135: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_4, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_4); + + FF_134: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_5, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_5); + + FF_133: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_6, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_6); + + FF_132: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_7, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_7); + + FF_131: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_8, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_8); + + FF_130: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_9, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_9); + + FF_129: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_10, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_10); + + FF_128: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_11, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_11); + + FF_127: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_12, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_12); + + FF_126: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_13, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_13); + + FF_125: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_14, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_14); + + FF_124: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_15, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_15); + + FF_123: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>wcount_16, SP=>wren_i, CK=>WrClock, CD=>Reset, + Q=>wptr_16); + + FF_122: FD1P3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_0, SP=>rden_i, CK=>RdClock, PD=>rRst, + Q=>rcount_0); + + FF_121: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_1); + + FF_120: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_2); + + FF_119: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_3); + + FF_118: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_4); + + FF_117: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_5); + + FF_116: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_6); + + FF_115: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_7); + + FF_114: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_8); + + FF_113: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_9); + + FF_112: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_10); + + FF_111: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_11); + + FF_110: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_12); + + FF_109: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_13); + + FF_108: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_14); + + FF_107: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_15); + + FF_106: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>ircount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rcount_16); + + FF_105: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_0); + + FF_104: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_1); + + FF_103: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_2); + + FF_102: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_3); + + FF_101: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_4); + + FF_100: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_5); + + FF_99: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_6); + + FF_98: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_7); + + FF_97: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_8); + + FF_96: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_9); + + FF_95: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_10); + + FF_94: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_11); + + FF_93: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_12); + + FF_92: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_13); + + FF_91: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_14); + + FF_90: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gdata_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_15); + + FF_89: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>r_gcount_16); + + FF_88: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_0); + + FF_87: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_1); + + FF_86: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_2, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_2); + + FF_85: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_3); + + FF_84: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_4, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_4); + + FF_83: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_5, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_5); + + FF_82: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_6, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_6); + + FF_81: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_7, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_7); + + FF_80: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_8, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_8); + + FF_79: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_9, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_9); + + FF_78: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_10, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_10); + + FF_77: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_11, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_11); + + FF_76: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_12, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_12); + + FF_75: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_13, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_13); + + FF_74: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_14, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_14); + + FF_73: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_15, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_15); + + FF_72: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rcount_16, SP=>rden_i, CK=>RdClock, CD=>rRst, + Q=>rptr_16); + + FF_71: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rptr_14, SP=>rden_i, CK=>RdClock, CD=>scuba_vlo, + Q=>rptr_14_ff); + + FF_70: FD1P3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>rptr_15, SP=>rden_i, CK=>RdClock, CD=>scuba_vlo, + Q=>rptr_15_ff); + + FF_69: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_0, CK=>RdClock, CD=>Reset, Q=>w_gcount_r0); + + FF_68: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_1, CK=>RdClock, CD=>Reset, Q=>w_gcount_r1); + + FF_67: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_2, CK=>RdClock, CD=>Reset, Q=>w_gcount_r2); + + FF_66: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_3, CK=>RdClock, CD=>Reset, Q=>w_gcount_r3); + + FF_65: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_4, CK=>RdClock, CD=>Reset, Q=>w_gcount_r4); + + FF_64: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_5, CK=>RdClock, CD=>Reset, Q=>w_gcount_r5); + + FF_63: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_6, CK=>RdClock, CD=>Reset, Q=>w_gcount_r6); + + FF_62: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_7, CK=>RdClock, CD=>Reset, Q=>w_gcount_r7); + + FF_61: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_8, CK=>RdClock, CD=>Reset, Q=>w_gcount_r8); + + FF_60: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_9, CK=>RdClock, CD=>Reset, Q=>w_gcount_r9); + + FF_59: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r10); + + FF_58: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r11); + + FF_57: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r12); + + FF_56: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_13, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r13); + + FF_55: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_14, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r14); + + FF_54: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_15, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r15); + + FF_53: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_16, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r16); + + FF_52: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w0); + + FF_51: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w1); + + FF_50: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w2); + + FF_49: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w3); + + FF_48: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w4); + + FF_47: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w5); + + FF_46: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w6); + + FF_45: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w7); + + FF_44: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w8); + + FF_43: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w9); + + FF_42: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_10, CK=>WrClock, CD=>rRst, Q=>r_gcount_w10); + + FF_41: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_11, CK=>WrClock, CD=>rRst, Q=>r_gcount_w11); + + FF_40: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_12, CK=>WrClock, CD=>rRst, Q=>r_gcount_w12); + + FF_39: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_13, CK=>WrClock, CD=>rRst, Q=>r_gcount_w13); + + FF_38: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_14, CK=>WrClock, CD=>rRst, Q=>r_gcount_w14); + + FF_37: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_15, CK=>WrClock, CD=>rRst, Q=>r_gcount_w15); + + FF_36: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_16, CK=>WrClock, CD=>rRst, Q=>r_gcount_w16); + + FF_35: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r0, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r20); + + FF_34: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r1, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r21); + + FF_33: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r2, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r22); + + FF_32: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r3, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r23); + + FF_31: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r4, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r24); + + FF_30: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r5, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r25); + + FF_29: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r6, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r26); + + FF_28: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r7, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r27); + + FF_27: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r8, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r28); + + FF_26: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r9, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r29); + + FF_25: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r10, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r210); + + FF_24: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r11, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r211); + + FF_23: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r12, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r212); + + FF_22: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r13, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r213); + + FF_21: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r14, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r214); + + FF_20: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r15, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r215); + + FF_19: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>w_gcount_r16, CK=>RdClock, CD=>Reset, + Q=>w_gcount_r216); + + FF_18: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w0, CK=>WrClock, CD=>rRst, Q=>r_gcount_w20); + + FF_17: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w1, CK=>WrClock, CD=>rRst, Q=>r_gcount_w21); + + FF_16: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w2, CK=>WrClock, CD=>rRst, Q=>r_gcount_w22); + + FF_15: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w3, CK=>WrClock, CD=>rRst, Q=>r_gcount_w23); + + FF_14: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w4, CK=>WrClock, CD=>rRst, Q=>r_gcount_w24); + + FF_13: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w5, CK=>WrClock, CD=>rRst, Q=>r_gcount_w25); + + FF_12: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w6, CK=>WrClock, CD=>rRst, Q=>r_gcount_w26); + + FF_11: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w7, CK=>WrClock, CD=>rRst, Q=>r_gcount_w27); + + FF_10: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w8, CK=>WrClock, CD=>rRst, Q=>r_gcount_w28); + + FF_9: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w9, CK=>WrClock, CD=>rRst, Q=>r_gcount_w29); + + FF_8: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w10, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w210); + + FF_7: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w11, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w211); + + FF_6: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w12, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w212); + + FF_5: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w13, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w213); + + FF_4: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w14, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w214); + + FF_3: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w15, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w215); + + FF_2: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>r_gcount_w16, CK=>WrClock, CD=>rRst, + Q=>r_gcount_w216); + + FF_1: FD1S3BX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i); + + FF_0: FD1S3DX + -- synopsys translate_off + generic map (GSR=> "ENABLED") + -- synopsys translate_on + port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i); + + w_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>w_gctr_ci, S0=>open, + S1=>open); + + w_gctr_0: CU2 + port map (CI=>w_gctr_ci, PC0=>wcount_0, PC1=>wcount_1, CO=>co0, + NC0=>iwcount_0, NC1=>iwcount_1); + + w_gctr_1: CU2 + port map (CI=>co0, PC0=>wcount_2, PC1=>wcount_3, CO=>co1, + NC0=>iwcount_2, NC1=>iwcount_3); + + w_gctr_2: CU2 + port map (CI=>co1, PC0=>wcount_4, PC1=>wcount_5, CO=>co2, + NC0=>iwcount_4, NC1=>iwcount_5); + + w_gctr_3: CU2 + port map (CI=>co2, PC0=>wcount_6, PC1=>wcount_7, CO=>co3, + NC0=>iwcount_6, NC1=>iwcount_7); + + w_gctr_4: CU2 + port map (CI=>co3, PC0=>wcount_8, PC1=>wcount_9, CO=>co4, + NC0=>iwcount_8, NC1=>iwcount_9); + + w_gctr_5: CU2 + port map (CI=>co4, PC0=>wcount_10, PC1=>wcount_11, CO=>co5, + NC0=>iwcount_10, NC1=>iwcount_11); + + w_gctr_6: CU2 + port map (CI=>co5, PC0=>wcount_12, PC1=>wcount_13, CO=>co6, + NC0=>iwcount_12, NC1=>iwcount_13); + + w_gctr_7: CU2 + port map (CI=>co6, PC0=>wcount_14, PC1=>wcount_15, CO=>co7, + NC0=>iwcount_14, NC1=>iwcount_15); + + w_gctr_8: CU2 + port map (CI=>co7, PC0=>wcount_16, PC1=>scuba_vlo, CO=>co8, + NC0=>iwcount_16, NC1=>open); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + r_gctr_cia: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vhi, B0=>scuba_vlo, + B1=>scuba_vhi, CI=>scuba_vlo, COUT=>r_gctr_ci, S0=>open, + S1=>open); + + r_gctr_0: CU2 + port map (CI=>r_gctr_ci, PC0=>rcount_0, PC1=>rcount_1, CO=>co0_1, + NC0=>ircount_0, NC1=>ircount_1); + + r_gctr_1: CU2 + port map (CI=>co0_1, PC0=>rcount_2, PC1=>rcount_3, CO=>co1_1, + NC0=>ircount_2, NC1=>ircount_3); + + r_gctr_2: CU2 + port map (CI=>co1_1, PC0=>rcount_4, PC1=>rcount_5, CO=>co2_1, + NC0=>ircount_4, NC1=>ircount_5); + + r_gctr_3: CU2 + port map (CI=>co2_1, PC0=>rcount_6, PC1=>rcount_7, CO=>co3_1, + NC0=>ircount_6, NC1=>ircount_7); + + r_gctr_4: CU2 + port map (CI=>co3_1, PC0=>rcount_8, PC1=>rcount_9, CO=>co4_1, + NC0=>ircount_8, NC1=>ircount_9); + + r_gctr_5: CU2 + port map (CI=>co4_1, PC0=>rcount_10, PC1=>rcount_11, CO=>co5_1, + NC0=>ircount_10, NC1=>ircount_11); + + r_gctr_6: CU2 + port map (CI=>co5_1, PC0=>rcount_12, PC1=>rcount_13, CO=>co6_1, + NC0=>ircount_12, NC1=>ircount_13); + + r_gctr_7: CU2 + port map (CI=>co6_1, PC0=>rcount_14, PC1=>rcount_15, CO=>co7_1, + NC0=>ircount_14, NC1=>ircount_15); + + r_gctr_8: CU2 + port map (CI=>co7_1, PC0=>rcount_16, PC1=>scuba_vlo, CO=>co8_1, + NC0=>ircount_16, NC1=>open); + + mux_7: MUX41 + port map (D0=>mdout1_0_0, D1=>mdout1_1_0, D2=>mdout1_2_0, + D3=>mdout1_3_0, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(0)); + + mux_6: MUX41 + port map (D0=>mdout1_0_1, D1=>mdout1_1_1, D2=>mdout1_2_1, + D3=>mdout1_3_1, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(1)); + + mux_5: MUX41 + port map (D0=>mdout1_0_2, D1=>mdout1_1_2, D2=>mdout1_2_2, + D3=>mdout1_3_2, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(2)); + + mux_4: MUX41 + port map (D0=>mdout1_0_3, D1=>mdout1_1_3, D2=>mdout1_2_3, + D3=>mdout1_3_3, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(3)); + + mux_3: MUX41 + port map (D0=>mdout1_0_4, D1=>mdout1_1_4, D2=>mdout1_2_4, + D3=>mdout1_3_4, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(4)); + + mux_2: MUX41 + port map (D0=>mdout1_0_5, D1=>mdout1_1_5, D2=>mdout1_2_5, + D3=>mdout1_3_5, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(5)); + + mux_1: MUX41 + port map (D0=>mdout1_0_6, D1=>mdout1_1_6, D2=>mdout1_2_6, + D3=>mdout1_3_6, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(6)); + + mux_0: MUX41 + port map (D0=>mdout1_0_7, D1=>mdout1_1_7, D2=>mdout1_2_7, + D3=>mdout1_3_7, SD1=>rptr_14_ff, SD2=>rptr_15_ff, Z=>Q(7)); + + empty_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>rden_i, B0=>scuba_vlo, B1=>rden_i, + CI=>scuba_vlo, COUT=>cmp_ci, S0=>open, S1=>open); + + empty_cmp_0: AGEB2 + port map (A0=>rcount_0, A1=>rcount_1, B0=>wcount_r0, + B1=>wcount_r1, CI=>cmp_ci, GE=>co0_2); + + empty_cmp_1: AGEB2 + port map (A0=>rcount_2, A1=>rcount_3, B0=>wcount_r2, + B1=>wcount_r3, CI=>co0_2, GE=>co1_2); + + empty_cmp_2: AGEB2 + port map (A0=>rcount_4, A1=>rcount_5, B0=>wcount_r4, + B1=>wcount_r5, CI=>co1_2, GE=>co2_2); + + empty_cmp_3: AGEB2 + port map (A0=>rcount_6, A1=>rcount_7, B0=>wcount_r6, + B1=>wcount_r7, CI=>co2_2, GE=>co3_2); + + empty_cmp_4: AGEB2 + port map (A0=>rcount_8, A1=>rcount_9, B0=>wcount_r8, + B1=>wcount_r9, CI=>co3_2, GE=>co4_2); + + empty_cmp_5: AGEB2 + port map (A0=>rcount_10, A1=>rcount_11, B0=>wcount_r10, + B1=>wcount_r11, CI=>co4_2, GE=>co5_2); + + empty_cmp_6: AGEB2 + port map (A0=>rcount_12, A1=>rcount_13, B0=>wcount_r12, + B1=>w_g2b_xor_cluster_0, CI=>co5_2, GE=>co6_2); + + empty_cmp_7: AGEB2 + port map (A0=>rcount_14, A1=>rcount_15, B0=>wcount_r14, + B1=>wcount_r15, CI=>co6_2, GE=>co7_2); + + empty_cmp_8: AGEB2 + port map (A0=>empty_cmp_set, A1=>scuba_vlo, B0=>empty_cmp_clr, + B1=>scuba_vlo, CI=>co7_2, GE=>empty_d_c); + + a0: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>empty_d_c, COUT=>open, S0=>empty_d, + S1=>open); + + full_cmp_ci_a: FADD2B + port map (A0=>scuba_vlo, A1=>wren_i, B0=>scuba_vlo, B1=>wren_i, + CI=>scuba_vlo, COUT=>cmp_ci_1, S0=>open, S1=>open); + + full_cmp_0: AGEB2 + port map (A0=>wcount_0, A1=>wcount_1, B0=>rcount_w0, + B1=>rcount_w1, CI=>cmp_ci_1, GE=>co0_3); + + full_cmp_1: AGEB2 + port map (A0=>wcount_2, A1=>wcount_3, B0=>rcount_w2, + B1=>rcount_w3, CI=>co0_3, GE=>co1_3); + + full_cmp_2: AGEB2 + port map (A0=>wcount_4, A1=>wcount_5, B0=>rcount_w4, + B1=>rcount_w5, CI=>co1_3, GE=>co2_3); + + full_cmp_3: AGEB2 + port map (A0=>wcount_6, A1=>wcount_7, B0=>rcount_w6, + B1=>rcount_w7, CI=>co2_3, GE=>co3_3); + + full_cmp_4: AGEB2 + port map (A0=>wcount_8, A1=>wcount_9, B0=>rcount_w8, + B1=>rcount_w9, CI=>co3_3, GE=>co4_3); + + full_cmp_5: AGEB2 + port map (A0=>wcount_10, A1=>wcount_11, B0=>rcount_w10, + B1=>rcount_w11, CI=>co4_3, GE=>co5_3); + + full_cmp_6: AGEB2 + port map (A0=>wcount_12, A1=>wcount_13, B0=>rcount_w12, + B1=>r_g2b_xor_cluster_0, CI=>co5_3, GE=>co6_3); + + full_cmp_7: AGEB2 + port map (A0=>wcount_14, A1=>wcount_15, B0=>rcount_w14, + B1=>rcount_w15, CI=>co6_3, GE=>co7_3); + + full_cmp_8: AGEB2 + port map (A0=>full_cmp_set, A1=>scuba_vlo, B0=>full_cmp_clr, + B1=>scuba_vlo, CI=>co7_3, GE=>full_d_c); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + a1: FADD2B + port map (A0=>scuba_vlo, A1=>scuba_vlo, B0=>scuba_vlo, + B1=>scuba_vlo, CI=>full_d_c, COUT=>open, S0=>full_d, + S1=>open); + + Empty <= empty_i; + Full <= full_i; +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of fifo_64kx8 is + for Structure + for all:AGEB2 use entity ecp2m.AGEB2(V); end for; + for all:AND2 use entity ecp2m.AND2(V); end for; + for all:CU2 use entity ecp2m.CU2(V); end for; + for all:FADD2B use entity ecp2m.FADD2B(V); end for; + for all:FD1P3BX use entity ecp2m.FD1P3BX(V); end for; + for all:FD1P3DX use entity ecp2m.FD1P3DX(V); end for; + for all:FD1S3BX use entity ecp2m.FD1S3BX(V); end for; + for all:FD1S3DX use entity ecp2m.FD1S3DX(V); end for; + for all:INV use entity ecp2m.INV(V); end for; + for all:MUX41 use entity ecp2m.MUX41(V); end for; + for all:OR2 use entity ecp2m.OR2(V); end for; + for all:ROM16X1 use entity ecp2m.ROM16X1(V); end for; + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:XOR2 use entity ecp2m.XOR2(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/fifo_64kx8_tmpl.vhd b/gbe_ecp2m/ipcores/fifo_64kx8_tmpl.vhd new file mode 100755 index 0000000..c0c7959 --- /dev/null +++ b/gbe_ecp2m/ipcores/fifo_64kx8_tmpl.vhd @@ -0,0 +1,18 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.2 +-- Sat Dec 26 00:12:05 2009 + +-- parameterized module component declaration +component fifo_64kx8 + port (Data: in std_logic_vector(7 downto 0); WrClock: in std_logic; + RdClock: in std_logic; WrEn: in std_logic; RdEn: in std_logic; + Reset: in std_logic; RPReset: in std_logic; + Q: out std_logic_vector(7 downto 0); Empty: out std_logic; + Full: out std_logic); +end component; + +-- parameterized module component instance +__ : fifo_64kx8 + port map (Data(7 downto 0)=>__, WrClock=>__, RdClock=>__, WrEn=>__, + RdEn=>__, Reset=>__, RPReset=>__, Q(7 downto 0)=>__, Empty=>__, + Full=>__); diff --git a/gbe_ecp2m/ipcores/ip_mem.lpc b/gbe_ecp2m/ipcores/ip_mem.lpc new file mode 100755 index 0000000..8383be6 --- /dev/null +++ b/gbe_ecp2m/ipcores/ip_mem.lpc @@ -0,0 +1,57 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=RAM_DP_TRUE +CoreRevision=7.1 +ModuleName=ip_mem +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=03/29/2010 +Time=21:52:48 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +AAddress=256 +BAddress=256 +AData=32 +BData=32 +enByte=0 +ByteSize=9 +AadPipeline=0 +BadPipeline=0 +AinPipeline=0 +BinPipeline=0 +AoutPipeline=0 +BoutPipeline=1 +AMOR=0 +BMOR=0 +AInData=Registered +BInData=Registered +AAdControl=Registered +BAdControl=Registered +MemFile=/home/greg/projects/HubGen3/NewHub3/hub2/ipexpress/ip_mem/ip_mem.mem +MemFormat=orca +Reset=Sync +GSR=Enabled +WriteA=Normal +WriteB=Normal +Pad=0 +EnECC=0 +Optimization=Speed +Pipeline=0 diff --git a/gbe_ecp2m/ipcores/ip_mem.mem b/gbe_ecp2m/ipcores/ip_mem.mem new file mode 100755 index 0000000..836ca91 --- /dev/null +++ b/gbe_ecp2m/ipcores/ip_mem.mem @@ -0,0 +1,277 @@ +#Format=Address-Hex +#Depth=256 +#DataWidth=32 +#AddrRadix=3 +#DataRadix=3 + +00: 214397e9 +01: 0000001b +02: c0a80002 +03: 0000c350 +04: 023bdc00 +05: 00000013 +06: c0a80005 +07: 0000c350 +08: 00000578 +09: 00000000 +0a: 00000000 +0b: 00000000 +0c: 00000000 +0d: 00000000 +0e: 00000000 +0f: 00000000 + +10: 214397e9 +11: 0000001b +12: c0a80002 +13: 0000c351 +14: 023bdc01 +15: 00000013 +16: c0a80006 +17: 0000c350 +18: 00000578 +19: 00000000 +1a: 00000000 +1b: 00000000 +1c: 00000000 +1d: 00000000 +1e: 00000000 +1f: 00000000 + +20: 214397e9 +21: 0000001b +22: c0a80002 +23: 0000c352 +24: 023bdc02 +25: 00000013 +26: c0a80007 +27: 0000c350 +28: 00000578 +29: 00000000 +2a: 00000000 +2b: 00000000 +2c: 00000000 +2d: 00000000 +2e: 00000000 +2f: 00000000 + +30: 214397e9 +31: 0000001b +32: c0a80002 +33: 0000c353 +34: 023bdc03 +35: 00000013 +36: c0a80008 +37: 0000c350 +38: 00000578 +39: 00000000 +3a: 00000000 +3b: 00000000 +3c: 00000000 +3d: 00000000 +3e: 00000000 +3f: 00000000 + +40: 00000000 +41: 00000000 +42: 00000000 +43: 00000000 +44: 00000000 +45: 00000000 +46: 00000000 +47: 00000000 +48: 00000578 +49: 00000000 +4a: 00000000 +4b: 00000000 +4c: 00000000 +4d: 00000000 +4e: 00000000 +4f: 00000000 + +50: 00000000 +51: 00000000 +52: 00000000 +53: 00000000 +54: 00000000 +55: 00000000 +56: 00000000 +57: 00000000 +58: 00000578 +59: 00000000 +5a: 00000000 +5b: 00000000 +5c: 00000000 +5d: 00000000 +5e: 00000000 +5f: 00000000 + +60: 00000000 +61: 00000000 +62: 00000000 +63: 00000000 +64: 00000000 +65: 00000000 +66: 00000000 +67: 00000000 +68: 00000578 +69: 00000000 +6a: 00000000 +6b: 00000000 +6c: 00000000 +6d: 00000000 +6e: 00000000 +6f: 00000000 + +70: 00000000 +71: 00000000 +72: 00000000 +73: 00000000 +74: 00000000 +75: 00000000 +76: 00000000 +77: 00000000 +78: 00000578 +79: 00000000 +7a: 00000000 +7b: 00000000 +7c: 00000000 +7d: 00000000 +7e: 00000000 +7f: 00000000 + +80: 00000000 +81: 00000000 +82: 00000000 +83: 00000000 +84: 00000000 +85: 00000000 +86: 00000000 +87: 00000000 +88: 00000578 +89: 00000000 +8a: 00000000 +8b: 00000000 +8c: 00000000 +8d: 00000000 +8e: 00000000 +8f: 00000000 + +90: 00000000 +91: 00000000 +92: 00000000 +93: 00000000 +94: 00000000 +95: 00000000 +96: 00000000 +97: 00000000 +98: 00000578 +99: 00000000 +9a: 00000000 +9b: 00000000 +9c: 00000000 +9d: 00000000 +9e: 00000000 +9f: 00000000 + +a0: 00000000 +a1: 00000000 +a2: 00000000 +a3: 00000000 +a4: 00000000 +a5: 00000000 +a6: 00000000 +a7: 00000000 +a8: 00000578 +a9: 00000000 +aa: 00000000 +ab: 00000000 +ac: 00000000 +ad: 00000000 +ae: 00000000 +af: 00000000 + +b0: 00000000 +b1: 00000000 +b2: 00000000 +b3: 00000000 +b4: 00000000 +b5: 00000000 +b6: 00000000 +b7: 00000000 +b8: 00000578 +b9: 00000000 +ba: 00000000 +bb: 00000000 +bc: 00000000 +bd: 00000000 +be: 00000000 +bf: 00000000 + +c0: 00000000 +c1: 00000000 +c2: 00000000 +c3: 00000000 +c4: 00000000 +c5: 00000000 +c6: 00000000 +c7: 00000000 +c8: 00000578 +c9: 00000000 +ca: 00000000 +cb: 00000000 +cc: 00000000 +cd: 00000000 +ce: 00000000 +cf: 00000000 + +d0: 00000000 +d1: 00000000 +d2: 00000000 +d3: 00000000 +d4: 00000000 +d5: 00000000 +d6: 00000000 +d7: 00000000 +d8: 00000578 +d9: 00000000 +da: 00000000 +db: 00000000 +dc: 00000000 +dd: 00000000 +de: 00000000 +df: 00000000 + +e0: 00000000 +e1: 00000000 +e2: 00000000 +e3: 00000000 +e4: 00000000 +e5: 00000000 +e6: 00000000 +e7: 00000000 +e8: 00000578 +e9: 00000000 +ea: 00000000 +eb: 00000000 +ec: 00000000 +ed: 00000000 +ee: 00000000 +ef: 00000000 + +f0: 00000000 +f1: 00000000 +f2: 00000000 +f3: 00000000 +f4: 00000000 +f5: 00000000 +f6: 00000000 +f7: 00000000 +f8: 00000578 +f9: 00000000 +fa: 00000000 +fb: 00000000 +fc: 00000000 +fd: 00000000 +fe: 00000000 +ff: 00000000 diff --git a/gbe_ecp2m/ipcores/ip_mem.vhd b/gbe_ecp2m/ipcores/ip_mem.vhd new file mode 100755 index 0000000..cfa2c6e --- /dev/null +++ b/gbe_ecp2m/ipcores/ip_mem.vhd @@ -0,0 +1,606 @@ +-- VHDL netlist generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 7.1 +--/opt/lattice/ispLEVER7.2/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type bram -wp 11 -rp 1010 -data_width 32 -rdata_width 32 -num_rows 256 -outdataB REGISTERED -writemodeA NORMAL -writemodeB NORMAL -resetmode SYNC -memfile /home/greg/projects/HubGen3/NewHub3/hub2/ipexpress/ip_mem/ip_mem.mem -memformat orca -cascade -1 -e + +-- Mon Mar 29 21:52:49 2010 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity ip_mem is + port ( + DataInA: in std_logic_vector(31 downto 0); + DataInB: in std_logic_vector(31 downto 0); + AddressA: in std_logic_vector(7 downto 0); + AddressB: in std_logic_vector(7 downto 0); + ClockA: in std_logic; + ClockB: in std_logic; + ClockEnA: in std_logic; + ClockEnB: in std_logic; + WrA: in std_logic; + WrB: in std_logic; + ResetA: in std_logic; + ResetB: in std_logic; + QA: out std_logic_vector(31 downto 0); + QB: out std_logic_vector(31 downto 0)); +end ip_mem; + +architecture Structure of ip_mem is + + -- internal signal declarations + signal scuba_vhi: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (INITVAL_3F : in String; INITVAL_3E : in String; + INITVAL_3D : in String; INITVAL_3C : in String; + INITVAL_3B : in String; INITVAL_3A : in String; + INITVAL_39 : in String; INITVAL_38 : in String; + INITVAL_37 : in String; INITVAL_36 : in String; + INITVAL_35 : in String; INITVAL_34 : in String; + INITVAL_33 : in String; INITVAL_32 : in String; + INITVAL_31 : in String; INITVAL_30 : in String; + INITVAL_2F : in String; INITVAL_2E : in String; + INITVAL_2D : in String; INITVAL_2C : in String; + INITVAL_2B : in String; INITVAL_2A : in String; + INITVAL_29 : in String; INITVAL_28 : in String; + INITVAL_27 : in String; INITVAL_26 : in String; + INITVAL_25 : in String; INITVAL_24 : in String; + INITVAL_23 : in String; INITVAL_22 : in String; + INITVAL_21 : in String; INITVAL_20 : in String; + INITVAL_1F : in String; INITVAL_1E : in String; + INITVAL_1D : in String; INITVAL_1C : in String; + INITVAL_1B : in String; INITVAL_1A : in String; + INITVAL_19 : in String; INITVAL_18 : in String; + INITVAL_17 : in String; INITVAL_16 : in String; + INITVAL_15 : in String; INITVAL_14 : in String; + INITVAL_13 : in String; INITVAL_12 : in String; + INITVAL_11 : in String; INITVAL_10 : in String; + INITVAL_0F : in String; INITVAL_0E : in String; + INITVAL_0D : in String; INITVAL_0C : in String; + INITVAL_0B : in String; INITVAL_0A : in String; + INITVAL_09 : in String; INITVAL_08 : in String; + INITVAL_07 : in String; INITVAL_06 : in String; + INITVAL_05 : in String; INITVAL_04 : in String; + INITVAL_03 : in String; INITVAL_02 : in String; + INITVAL_01 : in String; INITVAL_00 : in String; + GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute INITVAL_3F : string; + attribute INITVAL_3E : string; + attribute INITVAL_3D : string; + attribute INITVAL_3C : string; + attribute INITVAL_3B : string; + attribute INITVAL_3A : string; + attribute INITVAL_39 : string; + attribute INITVAL_38 : string; + attribute INITVAL_37 : string; + attribute INITVAL_36 : string; + attribute INITVAL_35 : string; + attribute INITVAL_34 : string; + attribute INITVAL_33 : string; + attribute INITVAL_32 : string; + attribute INITVAL_31 : string; + attribute INITVAL_30 : string; + attribute INITVAL_2F : string; + attribute INITVAL_2E : string; + attribute INITVAL_2D : string; + attribute INITVAL_2C : string; + attribute INITVAL_2B : string; + attribute INITVAL_2A : string; + attribute INITVAL_29 : string; + attribute INITVAL_28 : string; + attribute INITVAL_27 : string; + attribute INITVAL_26 : string; + attribute INITVAL_25 : string; + attribute INITVAL_24 : string; + attribute INITVAL_23 : string; + attribute INITVAL_22 : string; + attribute INITVAL_21 : string; + attribute INITVAL_20 : string; + attribute INITVAL_1F : string; + attribute INITVAL_1E : string; + attribute INITVAL_1D : string; + attribute INITVAL_1C : string; + attribute INITVAL_1B : string; + attribute INITVAL_1A : string; + attribute INITVAL_19 : string; + attribute INITVAL_18 : string; + attribute INITVAL_17 : string; + attribute INITVAL_16 : string; + attribute INITVAL_15 : string; + attribute INITVAL_14 : string; + attribute INITVAL_13 : string; + attribute INITVAL_12 : string; + attribute INITVAL_11 : string; + attribute INITVAL_10 : string; + attribute INITVAL_0F : string; + attribute INITVAL_0E : string; + attribute INITVAL_0D : string; + attribute INITVAL_0C : string; + attribute INITVAL_0B : string; + attribute INITVAL_0A : string; + attribute INITVAL_09 : string; + attribute INITVAL_08 : string; + attribute INITVAL_07 : string; + attribute INITVAL_06 : string; + attribute INITVAL_05 : string; + attribute INITVAL_04 : string; + attribute INITVAL_03 : string; + attribute INITVAL_02 : string; + attribute INITVAL_01 : string; + attribute INITVAL_00 : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute GSR : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute MEM_LPC_FILE of ip_mem_0_0_1 : label is "ip_mem.lpc"; + attribute MEM_INIT_FILE of ip_mem_0_0_1 : label is "ip_mem.mem"; + attribute INITVAL_3F of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3E of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3D of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3C of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3B of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3A of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_39 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_38 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_37 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_36 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_35 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_34 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_33 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_32 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_31 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_30 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2F of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2E of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2D of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2C of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2B of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2A of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_29 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_28 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_27 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_26 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_25 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_24 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_23 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_22 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_21 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_20 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1F of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1E of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1D of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1C of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1B of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1A of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_19 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_18 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_17 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_16 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_15 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_14 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_13 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_12 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_11 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_10 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0F of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_0E of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_0D of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_0C of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_0B of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_0A of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_09 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_08 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_07 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_06 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_05 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_04 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000"; + attribute INITVAL_03 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780C35000008000133DC030C353000020001B397E9"; + attribute INITVAL_02 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780C35000007000133DC020C352000020001B397E9"; + attribute INITVAL_01 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780C35000006000133DC010C351000020001B397E9"; + attribute INITVAL_00 of ip_mem_0_0_1 : label is "0x00000000000000000000000000000000000005780C35000005000133DC000C350000020001B397E9"; + attribute CSDECODE_B of ip_mem_0_0_1 : label is "0b000"; + attribute CSDECODE_A of ip_mem_0_0_1 : label is "0b000"; + attribute WRITEMODE_B of ip_mem_0_0_1 : label is "NORMAL"; + attribute WRITEMODE_A of ip_mem_0_0_1 : label is "NORMAL"; + attribute GSR of ip_mem_0_0_1 : label is "DISABLED"; + attribute RESETMODE of ip_mem_0_0_1 : label is "SYNC"; + attribute REGMODE_B of ip_mem_0_0_1 : label is "OUTREG"; + attribute REGMODE_A of ip_mem_0_0_1 : label is "NOREG"; + attribute DATA_WIDTH_B of ip_mem_0_0_1 : label is "18"; + attribute DATA_WIDTH_A of ip_mem_0_0_1 : label is "18"; + attribute MEM_LPC_FILE of ip_mem_0_1_0 : label is "ip_mem.lpc"; + attribute MEM_INIT_FILE of ip_mem_0_1_0 : label is "ip_mem.mem"; + attribute INITVAL_3F of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3E of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3D of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3C of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3B of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3A of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_39 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_38 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_37 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_36 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_35 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_34 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_33 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_32 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_31 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_30 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2F of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2E of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2D of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2C of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2B of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2A of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_29 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_28 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_27 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_26 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_25 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_24 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_23 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_22 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_21 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_20 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1F of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1E of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1D of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1C of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1B of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1A of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_19 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_18 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_17 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_16 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_15 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_14 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_13 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_12 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_11 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_10 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0F of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0E of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0D of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0C of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0B of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0A of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_09 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_08 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_07 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_06 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_05 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_04 of ip_mem_0_1_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_03 of ip_mem_0_1_0 : label is "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850"; + attribute INITVAL_02 of ip_mem_0_1_0 : label is "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850"; + attribute INITVAL_01 of ip_mem_0_1_0 : label is "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850"; + attribute INITVAL_00 of ip_mem_0_1_0 : label is "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850"; + attribute CSDECODE_B of ip_mem_0_1_0 : label is "0b000"; + attribute CSDECODE_A of ip_mem_0_1_0 : label is "0b000"; + attribute WRITEMODE_B of ip_mem_0_1_0 : label is "NORMAL"; + attribute WRITEMODE_A of ip_mem_0_1_0 : label is "NORMAL"; + attribute GSR of ip_mem_0_1_0 : label is "DISABLED"; + attribute RESETMODE of ip_mem_0_1_0 : label is "SYNC"; + attribute REGMODE_B of ip_mem_0_1_0 : label is "OUTREG"; + attribute REGMODE_A of ip_mem_0_1_0 : label is "NOREG"; + attribute DATA_WIDTH_B of ip_mem_0_1_0 : label is "18"; + attribute DATA_WIDTH_A of ip_mem_0_1_0 : label is "18"; + +begin + -- component instantiation statements + ip_mem_0_0_1: DP16KB + -- synopsys translate_off + generic map (INITVAL_3F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_39=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_38=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_37=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_36=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_35=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_34=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_33=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_32=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_31=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_30=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_29=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_28=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_27=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_26=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_25=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_24=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_23=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_22=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_21=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_20=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_19=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_18=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_17=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_16=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_15=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_14=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_13=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_12=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_11=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_10=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0F=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_0E=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_0D=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_0C=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_0B=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_0A=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_09=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_08=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_07=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_06=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_05=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_04=> "0x00000000000000000000000000000000000005780000000000000000000000000000000000000000", + INITVAL_03=> "0x00000000000000000000000000000000000005780C35000008000133DC030C353000020001B397E9", + INITVAL_02=> "0x00000000000000000000000000000000000005780C35000007000133DC020C352000020001B397E9", + INITVAL_01=> "0x00000000000000000000000000000000000005780C35000006000133DC010C351000020001B397E9", + INITVAL_00=> "0x00000000000000000000000000000000000005780C35000005000133DC000C350000020001B397E9", + CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "SYNC", + REGMODE_B=> "OUTREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 18, + DATA_WIDTH_A=> 18) + -- synopsys translate_on + port map (DIA0=>DataInA(0), DIA1=>DataInA(1), DIA2=>DataInA(2), + DIA3=>DataInA(3), DIA4=>DataInA(4), DIA5=>DataInA(5), + DIA6=>DataInA(6), DIA7=>DataInA(7), DIA8=>DataInA(8), + DIA9=>DataInA(9), DIA10=>DataInA(10), DIA11=>DataInA(11), + DIA12=>DataInA(12), DIA13=>DataInA(13), DIA14=>DataInA(14), + DIA15=>DataInA(15), DIA16=>DataInA(16), DIA17=>DataInA(17), + ADA0=>scuba_vhi, ADA1=>scuba_vhi, ADA2=>scuba_vlo, + ADA3=>scuba_vlo, ADA4=>AddressA(0), ADA5=>AddressA(1), + ADA6=>AddressA(2), ADA7=>AddressA(3), ADA8=>AddressA(4), + ADA9=>AddressA(5), ADA10=>AddressA(6), ADA11=>AddressA(7), + ADA12=>scuba_vlo, ADA13=>scuba_vlo, CEA=>ClockEnA, + CLKA=>ClockA, WEA=>WrA, CSA0=>scuba_vlo, CSA1=>scuba_vlo, + CSA2=>scuba_vlo, RSTA=>ResetA, DIB0=>DataInB(0), + DIB1=>DataInB(1), DIB2=>DataInB(2), DIB3=>DataInB(3), + DIB4=>DataInB(4), DIB5=>DataInB(5), DIB6=>DataInB(6), + DIB7=>DataInB(7), DIB8=>DataInB(8), DIB9=>DataInB(9), + DIB10=>DataInB(10), DIB11=>DataInB(11), DIB12=>DataInB(12), + DIB13=>DataInB(13), DIB14=>DataInB(14), DIB15=>DataInB(15), + DIB16=>DataInB(16), DIB17=>DataInB(17), ADB0=>scuba_vhi, + ADB1=>scuba_vhi, ADB2=>scuba_vlo, ADB3=>scuba_vlo, + ADB4=>AddressB(0), ADB5=>AddressB(1), ADB6=>AddressB(2), + ADB7=>AddressB(3), ADB8=>AddressB(4), ADB9=>AddressB(5), + ADB10=>AddressB(6), ADB11=>AddressB(7), ADB12=>scuba_vlo, + ADB13=>scuba_vlo, CEB=>ClockEnB, CLKB=>ClockB, WEB=>WrB, + CSB0=>scuba_vlo, CSB1=>scuba_vlo, CSB2=>scuba_vlo, + RSTB=>ResetB, DOA0=>QA(0), DOA1=>QA(1), DOA2=>QA(2), + DOA3=>QA(3), DOA4=>QA(4), DOA5=>QA(5), DOA6=>QA(6), + DOA7=>QA(7), DOA8=>QA(8), DOA9=>QA(9), DOA10=>QA(10), + DOA11=>QA(11), DOA12=>QA(12), DOA13=>QA(13), DOA14=>QA(14), + DOA15=>QA(15), DOA16=>QA(16), DOA17=>QA(17), DOB0=>QB(0), + DOB1=>QB(1), DOB2=>QB(2), DOB3=>QB(3), DOB4=>QB(4), + DOB5=>QB(5), DOB6=>QB(6), DOB7=>QB(7), DOB8=>QB(8), + DOB9=>QB(9), DOB10=>QB(10), DOB11=>QB(11), DOB12=>QB(12), + DOB13=>QB(13), DOB14=>QB(14), DOB15=>QB(15), DOB16=>QB(16), + DOB17=>QB(17)); + + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + ip_mem_0_1_0: DP16KB + -- synopsys translate_off + generic map (INITVAL_3F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_39=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_38=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_37=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_36=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_35=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_34=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_33=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_32=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_31=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_30=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_29=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_28=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_27=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_26=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_25=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_24=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_23=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_22=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_21=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_20=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_19=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_18=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_17=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_16=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_15=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_14=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_13=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_12=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_11=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_10=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_09=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_08=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_07=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_06=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_05=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_04=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_03=> "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850", + INITVAL_02=> "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850", + INITVAL_01=> "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850", + INITVAL_00=> "0x0000000000000000000000000000000000000000000000302A000000008E000000302A0000000850", + CSDECODE_B=> "000", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "SYNC", + REGMODE_B=> "OUTREG", REGMODE_A=> "NOREG", DATA_WIDTH_B=> 18, + DATA_WIDTH_A=> 18) + -- synopsys translate_on + port map (DIA0=>DataInA(18), DIA1=>DataInA(19), + DIA2=>DataInA(20), DIA3=>DataInA(21), DIA4=>DataInA(22), + DIA5=>DataInA(23), DIA6=>DataInA(24), DIA7=>DataInA(25), + DIA8=>DataInA(26), DIA9=>DataInA(27), DIA10=>DataInA(28), + DIA11=>DataInA(29), DIA12=>DataInA(30), DIA13=>DataInA(31), + DIA14=>scuba_vlo, DIA15=>scuba_vlo, DIA16=>scuba_vlo, + DIA17=>scuba_vlo, ADA0=>scuba_vhi, ADA1=>scuba_vhi, + ADA2=>scuba_vlo, ADA3=>scuba_vlo, ADA4=>AddressA(0), + ADA5=>AddressA(1), ADA6=>AddressA(2), ADA7=>AddressA(3), + ADA8=>AddressA(4), ADA9=>AddressA(5), ADA10=>AddressA(6), + ADA11=>AddressA(7), ADA12=>scuba_vlo, ADA13=>scuba_vlo, + CEA=>ClockEnA, CLKA=>ClockA, WEA=>WrA, CSA0=>scuba_vlo, + CSA1=>scuba_vlo, CSA2=>scuba_vlo, RSTA=>ResetA, + DIB0=>DataInB(18), DIB1=>DataInB(19), DIB2=>DataInB(20), + DIB3=>DataInB(21), DIB4=>DataInB(22), DIB5=>DataInB(23), + DIB6=>DataInB(24), DIB7=>DataInB(25), DIB8=>DataInB(26), + DIB9=>DataInB(27), DIB10=>DataInB(28), DIB11=>DataInB(29), + DIB12=>DataInB(30), DIB13=>DataInB(31), DIB14=>scuba_vlo, + DIB15=>scuba_vlo, DIB16=>scuba_vlo, DIB17=>scuba_vlo, + ADB0=>scuba_vhi, ADB1=>scuba_vhi, ADB2=>scuba_vlo, + ADB3=>scuba_vlo, ADB4=>AddressB(0), ADB5=>AddressB(1), + ADB6=>AddressB(2), ADB7=>AddressB(3), ADB8=>AddressB(4), + ADB9=>AddressB(5), ADB10=>AddressB(6), ADB11=>AddressB(7), + ADB12=>scuba_vlo, ADB13=>scuba_vlo, CEB=>ClockEnB, + CLKB=>ClockB, WEB=>WrB, CSB0=>scuba_vlo, CSB1=>scuba_vlo, + CSB2=>scuba_vlo, RSTB=>ResetB, DOA0=>QA(18), DOA1=>QA(19), + DOA2=>QA(20), DOA3=>QA(21), DOA4=>QA(22), DOA5=>QA(23), + DOA6=>QA(24), DOA7=>QA(25), DOA8=>QA(26), DOA9=>QA(27), + DOA10=>QA(28), DOA11=>QA(29), DOA12=>QA(30), DOA13=>QA(31), + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>QB(18), DOB1=>QB(19), DOB2=>QB(20), DOB3=>QB(21), + DOB4=>QB(22), DOB5=>QB(23), DOB6=>QB(24), DOB7=>QB(25), + DOB8=>QB(26), DOB9=>QB(27), DOB10=>QB(28), DOB11=>QB(29), + DOB12=>QB(30), DOB13=>QB(31), DOB14=>open, DOB15=>open, + DOB16=>open, DOB17=>open); + +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of ip_mem is + for Structure + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/ip_mem_tmpl.vhd b/gbe_ecp2m/ipcores/ip_mem_tmpl.vhd new file mode 100755 index 0000000..7d1cea6 --- /dev/null +++ b/gbe_ecp2m/ipcores/ip_mem_tmpl.vhd @@ -0,0 +1,23 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 7.1 +-- Mon Mar 29 21:52:49 2010 + +-- parameterized module component declaration +component ip_mem + port (DataInA: in std_logic_vector(31 downto 0); + DataInB: in std_logic_vector(31 downto 0); + AddressA: in std_logic_vector(7 downto 0); + AddressB: in std_logic_vector(7 downto 0); + ClockA: in std_logic; ClockB: in std_logic; + ClockEnA: in std_logic; ClockEnB: in std_logic; + WrA: in std_logic; WrB: in std_logic; ResetA: in std_logic; + ResetB: in std_logic; QA: out std_logic_vector(31 downto 0); + QB: out std_logic_vector(31 downto 0)); +end component; + +-- parameterized module component instance +__ : ip_mem + port map (DataInA(31 downto 0)=>__, DataInB(31 downto 0)=>__, + AddressA(7 downto 0)=>__, AddressB(7 downto 0)=>__, ClockA=>__, + ClockB=>__, ClockEnA=>__, ClockEnB=>__, WrA=>__, WrB=>__, ResetA=>__, + ResetB=>__, QA(31 downto 0)=>__, QB(31 downto 0)=>__); diff --git a/gbe_ecp2m/ipcores/macInitDataInvWithMac.mem b/gbe_ecp2m/ipcores/macInitDataInvWithMac.mem new file mode 100755 index 0000000..c93b822 --- /dev/null +++ b/gbe_ecp2m/ipcores/macInitDataInvWithMac.mem @@ -0,0 +1,59 @@ +#Format=Bin +#Depth=54 +#Width=8 +#AddrRadix=3 +#DataRadix=3 +#Data +00001111 +00001111 +10011001 +00000001 +11101110 +00000101 +00000000 +00000000 +00001100 +00000000 +00110100 +00010010 +01111000 +01010110 +10111100 +10011010 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +10000000 diff --git a/gbe_ecp2m/ipcores/mac_init_mem.lpc b/gbe_ecp2m/ipcores/mac_init_mem.lpc new file mode 100755 index 0000000..02c8376 --- /dev/null +++ b/gbe_ecp2m/ipcores/mac_init_mem.lpc @@ -0,0 +1,45 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-6F900C +SpeedGrade=-6 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=ROM +CoreRevision=5.0 +ModuleName=mac_init_mem +SourceFormat=VHDL +ParameterFileVersion=1.0 +Date=08/20/2009 +Time=16:00:49 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +Address=54 +Data=8 +adPipeline=0 +inPipeline=0 +outPipeline=1 +MOR=0 +InData=Registered +AdControl=Registered +MemFile=/home/greg/NewHub2/hub2/ipexpress/mac_init_mem/macInitDataInvWithMac.mem +MemFormat=bin +Reset=Sync +Pad=0 +GSR=Enabled +EnECC=0 +Optimization=Speed +Pipeline=0 diff --git a/gbe_ecp2m/ipcores/mac_init_mem.vhd b/gbe_ecp2m/ipcores/mac_init_mem.vhd new file mode 100755 index 0000000..c2c95e4 --- /dev/null +++ b/gbe_ecp2m/ipcores/mac_init_mem.vhd @@ -0,0 +1,413 @@ +-- VHDL netlist generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.0 +--/opt/lattice/ispLEVER7.2/isptools/ispfpga/bin/lin/scuba -w -lang vhdl -synth synplify -bus_exp 7 -bb -arch ep5m00 -type bram -wp 00 -rp 1100 -addr_width 6 -data_width 8 -num_rows 54 -outdata REGISTERED -resetmode SYNC -memfile /home/greg/NewHub2/hub2/ipexpress/mac_init_mem/macInitDataInvWithMac.mem -memformat bin -cascade -1 -e + +-- Thu Aug 20 16:00:49 2009 + +library IEEE; +use IEEE.std_logic_1164.all; +-- synopsys translate_off +library ecp2m; +use ecp2m.components.all; +-- synopsys translate_on + +entity mac_init_mem is + port ( + Address: in std_logic_vector(5 downto 0); + OutClock: in std_logic; + OutClockEn: in std_logic; + Reset: in std_logic; + Q: out std_logic_vector(7 downto 0)); +end mac_init_mem; + +architecture Structure of mac_init_mem is + + -- internal signal declarations + signal scuba_vhi: std_logic; + signal scuba_vlo: std_logic; + + -- local component declarations + component VHI + port (Z: out std_logic); + end component; + component VLO + port (Z: out std_logic); + end component; + component DP16KB + -- synopsys translate_off + generic (INITVAL_3F : in String; INITVAL_3E : in String; + INITVAL_3D : in String; INITVAL_3C : in String; + INITVAL_3B : in String; INITVAL_3A : in String; + INITVAL_39 : in String; INITVAL_38 : in String; + INITVAL_37 : in String; INITVAL_36 : in String; + INITVAL_35 : in String; INITVAL_34 : in String; + INITVAL_33 : in String; INITVAL_32 : in String; + INITVAL_31 : in String; INITVAL_30 : in String; + INITVAL_2F : in String; INITVAL_2E : in String; + INITVAL_2D : in String; INITVAL_2C : in String; + INITVAL_2B : in String; INITVAL_2A : in String; + INITVAL_29 : in String; INITVAL_28 : in String; + INITVAL_27 : in String; INITVAL_26 : in String; + INITVAL_25 : in String; INITVAL_24 : in String; + INITVAL_23 : in String; INITVAL_22 : in String; + INITVAL_21 : in String; INITVAL_20 : in String; + INITVAL_1F : in String; INITVAL_1E : in String; + INITVAL_1D : in String; INITVAL_1C : in String; + INITVAL_1B : in String; INITVAL_1A : in String; + INITVAL_19 : in String; INITVAL_18 : in String; + INITVAL_17 : in String; INITVAL_16 : in String; + INITVAL_15 : in String; INITVAL_14 : in String; + INITVAL_13 : in String; INITVAL_12 : in String; + INITVAL_11 : in String; INITVAL_10 : in String; + INITVAL_0F : in String; INITVAL_0E : in String; + INITVAL_0D : in String; INITVAL_0C : in String; + INITVAL_0B : in String; INITVAL_0A : in String; + INITVAL_09 : in String; INITVAL_08 : in String; + INITVAL_07 : in String; INITVAL_06 : in String; + INITVAL_05 : in String; INITVAL_04 : in String; + INITVAL_03 : in String; INITVAL_02 : in String; + INITVAL_01 : in String; INITVAL_00 : in String; + GSR : in String; WRITEMODE_B : in String; + CSDECODE_B : in std_logic_vector(2 downto 0); + CSDECODE_A : in std_logic_vector(2 downto 0); + WRITEMODE_A : in String; RESETMODE : in String; + REGMODE_B : in String; REGMODE_A : in String; + DATA_WIDTH_B : in Integer; DATA_WIDTH_A : in Integer); + -- synopsys translate_on + port (DIA0: in std_logic; DIA1: in std_logic; + DIA2: in std_logic; DIA3: in std_logic; + DIA4: in std_logic; DIA5: in std_logic; + DIA6: in std_logic; DIA7: in std_logic; + DIA8: in std_logic; DIA9: in std_logic; + DIA10: in std_logic; DIA11: in std_logic; + DIA12: in std_logic; DIA13: in std_logic; + DIA14: in std_logic; DIA15: in std_logic; + DIA16: in std_logic; DIA17: in std_logic; + ADA0: in std_logic; ADA1: in std_logic; + ADA2: in std_logic; ADA3: in std_logic; + ADA4: in std_logic; ADA5: in std_logic; + ADA6: in std_logic; ADA7: in std_logic; + ADA8: in std_logic; ADA9: in std_logic; + ADA10: in std_logic; ADA11: in std_logic; + ADA12: in std_logic; ADA13: in std_logic; + CEA: in std_logic; CLKA: in std_logic; WEA: in std_logic; + CSA0: in std_logic; CSA1: in std_logic; + CSA2: in std_logic; RSTA: in std_logic; + DIB0: in std_logic; DIB1: in std_logic; + DIB2: in std_logic; DIB3: in std_logic; + DIB4: in std_logic; DIB5: in std_logic; + DIB6: in std_logic; DIB7: in std_logic; + DIB8: in std_logic; DIB9: in std_logic; + DIB10: in std_logic; DIB11: in std_logic; + DIB12: in std_logic; DIB13: in std_logic; + DIB14: in std_logic; DIB15: in std_logic; + DIB16: in std_logic; DIB17: in std_logic; + ADB0: in std_logic; ADB1: in std_logic; + ADB2: in std_logic; ADB3: in std_logic; + ADB4: in std_logic; ADB5: in std_logic; + ADB6: in std_logic; ADB7: in std_logic; + ADB8: in std_logic; ADB9: in std_logic; + ADB10: in std_logic; ADB11: in std_logic; + ADB12: in std_logic; ADB13: in std_logic; + CEB: in std_logic; CLKB: in std_logic; WEB: in std_logic; + CSB0: in std_logic; CSB1: in std_logic; + CSB2: in std_logic; RSTB: in std_logic; + DOA0: out std_logic; DOA1: out std_logic; + DOA2: out std_logic; DOA3: out std_logic; + DOA4: out std_logic; DOA5: out std_logic; + DOA6: out std_logic; DOA7: out std_logic; + DOA8: out std_logic; DOA9: out std_logic; + DOA10: out std_logic; DOA11: out std_logic; + DOA12: out std_logic; DOA13: out std_logic; + DOA14: out std_logic; DOA15: out std_logic; + DOA16: out std_logic; DOA17: out std_logic; + DOB0: out std_logic; DOB1: out std_logic; + DOB2: out std_logic; DOB3: out std_logic; + DOB4: out std_logic; DOB5: out std_logic; + DOB6: out std_logic; DOB7: out std_logic; + DOB8: out std_logic; DOB9: out std_logic; + DOB10: out std_logic; DOB11: out std_logic; + DOB12: out std_logic; DOB13: out std_logic; + DOB14: out std_logic; DOB15: out std_logic; + DOB16: out std_logic; DOB17: out std_logic); + end component; + attribute MEM_LPC_FILE : string; + attribute MEM_INIT_FILE : string; + attribute INITVAL_3F : string; + attribute INITVAL_3E : string; + attribute INITVAL_3D : string; + attribute INITVAL_3C : string; + attribute INITVAL_3B : string; + attribute INITVAL_3A : string; + attribute INITVAL_39 : string; + attribute INITVAL_38 : string; + attribute INITVAL_37 : string; + attribute INITVAL_36 : string; + attribute INITVAL_35 : string; + attribute INITVAL_34 : string; + attribute INITVAL_33 : string; + attribute INITVAL_32 : string; + attribute INITVAL_31 : string; + attribute INITVAL_30 : string; + attribute INITVAL_2F : string; + attribute INITVAL_2E : string; + attribute INITVAL_2D : string; + attribute INITVAL_2C : string; + attribute INITVAL_2B : string; + attribute INITVAL_2A : string; + attribute INITVAL_29 : string; + attribute INITVAL_28 : string; + attribute INITVAL_27 : string; + attribute INITVAL_26 : string; + attribute INITVAL_25 : string; + attribute INITVAL_24 : string; + attribute INITVAL_23 : string; + attribute INITVAL_22 : string; + attribute INITVAL_21 : string; + attribute INITVAL_20 : string; + attribute INITVAL_1F : string; + attribute INITVAL_1E : string; + attribute INITVAL_1D : string; + attribute INITVAL_1C : string; + attribute INITVAL_1B : string; + attribute INITVAL_1A : string; + attribute INITVAL_19 : string; + attribute INITVAL_18 : string; + attribute INITVAL_17 : string; + attribute INITVAL_16 : string; + attribute INITVAL_15 : string; + attribute INITVAL_14 : string; + attribute INITVAL_13 : string; + attribute INITVAL_12 : string; + attribute INITVAL_11 : string; + attribute INITVAL_10 : string; + attribute INITVAL_0F : string; + attribute INITVAL_0E : string; + attribute INITVAL_0D : string; + attribute INITVAL_0C : string; + attribute INITVAL_0B : string; + attribute INITVAL_0A : string; + attribute INITVAL_09 : string; + attribute INITVAL_08 : string; + attribute INITVAL_07 : string; + attribute INITVAL_06 : string; + attribute INITVAL_05 : string; + attribute INITVAL_04 : string; + attribute INITVAL_03 : string; + attribute INITVAL_02 : string; + attribute INITVAL_01 : string; + attribute INITVAL_00 : string; + attribute CSDECODE_B : string; + attribute CSDECODE_A : string; + attribute WRITEMODE_B : string; + attribute WRITEMODE_A : string; + attribute GSR : string; + attribute RESETMODE : string; + attribute REGMODE_B : string; + attribute REGMODE_A : string; + attribute DATA_WIDTH_B : string; + attribute DATA_WIDTH_A : string; + attribute MEM_LPC_FILE of mac_init_mem_0_0_0 : label is "mac_init_mem.lpc"; + attribute MEM_INIT_FILE of mac_init_mem_0_0_0 : label is "macInitDataInvWithMac.mem"; + attribute INITVAL_3F of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3E of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3D of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3C of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3B of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_3A of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_39 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_38 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_37 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_36 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_35 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_34 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_33 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_32 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_31 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_30 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2F of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2E of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2D of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2C of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2B of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_2A of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_29 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_28 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_27 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_26 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_25 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_24 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_23 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_22 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_21 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_20 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1F of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1E of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1D of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1C of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1B of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_1A of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_19 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_18 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_17 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_16 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_15 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_14 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_13 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_12 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_11 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_10 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0F of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0E of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0D of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0C of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0B of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_0A of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_09 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_08 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_07 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_06 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_05 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_04 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_03 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_02 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000"; + attribute INITVAL_01 of mac_init_mem_0_0_0 : label is "0x00000000000000000000000000008000000000000000000000000000000000000000000000000000"; + attribute INITVAL_00 of mac_init_mem_0_0_0 : label is "0x0000000000000000000000000000000000000000134BC0AC78024340000C0000000AEE0029901E0F"; + attribute CSDECODE_B of mac_init_mem_0_0_0 : label is "0b111"; + attribute CSDECODE_A of mac_init_mem_0_0_0 : label is "0b000"; + attribute WRITEMODE_B of mac_init_mem_0_0_0 : label is "NORMAL"; + attribute WRITEMODE_A of mac_init_mem_0_0_0 : label is "NORMAL"; + attribute GSR of mac_init_mem_0_0_0 : label is "DISABLED"; + attribute RESETMODE of mac_init_mem_0_0_0 : label is "SYNC"; + attribute REGMODE_B of mac_init_mem_0_0_0 : label is "NOREG"; + attribute REGMODE_A of mac_init_mem_0_0_0 : label is "OUTREG"; + attribute DATA_WIDTH_B of mac_init_mem_0_0_0 : label is "9"; + attribute DATA_WIDTH_A of mac_init_mem_0_0_0 : label is "9"; + +begin + -- component instantiation statements + scuba_vhi_inst: VHI + port map (Z=>scuba_vhi); + + scuba_vlo_inst: VLO + port map (Z=>scuba_vlo); + + mac_init_mem_0_0_0: DP16KB + -- synopsys translate_off + generic map (INITVAL_3F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_3A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_39=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_38=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_37=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_36=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_35=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_34=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_33=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_32=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_31=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_30=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_2A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_29=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_28=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_27=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_26=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_25=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_24=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_23=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_22=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_21=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_20=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_1A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_19=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_18=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_17=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_16=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_15=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_14=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_13=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_12=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_11=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_10=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0F=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0E=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0D=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0C=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0B=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_0A=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_09=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_08=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_07=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_06=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_05=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_04=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_03=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_02=> "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000", + INITVAL_01=> "0x00000000000000000000000000008000000000000000000000000000000000000000000000000000", + INITVAL_00=> "0x0000000000000000000000000000000000000000134BC0AC78024340000C0000000AEE0029901E0F", + CSDECODE_B=> "111", CSDECODE_A=> "000", WRITEMODE_B=> "NORMAL", + WRITEMODE_A=> "NORMAL", GSR=> "DISABLED", RESETMODE=> "SYNC", + REGMODE_B=> "NOREG", REGMODE_A=> "OUTREG", DATA_WIDTH_B=> 9, + DATA_WIDTH_A=> 9) + -- synopsys translate_on + port map (DIA0=>scuba_vlo, DIA1=>scuba_vlo, DIA2=>scuba_vlo, + DIA3=>scuba_vlo, DIA4=>scuba_vlo, DIA5=>scuba_vlo, + DIA6=>scuba_vlo, DIA7=>scuba_vlo, DIA8=>scuba_vlo, + DIA9=>scuba_vlo, DIA10=>scuba_vlo, DIA11=>scuba_vlo, + DIA12=>scuba_vlo, DIA13=>scuba_vlo, DIA14=>scuba_vlo, + DIA15=>scuba_vlo, DIA16=>scuba_vlo, DIA17=>scuba_vlo, + ADA0=>scuba_vlo, ADA1=>scuba_vlo, ADA2=>scuba_vlo, + ADA3=>Address(0), ADA4=>Address(1), ADA5=>Address(2), + ADA6=>Address(3), ADA7=>Address(4), ADA8=>Address(5), + ADA9=>scuba_vlo, ADA10=>scuba_vlo, ADA11=>scuba_vlo, + ADA12=>scuba_vlo, ADA13=>scuba_vlo, CEA=>OutClockEn, + CLKA=>OutClock, WEA=>scuba_vlo, CSA0=>scuba_vlo, + CSA1=>scuba_vlo, CSA2=>scuba_vlo, RSTA=>Reset, + DIB0=>scuba_vlo, DIB1=>scuba_vlo, DIB2=>scuba_vlo, + DIB3=>scuba_vlo, DIB4=>scuba_vlo, DIB5=>scuba_vlo, + DIB6=>scuba_vlo, DIB7=>scuba_vlo, DIB8=>scuba_vlo, + DIB9=>scuba_vlo, DIB10=>scuba_vlo, DIB11=>scuba_vlo, + DIB12=>scuba_vlo, DIB13=>scuba_vlo, DIB14=>scuba_vlo, + DIB15=>scuba_vlo, DIB16=>scuba_vlo, DIB17=>scuba_vlo, + ADB0=>scuba_vlo, ADB1=>scuba_vlo, ADB2=>scuba_vlo, + ADB3=>scuba_vlo, ADB4=>scuba_vlo, ADB5=>scuba_vlo, + ADB6=>scuba_vlo, ADB7=>scuba_vlo, ADB8=>scuba_vlo, + ADB9=>scuba_vlo, ADB10=>scuba_vlo, ADB11=>scuba_vlo, + ADB12=>scuba_vlo, ADB13=>scuba_vlo, CEB=>scuba_vhi, + CLKB=>scuba_vlo, WEB=>scuba_vlo, CSB0=>scuba_vlo, + CSB1=>scuba_vlo, CSB2=>scuba_vlo, RSTB=>scuba_vlo, + DOA0=>Q(0), DOA1=>Q(1), DOA2=>Q(2), DOA3=>Q(3), DOA4=>Q(4), + DOA5=>Q(5), DOA6=>Q(6), DOA7=>Q(7), DOA8=>open, DOA9=>open, + DOA10=>open, DOA11=>open, DOA12=>open, DOA13=>open, + DOA14=>open, DOA15=>open, DOA16=>open, DOA17=>open, + DOB0=>open, DOB1=>open, DOB2=>open, DOB3=>open, DOB4=>open, + DOB5=>open, DOB6=>open, DOB7=>open, DOB8=>open, DOB9=>open, + DOB10=>open, DOB11=>open, DOB12=>open, DOB13=>open, + DOB14=>open, DOB15=>open, DOB16=>open, DOB17=>open); + +end Structure; + +-- synopsys translate_off +library ecp2m; +configuration Structure_CON of mac_init_mem is + for Structure + for all:VHI use entity ecp2m.VHI(V); end for; + for all:VLO use entity ecp2m.VLO(V); end for; + for all:DP16KB use entity ecp2m.DP16KB(V); end for; + end for; +end Structure_CON; + +-- synopsys translate_on diff --git a/gbe_ecp2m/ipcores/mac_init_mem_tmpl.vhd b/gbe_ecp2m/ipcores/mac_init_mem_tmpl.vhd new file mode 100755 index 0000000..1aee5c2 --- /dev/null +++ b/gbe_ecp2m/ipcores/mac_init_mem_tmpl.vhd @@ -0,0 +1,15 @@ +-- VHDL module instantiation generated by SCUBA ispLever_v72_SP2_Build (23) +-- Module Version: 5.0 +-- Thu Aug 20 16:00:49 2009 + +-- parameterized module component declaration +component mac_init_mem + port (Address: in std_logic_vector(5 downto 0); + OutClock: in std_logic; OutClockEn: in std_logic; + Reset: in std_logic; Q: out std_logic_vector(7 downto 0)); +end component; + +-- parameterized module component instance +__ : mac_init_mem + port map (Address(5 downto 0)=>__, OutClock=>__, OutClockEn=>__, + Reset=>__, Q(7 downto 0)=>__); diff --git a/gbe_ecp2m/ipcores/serdes/.cvsignore b/gbe_ecp2m/ipcores/serdes/.cvsignore new file mode 100644 index 0000000..85eef7b --- /dev/null +++ b/gbe_ecp2m/ipcores/serdes/.cvsignore @@ -0,0 +1,9 @@ +*.jhd +*.naf +*.srp +*.sym +*.log +*.pp +*.tft +*.readme +*tmpl.vhd diff --git a/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.lpc b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.lpc new file mode 100755 index 0000000..4efe9cf --- /dev/null +++ b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.lpc @@ -0,0 +1,140 @@ +[Device] +Family=latticeecp2m +PartType=LFE2M100E +PartName=LFE2M100E-6F900C +SpeedGrade=-6 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=LPM +CoreStatus=Demo +CoreName=PCS +CoreRevision=7.0 +ModuleName=serdes_gbe_0_extclock_8b +SourceFormat=Schematic/VHDL +ParameterFileVersion=1.0 +Date=08/20/2009 +Time=11:50:53 + +[Parameters] +Verilog=0 +VHDL=1 +EDIF=1 +Destination=Synplicity +Expression=BusA(0 to 7) +Order=Big Endian [MSB:LSB] +IO=0 +Protocol=Quad +mode=Gigabit Ethernet +Channel0=SINGLE +Channel1=DISABLE +Channel2=DISABLE +Channel3=DISABLE +Rate0=None +Rate1=None +Rate2=None +Rate3=None +TxRefClk=REFCLK +RxRefClk=REFCLK +ClkRate=1.25 +ClkMult=10X +CalClkRate=125.0 +DataWidth=8 +FPGAClkRate=125.0 +TxRefClkCM=REFCLK +RxRefClk0CM=REFCLK +RxRefClk1CM=REFCLK +RxRefClk2CM=REFCLK +RxRefClk3CM=REFCLK +ClkRateH=0.625 +ClkMultH=10XH +CalClkRateH=125.0 +DataWidthH=8 +FPGAClkRateH=62.5 +VCh0=0 +VCh1=0 +VCh2=0 +VCh3=0 +PreCh0=DISABLE +PreCh1=DISABLE +PreCh2=DISABLE +PreCh3=DISABLE +TxCh0=50 +TxCh1=50 +TxCh2=50 +TxCh3=50 +EqCh0=DISABLE +EqCh1=DISABLE +EqCh2=DISABLE +EqCh3=DISABLE +RxTermCh0=50 +RxTermCh1=50 +RxTermCh2=50 +RxTermCh3=50 +RxCoupCh0=AC +RxCoupCh1=AC +RxCoupCh2=AC +RxCoupCh3=AC +Loss=0 +CDRLoss=0 +TxTerm=50 +TxCoup=AC +TxPllLoss=0 +TxInvCh0=NORMAL +TxInvCh1=NORMAL +TxInvCh2=NORMAL +TxInvCh3=NORMAL +RxInvCh0=NORMAL +RxInvCh1=NORMAL +RxInvCh2=NORMAL +RxInvCh3=NORMAL +RxModeCh0=NORMAL +RxModeCh1=NORMAL +RxModeCh2=NORMAL +RxModeCh3=NORMAL +Plus=1100000101 +Minus=0011111010 +Mask=1111111111 +Align=AUTO +CTCCh0=NORMAL +CTCCh1=NORMAL +CTCCh2=NORMAL +CTCCh3=NORMAL +CC_MATCH1=0000000000 +CC_MATCH2=0000000000 +CC_MATCH3=0110111100 +CC_MATCH4=0001010000 +MinIPG=3 +High=9 +Low=7 +CC_MATCH_MODE=MATCH_3_4 +RxDataCh0=FALSE +RxDataCh1=FALSE +RxDataCh2=FALSE +RxDataCh3=FALSE +AlignerCh0=FALSE +AlignerCh1=FALSE +AlignerCh2=FALSE +AlignerCh3=FALSE +DetectCh0=FALSE +DetectCh1=FALSE +DetectCh2=FALSE +DetectCh3=FALSE +ELSMCh0=FALSE +ELSMCh1=FALSE +ELSMCh2=FALSE +ELSMCh3=FALSE +_teidleCh0=FALSE +_teidleCh1=FALSE +_teidleCh2=FALSE +_teidleCh3=FALSE +Ports0=FALSE +rdoPorts0=Serial Loopback +Ports1=FALSE +Ports2=TRUE +Ports3=FALSE +Ports3_1=FALSE +Ports4=FALSE diff --git a/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.txt b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.txt new file mode 100755 index 0000000..6aad9a9 --- /dev/null +++ b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.txt @@ -0,0 +1,49 @@ + +# This file is used by the simulation model as well as the ispLEVER bitstream +# generation process to automatically initialize the PCSC quad to the mode +# selected in the IPexpress. This file is expected to be modified by the +# end user to adjust the PCSC quad to the final design requirements. + +DEVICE_NAME "LFE2M100E" +PROTOCOL "GIGE" +CH0_MODE "SINGLE" +CH1_MODE "DISABLE" +CH2_MODE "DISABLE" +CH3_MODE "DISABLE" +PLL_SRC "REFCLK" +DATARANGE "MED" +CH0_CDR_SRC "REFCLK" +CH0_DATA_WIDTH "8" +CH0_REFCK_MULT "10X" +#REFCLK_RATE 125.0 +#FPGAINTCLK_RATE 125.0 +CH0_TDRV_AMP "0" +CH0_TX_PRE "DISABLE" +CH0_RTERM_TX "50" +CH0_RX_EQ "DISABLE" +CH0_RTERM_RX "50" +CH0_RX_DCC "AC" +LOS_THRESHOLD "0" +PLL_TERM "50" +PLL_DCC "AC" +PLL_LOL_SET "0" +CH0_TX_SB "NORMAL" +CH0_RX_SB "NORMAL" +CH0_8B10B "NORMAL" +COMMA_A "1100000101" +COMMA_B "0011111010" +COMMA_M "1111111111" +CH0_COMMA_ALIGN "AUTO" +CH0_CTC_BYP "NORMAL" +CC_MATCH1 "0000000000" +CC_MATCH2 "0000000000" +CC_MATCH3 "0110111100" +CC_MATCH4 "0001010000" +CC_MATCH_MODE "MATCH_3_4" +CC_MIN_IPG "3" +CCHMARK "9" +CCLMARK "7" +OS_REFCK2CORE "1" +OS_PLLQCLKPORTS "0" +OS_INT_ALL "0" + diff --git a/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.vhd b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.vhd new file mode 100755 index 0000000..c3d0eda --- /dev/null +++ b/gbe_ecp2m/ipcores/serdes/serdes_gbe_0_extclock_8b.vhd @@ -0,0 +1,2182 @@ + + +--synopsys translate_off + +library pcsc_work; +use pcsc_work.all; +library IEEE; +use IEEE.std_logic_1164.all; + +entity PCSC is +GENERIC( + CONFIG_FILE : String := "serdes_gbe_0_extclock_8b.txt" + ); +port ( + HDINN0 : in std_logic; + HDINN1 : in std_logic; + HDINN2 : in std_logic; + HDINN3 : in std_logic; + HDINP0 : in std_logic; + HDINP1 : in std_logic; + HDINP2 : in std_logic; + HDINP3 : in std_logic; + REFCLKN : in std_logic; + REFCLKP : in std_logic; + CIN0 : in std_logic; + CIN1 : in std_logic; + CIN2 : in std_logic; + CIN3 : in std_logic; + CIN4 : in std_logic; + CIN5 : in std_logic; + CIN6 : in std_logic; + CIN7 : in std_logic; + CIN8 : in std_logic; + CIN9 : in std_logic; + CIN10 : in std_logic; + CIN11 : in std_logic; + CYAWSTN : in std_logic; + FF_EBRD_CLK_0 : in std_logic; + FF_EBRD_CLK_1 : in std_logic; + FF_EBRD_CLK_2 : in std_logic; + FF_EBRD_CLK_3 : in std_logic; + FF_RXI_CLK_0 : in std_logic; + FF_RXI_CLK_1 : in std_logic; + FF_RXI_CLK_2 : in std_logic; + FF_RXI_CLK_3 : in std_logic; + FF_TX_D_0_0 : in std_logic; + FF_TX_D_0_1 : in std_logic; + FF_TX_D_0_2 : in std_logic; + FF_TX_D_0_3 : in std_logic; + FF_TX_D_0_4 : in std_logic; + FF_TX_D_0_5 : in std_logic; + FF_TX_D_0_6 : in std_logic; + FF_TX_D_0_7 : in std_logic; + FF_TX_D_0_8 : in std_logic; + FF_TX_D_0_9 : in std_logic; + FF_TX_D_0_10 : in std_logic; + FF_TX_D_0_11 : in std_logic; + FF_TX_D_0_12 : in std_logic; + FF_TX_D_0_13 : in std_logic; + FF_TX_D_0_14 : in std_logic; + FF_TX_D_0_15 : in std_logic; + FF_TX_D_0_16 : in std_logic; + FF_TX_D_0_17 : in std_logic; + FF_TX_D_0_18 : in std_logic; + FF_TX_D_0_19 : in std_logic; + FF_TX_D_0_20 : in std_logic; + FF_TX_D_0_21 : in std_logic; + FF_TX_D_0_22 : in std_logic; + FF_TX_D_0_23 : in std_logic; + FF_TX_D_1_0 : in std_logic; + FF_TX_D_1_1 : in std_logic; + FF_TX_D_1_2 : in std_logic; + FF_TX_D_1_3 : in std_logic; + FF_TX_D_1_4 : in std_logic; + FF_TX_D_1_5 : in std_logic; + FF_TX_D_1_6 : in std_logic; + FF_TX_D_1_7 : in std_logic; + FF_TX_D_1_8 : in std_logic; + FF_TX_D_1_9 : in std_logic; + FF_TX_D_1_10 : in std_logic; + FF_TX_D_1_11 : in std_logic; + FF_TX_D_1_12 : in std_logic; + FF_TX_D_1_13 : in std_logic; + FF_TX_D_1_14 : in std_logic; + FF_TX_D_1_15 : in std_logic; + FF_TX_D_1_16 : in std_logic; + FF_TX_D_1_17 : in std_logic; + FF_TX_D_1_18 : in std_logic; + FF_TX_D_1_19 : in std_logic; + FF_TX_D_1_20 : in std_logic; + FF_TX_D_1_21 : in std_logic; + FF_TX_D_1_22 : in std_logic; + FF_TX_D_1_23 : in std_logic; + FF_TX_D_2_0 : in std_logic; + FF_TX_D_2_1 : in std_logic; + FF_TX_D_2_2 : in std_logic; + FF_TX_D_2_3 : in std_logic; + FF_TX_D_2_4 : in std_logic; + FF_TX_D_2_5 : in std_logic; + FF_TX_D_2_6 : in std_logic; + FF_TX_D_2_7 : in std_logic; + FF_TX_D_2_8 : in std_logic; + FF_TX_D_2_9 : in std_logic; + FF_TX_D_2_10 : in std_logic; + FF_TX_D_2_11 : in std_logic; + FF_TX_D_2_12 : in std_logic; + FF_TX_D_2_13 : in std_logic; + FF_TX_D_2_14 : in std_logic; + FF_TX_D_2_15 : in std_logic; + FF_TX_D_2_16 : in std_logic; + FF_TX_D_2_17 : in std_logic; + FF_TX_D_2_18 : in std_logic; + FF_TX_D_2_19 : in std_logic; + FF_TX_D_2_20 : in std_logic; + FF_TX_D_2_21 : in std_logic; + FF_TX_D_2_22 : in std_logic; + FF_TX_D_2_23 : in std_logic; + FF_TX_D_3_0 : in std_logic; + FF_TX_D_3_1 : in std_logic; + FF_TX_D_3_2 : in std_logic; + FF_TX_D_3_3 : in std_logic; + FF_TX_D_3_4 : in std_logic; + FF_TX_D_3_5 : in std_logic; + FF_TX_D_3_6 : in std_logic; + FF_TX_D_3_7 : in std_logic; + FF_TX_D_3_8 : in std_logic; + FF_TX_D_3_9 : in std_logic; + FF_TX_D_3_10 : in std_logic; + FF_TX_D_3_11 : in std_logic; + FF_TX_D_3_12 : in std_logic; + FF_TX_D_3_13 : in std_logic; + FF_TX_D_3_14 : in std_logic; + FF_TX_D_3_15 : in std_logic; + FF_TX_D_3_16 : in std_logic; + FF_TX_D_3_17 : in std_logic; + FF_TX_D_3_18 : in std_logic; + FF_TX_D_3_19 : in std_logic; + FF_TX_D_3_20 : in std_logic; + FF_TX_D_3_21 : in std_logic; + FF_TX_D_3_22 : in std_logic; + FF_TX_D_3_23 : in std_logic; + FF_TXI_CLK_0 : in std_logic; + FF_TXI_CLK_1 : in std_logic; + FF_TXI_CLK_2 : in std_logic; + FF_TXI_CLK_3 : in std_logic; + FFC_CK_CORE_RX : in std_logic; + FFC_CK_CORE_TX : in std_logic; + FFC_EI_EN_0 : in std_logic; + FFC_EI_EN_1 : in std_logic; + FFC_EI_EN_2 : in std_logic; + FFC_EI_EN_3 : in std_logic; + FFC_ENABLE_CGALIGN_0 : in std_logic; + FFC_ENABLE_CGALIGN_1 : in std_logic; + FFC_ENABLE_CGALIGN_2 : in std_logic; + FFC_ENABLE_CGALIGN_3 : in std_logic; + FFC_FB_LOOPBACK_0 : in std_logic; + FFC_FB_LOOPBACK_1 : in std_logic; + FFC_FB_LOOPBACK_2 : in std_logic; + FFC_FB_LOOPBACK_3 : in std_logic; + FFC_LANE_RX_RST_0 : in std_logic; + FFC_LANE_RX_RST_1 : in std_logic; + FFC_LANE_RX_RST_2 : in std_logic; + FFC_LANE_RX_RST_3 : in std_logic; + FFC_LANE_TX_RST_0 : in std_logic; + FFC_LANE_TX_RST_1 : in std_logic; + FFC_LANE_TX_RST_2 : in std_logic; + FFC_LANE_TX_RST_3 : in std_logic; + FFC_MACRO_RST : in std_logic; + FFC_PCI_DET_EN_0 : in std_logic; + FFC_PCI_DET_EN_1 : in std_logic; + FFC_PCI_DET_EN_2 : in std_logic; + FFC_PCI_DET_EN_3 : in std_logic; + FFC_PCIE_CT_0 : in std_logic; + FFC_PCIE_CT_1 : in std_logic; + FFC_PCIE_CT_2 : in std_logic; + FFC_PCIE_CT_3 : in std_logic; + FFC_PFIFO_CLR_0 : in std_logic; + FFC_PFIFO_CLR_1 : in std_logic; + FFC_PFIFO_CLR_2 : in std_logic; + FFC_PFIFO_CLR_3 : in std_logic; + FFC_QUAD_RST : in std_logic; + FFC_RRST_0 : in std_logic; + FFC_RRST_1 : in std_logic; + FFC_RRST_2 : in std_logic; + FFC_RRST_3 : in std_logic; + FFC_RXPWDNB_0 : in std_logic; + FFC_RXPWDNB_1 : in std_logic; + FFC_RXPWDNB_2 : in std_logic; + FFC_RXPWDNB_3 : in std_logic; + FFC_SB_INV_RX_0 : in std_logic; + FFC_SB_INV_RX_1 : in std_logic; + FFC_SB_INV_RX_2 : in std_logic; + FFC_SB_INV_RX_3 : in std_logic; + FFC_SB_PFIFO_LP_0 : in std_logic; + FFC_SB_PFIFO_LP_1 : in std_logic; + FFC_SB_PFIFO_LP_2 : in std_logic; + FFC_SB_PFIFO_LP_3 : in std_logic; + FFC_SIGNAL_DETECT_0 : in std_logic; + FFC_SIGNAL_DETECT_1 : in std_logic; + FFC_SIGNAL_DETECT_2 : in std_logic; + FFC_SIGNAL_DETECT_3 : in std_logic; + FFC_TRST : in std_logic; + FFC_TXPWDNB_0 : in std_logic; + FFC_TXPWDNB_1 : in std_logic; + FFC_TXPWDNB_2 : in std_logic; + FFC_TXPWDNB_3 : in std_logic; + SCIADDR0 : in std_logic; + SCIADDR1 : in std_logic; + SCIADDR2 : in std_logic; + SCIADDR3 : in std_logic; + SCIADDR4 : in std_logic; + SCIADDR5 : in std_logic; + SCIENAUX : in std_logic; + SCIENCH0 : in std_logic; + SCIENCH1 : in std_logic; + SCIENCH2 : in std_logic; + SCIENCH3 : in std_logic; + SCIRD : in std_logic; + SCISELAUX : in std_logic; + SCISELCH0 : in std_logic; + SCISELCH1 : in std_logic; + SCISELCH2 : in std_logic; + SCISELCH3 : in std_logic; + SCIWDATA0 : in std_logic; + SCIWDATA1 : in std_logic; + SCIWDATA2 : in std_logic; + SCIWDATA3 : in std_logic; + SCIWDATA4 : in std_logic; + SCIWDATA5 : in std_logic; + SCIWDATA6 : in std_logic; + SCIWDATA7 : in std_logic; + SCIWSTN : in std_logic; + HDOUTN0 : out std_logic; + HDOUTN1 : out std_logic; + HDOUTN2 : out std_logic; + HDOUTN3 : out std_logic; + HDOUTP0 : out std_logic; + HDOUTP1 : out std_logic; + HDOUTP2 : out std_logic; + HDOUTP3 : out std_logic; + COUT0 : out std_logic; + COUT1 : out std_logic; + COUT2 : out std_logic; + COUT3 : out std_logic; + COUT4 : out std_logic; + COUT5 : out std_logic; + COUT6 : out std_logic; + COUT7 : out std_logic; + COUT8 : out std_logic; + COUT9 : out std_logic; + COUT10 : out std_logic; + COUT11 : out std_logic; + COUT12 : out std_logic; + COUT13 : out std_logic; + COUT14 : out std_logic; + COUT15 : out std_logic; + COUT16 : out std_logic; + COUT17 : out std_logic; + COUT18 : out std_logic; + COUT19 : out std_logic; + FF_RX_D_0_0 : out std_logic; + FF_RX_D_0_1 : out std_logic; + FF_RX_D_0_2 : out std_logic; + FF_RX_D_0_3 : out std_logic; + FF_RX_D_0_4 : out std_logic; + FF_RX_D_0_5 : out std_logic; + FF_RX_D_0_6 : out std_logic; + FF_RX_D_0_7 : out std_logic; + FF_RX_D_0_8 : out std_logic; + FF_RX_D_0_9 : out std_logic; + FF_RX_D_0_10 : out std_logic; + FF_RX_D_0_11 : out std_logic; + FF_RX_D_0_12 : out std_logic; + FF_RX_D_0_13 : out std_logic; + FF_RX_D_0_14 : out std_logic; + FF_RX_D_0_15 : out std_logic; + FF_RX_D_0_16 : out std_logic; + FF_RX_D_0_17 : out std_logic; + FF_RX_D_0_18 : out std_logic; + FF_RX_D_0_19 : out std_logic; + FF_RX_D_0_20 : out std_logic; + FF_RX_D_0_21 : out std_logic; + FF_RX_D_0_22 : out std_logic; + FF_RX_D_0_23 : out std_logic; + FF_RX_D_1_0 : out std_logic; + FF_RX_D_1_1 : out std_logic; + FF_RX_D_1_2 : out std_logic; + FF_RX_D_1_3 : out std_logic; + FF_RX_D_1_4 : out std_logic; + FF_RX_D_1_5 : out std_logic; + FF_RX_D_1_6 : out std_logic; + FF_RX_D_1_7 : out std_logic; + FF_RX_D_1_8 : out std_logic; + FF_RX_D_1_9 : out std_logic; + FF_RX_D_1_10 : out std_logic; + FF_RX_D_1_11 : out std_logic; + FF_RX_D_1_12 : out std_logic; + FF_RX_D_1_13 : out std_logic; + FF_RX_D_1_14 : out std_logic; + FF_RX_D_1_15 : out std_logic; + FF_RX_D_1_16 : out std_logic; + FF_RX_D_1_17 : out std_logic; + FF_RX_D_1_18 : out std_logic; + FF_RX_D_1_19 : out std_logic; + FF_RX_D_1_20 : out std_logic; + FF_RX_D_1_21 : out std_logic; + FF_RX_D_1_22 : out std_logic; + FF_RX_D_1_23 : out std_logic; + FF_RX_D_2_0 : out std_logic; + FF_RX_D_2_1 : out std_logic; + FF_RX_D_2_2 : out std_logic; + FF_RX_D_2_3 : out std_logic; + FF_RX_D_2_4 : out std_logic; + FF_RX_D_2_5 : out std_logic; + FF_RX_D_2_6 : out std_logic; + FF_RX_D_2_7 : out std_logic; + FF_RX_D_2_8 : out std_logic; + FF_RX_D_2_9 : out std_logic; + FF_RX_D_2_10 : out std_logic; + FF_RX_D_2_11 : out std_logic; + FF_RX_D_2_12 : out std_logic; + FF_RX_D_2_13 : out std_logic; + FF_RX_D_2_14 : out std_logic; + FF_RX_D_2_15 : out std_logic; + FF_RX_D_2_16 : out std_logic; + FF_RX_D_2_17 : out std_logic; + FF_RX_D_2_18 : out std_logic; + FF_RX_D_2_19 : out std_logic; + FF_RX_D_2_20 : out std_logic; + FF_RX_D_2_21 : out std_logic; + FF_RX_D_2_22 : out std_logic; + FF_RX_D_2_23 : out std_logic; + FF_RX_D_3_0 : out std_logic; + FF_RX_D_3_1 : out std_logic; + FF_RX_D_3_2 : out std_logic; + FF_RX_D_3_3 : out std_logic; + FF_RX_D_3_4 : out std_logic; + FF_RX_D_3_5 : out std_logic; + FF_RX_D_3_6 : out std_logic; + FF_RX_D_3_7 : out std_logic; + FF_RX_D_3_8 : out std_logic; + FF_RX_D_3_9 : out std_logic; + FF_RX_D_3_10 : out std_logic; + FF_RX_D_3_11 : out std_logic; + FF_RX_D_3_12 : out std_logic; + FF_RX_D_3_13 : out std_logic; + FF_RX_D_3_14 : out std_logic; + FF_RX_D_3_15 : out std_logic; + FF_RX_D_3_16 : out std_logic; + FF_RX_D_3_17 : out std_logic; + FF_RX_D_3_18 : out std_logic; + FF_RX_D_3_19 : out std_logic; + FF_RX_D_3_20 : out std_logic; + FF_RX_D_3_21 : out std_logic; + FF_RX_D_3_22 : out std_logic; + FF_RX_D_3_23 : out std_logic; + FF_RX_F_CLK_0 : out std_logic; + FF_RX_F_CLK_1 : out std_logic; + FF_RX_F_CLK_2 : out std_logic; + FF_RX_F_CLK_3 : out std_logic; + FF_RX_H_CLK_0 : out std_logic; + FF_RX_H_CLK_1 : out std_logic; + FF_RX_H_CLK_2 : out std_logic; + FF_RX_H_CLK_3 : out std_logic; + FF_RX_Q_CLK_0 : out std_logic; + FF_RX_Q_CLK_1 : out std_logic; + FF_RX_Q_CLK_2 : out std_logic; + FF_RX_Q_CLK_3 : out std_logic; + FF_TX_F_CLK : out std_logic; + FF_TX_H_CLK : out std_logic; + FF_TX_Q_CLK : out std_logic; + FFS_CC_OVERRUN_0 : out std_logic; + FFS_CC_OVERRUN_1 : out std_logic; + FFS_CC_OVERRUN_2 : out std_logic; + FFS_CC_OVERRUN_3 : out std_logic; + FFS_CC_UNDERRUN_0 : out std_logic; + FFS_CC_UNDERRUN_1 : out std_logic; + FFS_CC_UNDERRUN_2 : out std_logic; + FFS_CC_UNDERRUN_3 : out std_logic; + FFS_LS_SYNC_STATUS_0 : out std_logic; + FFS_LS_SYNC_STATUS_1 : out std_logic; + FFS_LS_SYNC_STATUS_2 : out std_logic; + FFS_LS_SYNC_STATUS_3 : out std_logic; + FFS_PCIE_CON_0 : out std_logic; + FFS_PCIE_CON_1 : out std_logic; + FFS_PCIE_CON_2 : out std_logic; + FFS_PCIE_CON_3 : out std_logic; + FFS_PCIE_DONE_0 : out std_logic; + FFS_PCIE_DONE_1 : out std_logic; + FFS_PCIE_DONE_2 : out std_logic; + FFS_PCIE_DONE_3 : out std_logic; + FFS_RLOS_LO_0 : out std_logic; + FFS_RLOS_LO_1 : out std_logic; + FFS_RLOS_LO_2 : out std_logic; + FFS_RLOS_LO_3 : out std_logic; + OOB_OUT_0 : out std_logic; + OOB_OUT_1 : out std_logic; + OOB_OUT_2 : out std_logic; + OOB_OUT_3 : out std_logic; + REFCK2CORE : out std_logic; + SCIINT : out std_logic; + SCIRDATA0 : out std_logic; + SCIRDATA1 : out std_logic; + SCIRDATA2 : out std_logic; + SCIRDATA3 : out std_logic; + SCIRDATA4 : out std_logic; + SCIRDATA5 : out std_logic; + SCIRDATA6 : out std_logic; + SCIRDATA7 : out std_logic; + FFS_PLOL : out std_logic; + FFS_RLOL_0 : out std_logic; + FFS_RLOL_1 : out std_logic; + FFS_RLOL_2 : out std_logic; + FFS_RLOL_3 : out std_logic; + FFS_RXFBFIFO_ERROR_0 : out std_logic; + FFS_RXFBFIFO_ERROR_1 : out std_logic; + FFS_RXFBFIFO_ERROR_2 : out std_logic; + FFS_RXFBFIFO_ERROR_3 : out std_logic; + FFS_TXFBFIFO_ERROR_0 : out std_logic; + FFS_TXFBFIFO_ERROR_1 : out std_logic; + FFS_TXFBFIFO_ERROR_2 : out std_logic; + FFS_TXFBFIFO_ERROR_3 : out std_logic +); + +end PCSC; + +architecture PCSC_arch of PCSC is + +component PCSC_sim +GENERIC( + CONFIG_FILE : String + ); +port ( + HDINN0 : in std_logic; + HDINN1 : in std_logic; + HDINN2 : in std_logic; + HDINN3 : in std_logic; + HDINP0 : in std_logic; + HDINP1 : in std_logic; + HDINP2 : in std_logic; + HDINP3 : in std_logic; + REFCLKN : in std_logic; + REFCLKP : in std_logic; + CIN0 : in std_logic; + CIN1 : in std_logic; + CIN2 : in std_logic; + CIN3 : in std_logic; + CIN4 : in std_logic; + CIN5 : in std_logic; + CIN6 : in std_logic; + CIN7 : in std_logic; + CIN8 : in std_logic; + CIN9 : in std_logic; + CIN10 : in std_logic; + CIN11 : in std_logic; + CYAWSTN : in std_logic; + FF_EBRD_CLK_0 : in std_logic; + FF_EBRD_CLK_1 : in std_logic; + FF_EBRD_CLK_2 : in std_logic; + FF_EBRD_CLK_3 : in std_logic; + FF_RXI_CLK_0 : in std_logic; + FF_RXI_CLK_1 : in std_logic; + FF_RXI_CLK_2 : in std_logic; + FF_RXI_CLK_3 : in std_logic; + FF_TX_D_0_0 : in std_logic; + FF_TX_D_0_1 : in std_logic; + FF_TX_D_0_2 : in std_logic; + FF_TX_D_0_3 : in std_logic; + FF_TX_D_0_4 : in std_logic; + FF_TX_D_0_5 : in std_logic; + FF_TX_D_0_6 : in std_logic; + FF_TX_D_0_7 : in std_logic; + FF_TX_D_0_8 : in std_logic; + FF_TX_D_0_9 : in std_logic; + FF_TX_D_0_10 : in std_logic; + FF_TX_D_0_11 : in std_logic; + FF_TX_D_0_12 : in std_logic; + FF_TX_D_0_13 : in std_logic; + FF_TX_D_0_14 : in std_logic; + FF_TX_D_0_15 : in std_logic; + FF_TX_D_0_16 : in std_logic; + FF_TX_D_0_17 : in std_logic; + FF_TX_D_0_18 : in std_logic; + FF_TX_D_0_19 : in std_logic; + FF_TX_D_0_20 : in std_logic; + FF_TX_D_0_21 : in std_logic; + FF_TX_D_0_22 : in std_logic; + FF_TX_D_0_23 : in std_logic; + FF_TX_D_1_0 : in std_logic; + FF_TX_D_1_1 : in std_logic; + FF_TX_D_1_2 : in std_logic; + FF_TX_D_1_3 : in std_logic; + FF_TX_D_1_4 : in std_logic; + FF_TX_D_1_5 : in std_logic; + FF_TX_D_1_6 : in std_logic; + FF_TX_D_1_7 : in std_logic; + FF_TX_D_1_8 : in std_logic; + FF_TX_D_1_9 : in std_logic; + FF_TX_D_1_10 : in std_logic; + FF_TX_D_1_11 : in std_logic; + FF_TX_D_1_12 : in std_logic; + FF_TX_D_1_13 : in std_logic; + FF_TX_D_1_14 : in std_logic; + FF_TX_D_1_15 : in std_logic; + FF_TX_D_1_16 : in std_logic; + FF_TX_D_1_17 : in std_logic; + FF_TX_D_1_18 : in std_logic; + FF_TX_D_1_19 : in std_logic; + FF_TX_D_1_20 : in std_logic; + FF_TX_D_1_21 : in std_logic; + FF_TX_D_1_22 : in std_logic; + FF_TX_D_1_23 : in std_logic; + FF_TX_D_2_0 : in std_logic; + FF_TX_D_2_1 : in std_logic; + FF_TX_D_2_2 : in std_logic; + FF_TX_D_2_3 : in std_logic; + FF_TX_D_2_4 : in std_logic; + FF_TX_D_2_5 : in std_logic; + FF_TX_D_2_6 : in std_logic; + FF_TX_D_2_7 : in std_logic; + FF_TX_D_2_8 : in std_logic; + FF_TX_D_2_9 : in std_logic; + FF_TX_D_2_10 : in std_logic; + FF_TX_D_2_11 : in std_logic; + FF_TX_D_2_12 : in std_logic; + FF_TX_D_2_13 : in std_logic; + FF_TX_D_2_14 : in std_logic; + FF_TX_D_2_15 : in std_logic; + FF_TX_D_2_16 : in std_logic; + FF_TX_D_2_17 : in std_logic; + FF_TX_D_2_18 : in std_logic; + FF_TX_D_2_19 : in std_logic; + FF_TX_D_2_20 : in std_logic; + FF_TX_D_2_21 : in std_logic; + FF_TX_D_2_22 : in std_logic; + FF_TX_D_2_23 : in std_logic; + FF_TX_D_3_0 : in std_logic; + FF_TX_D_3_1 : in std_logic; + FF_TX_D_3_2 : in std_logic; + FF_TX_D_3_3 : in std_logic; + FF_TX_D_3_4 : in std_logic; + FF_TX_D_3_5 : in std_logic; + FF_TX_D_3_6 : in std_logic; + FF_TX_D_3_7 : in std_logic; + FF_TX_D_3_8 : in std_logic; + FF_TX_D_3_9 : in std_logic; + FF_TX_D_3_10 : in std_logic; + FF_TX_D_3_11 : in std_logic; + FF_TX_D_3_12 : in std_logic; + FF_TX_D_3_13 : in std_logic; + FF_TX_D_3_14 : in std_logic; + FF_TX_D_3_15 : in std_logic; + FF_TX_D_3_16 : in std_logic; + FF_TX_D_3_17 : in std_logic; + FF_TX_D_3_18 : in std_logic; + FF_TX_D_3_19 : in std_logic; + FF_TX_D_3_20 : in std_logic; + FF_TX_D_3_21 : in std_logic; + FF_TX_D_3_22 : in std_logic; + FF_TX_D_3_23 : in std_logic; + FF_TXI_CLK_0 : in std_logic; + FF_TXI_CLK_1 : in std_logic; + FF_TXI_CLK_2 : in std_logic; + FF_TXI_CLK_3 : in std_logic; + FFC_CK_CORE_RX : in std_logic; + FFC_CK_CORE_TX : in std_logic; + FFC_EI_EN_0 : in std_logic; + FFC_EI_EN_1 : in std_logic; + FFC_EI_EN_2 : in std_logic; + FFC_EI_EN_3 : in std_logic; + FFC_ENABLE_CGALIGN_0 : in std_logic; + FFC_ENABLE_CGALIGN_1 : in std_logic; + FFC_ENABLE_CGALIGN_2 : in std_logic; + FFC_ENABLE_CGALIGN_3 : in std_logic; + FFC_FB_LOOPBACK_0 : in std_logic; + FFC_FB_LOOPBACK_1 : in std_logic; + FFC_FB_LOOPBACK_2 : in std_logic; + FFC_FB_LOOPBACK_3 : in std_logic; + FFC_LANE_RX_RST_0 : in std_logic; + FFC_LANE_RX_RST_1 : in std_logic; + FFC_LANE_RX_RST_2 : in std_logic; + FFC_LANE_RX_RST_3 : in std_logic; + FFC_LANE_TX_RST_0 : in std_logic; + FFC_LANE_TX_RST_1 : in std_logic; + FFC_LANE_TX_RST_2 : in std_logic; + FFC_LANE_TX_RST_3 : in std_logic; + FFC_MACRO_RST : in std_logic; + FFC_PCI_DET_EN_0 : in std_logic; + FFC_PCI_DET_EN_1 : in std_logic; + FFC_PCI_DET_EN_2 : in std_logic; + FFC_PCI_DET_EN_3 : in std_logic; + FFC_PCIE_CT_0 : in std_logic; + FFC_PCIE_CT_1 : in std_logic; + FFC_PCIE_CT_2 : in std_logic; + FFC_PCIE_CT_3 : in std_logic; + FFC_PFIFO_CLR_0 : in std_logic; + FFC_PFIFO_CLR_1 : in std_logic; + FFC_PFIFO_CLR_2 : in std_logic; + FFC_PFIFO_CLR_3 : in std_logic; + FFC_QUAD_RST : in std_logic; + FFC_RRST_0 : in std_logic; + FFC_RRST_1 : in std_logic; + FFC_RRST_2 : in std_logic; + FFC_RRST_3 : in std_logic; + FFC_RXPWDNB_0 : in std_logic; + FFC_RXPWDNB_1 : in std_logic; + FFC_RXPWDNB_2 : in std_logic; + FFC_RXPWDNB_3 : in std_logic; + FFC_SB_INV_RX_0 : in std_logic; + FFC_SB_INV_RX_1 : in std_logic; + FFC_SB_INV_RX_2 : in std_logic; + FFC_SB_INV_RX_3 : in std_logic; + FFC_SB_PFIFO_LP_0 : in std_logic; + FFC_SB_PFIFO_LP_1 : in std_logic; + FFC_SB_PFIFO_LP_2 : in std_logic; + FFC_SB_PFIFO_LP_3 : in std_logic; + FFC_SIGNAL_DETECT_0 : in std_logic; + FFC_SIGNAL_DETECT_1 : in std_logic; + FFC_SIGNAL_DETECT_2 : in std_logic; + FFC_SIGNAL_DETECT_3 : in std_logic; + FFC_TRST : in std_logic; + FFC_TXPWDNB_0 : in std_logic; + FFC_TXPWDNB_1 : in std_logic; + FFC_TXPWDNB_2 : in std_logic; + FFC_TXPWDNB_3 : in std_logic; + SCIADDR0 : in std_logic; + SCIADDR1 : in std_logic; + SCIADDR2 : in std_logic; + SCIADDR3 : in std_logic; + SCIADDR4 : in std_logic; + SCIADDR5 : in std_logic; + SCIENAUX : in std_logic; + SCIENCH0 : in std_logic; + SCIENCH1 : in std_logic; + SCIENCH2 : in std_logic; + SCIENCH3 : in std_logic; + SCIRD : in std_logic; + SCISELAUX : in std_logic; + SCISELCH0 : in std_logic; + SCISELCH1 : in std_logic; + SCISELCH2 : in std_logic; + SCISELCH3 : in std_logic; + SCIWDATA0 : in std_logic; + SCIWDATA1 : in std_logic; + SCIWDATA2 : in std_logic; + SCIWDATA3 : in std_logic; + SCIWDATA4 : in std_logic; + SCIWDATA5 : in std_logic; + SCIWDATA6 : in std_logic; + SCIWDATA7 : in std_logic; + SCIWSTN : in std_logic; + HDOUTN0 : out std_logic; + HDOUTN1 : out std_logic; + HDOUTN2 : out std_logic; + HDOUTN3 : out std_logic; + HDOUTP0 : out std_logic; + HDOUTP1 : out std_logic; + HDOUTP2 : out std_logic; + HDOUTP3 : out std_logic; + COUT0 : out std_logic; + COUT1 : out std_logic; + COUT2 : out std_logic; + COUT3 : out std_logic; + COUT4 : out std_logic; + COUT5 : out std_logic; + COUT6 : out std_logic; + COUT7 : out std_logic; + COUT8 : out std_logic; + COUT9 : out std_logic; + COUT10 : out std_logic; + COUT11 : out std_logic; + COUT12 : out std_logic; + COUT13 : out std_logic; + COUT14 : out std_logic; + COUT15 : out std_logic; + COUT16 : out std_logic; + COUT17 : out std_logic; + COUT18 : out std_logic; + COUT19 : out std_logic; + FF_RX_D_0_0 : out std_logic; + FF_RX_D_0_1 : out std_logic; + FF_RX_D_0_2 : out std_logic; + FF_RX_D_0_3 : out std_logic; + FF_RX_D_0_4 : out std_logic; + FF_RX_D_0_5 : out std_logic; + FF_RX_D_0_6 : out std_logic; + FF_RX_D_0_7 : out std_logic; + FF_RX_D_0_8 : out std_logic; + FF_RX_D_0_9 : out std_logic; + FF_RX_D_0_10 : out std_logic; + FF_RX_D_0_11 : out std_logic; + FF_RX_D_0_12 : out std_logic; + FF_RX_D_0_13 : out std_logic; + FF_RX_D_0_14 : out std_logic; + FF_RX_D_0_15 : out std_logic; + FF_RX_D_0_16 : out std_logic; + FF_RX_D_0_17 : out std_logic; + FF_RX_D_0_18 : out std_logic; + FF_RX_D_0_19 : out std_logic; + FF_RX_D_0_20 : out std_logic; + FF_RX_D_0_21 : out std_logic; + FF_RX_D_0_22 : out std_logic; + FF_RX_D_0_23 : out std_logic; + FF_RX_D_1_0 : out std_logic; + FF_RX_D_1_1 : out std_logic; + FF_RX_D_1_2 : out std_logic; + FF_RX_D_1_3 : out std_logic; + FF_RX_D_1_4 : out std_logic; + FF_RX_D_1_5 : out std_logic; + FF_RX_D_1_6 : out std_logic; + FF_RX_D_1_7 : out std_logic; + FF_RX_D_1_8 : out std_logic; + FF_RX_D_1_9 : out std_logic; + FF_RX_D_1_10 : out std_logic; + FF_RX_D_1_11 : out std_logic; + FF_RX_D_1_12 : out std_logic; + FF_RX_D_1_13 : out std_logic; + FF_RX_D_1_14 : out std_logic; + FF_RX_D_1_15 : out std_logic; + FF_RX_D_1_16 : out std_logic; + FF_RX_D_1_17 : out std_logic; + FF_RX_D_1_18 : out std_logic; + FF_RX_D_1_19 : out std_logic; + FF_RX_D_1_20 : out std_logic; + FF_RX_D_1_21 : out std_logic; + FF_RX_D_1_22 : out std_logic; + FF_RX_D_1_23 : out std_logic; + FF_RX_D_2_0 : out std_logic; + FF_RX_D_2_1 : out std_logic; + FF_RX_D_2_2 : out std_logic; + FF_RX_D_2_3 : out std_logic; + FF_RX_D_2_4 : out std_logic; + FF_RX_D_2_5 : out std_logic; + FF_RX_D_2_6 : out std_logic; + FF_RX_D_2_7 : out std_logic; + FF_RX_D_2_8 : out std_logic; + FF_RX_D_2_9 : out std_logic; + FF_RX_D_2_10 : out std_logic; + FF_RX_D_2_11 : out std_logic; + FF_RX_D_2_12 : out std_logic; + FF_RX_D_2_13 : out std_logic; + FF_RX_D_2_14 : out std_logic; + FF_RX_D_2_15 : out std_logic; + FF_RX_D_2_16 : out std_logic; + FF_RX_D_2_17 : out std_logic; + FF_RX_D_2_18 : out std_logic; + FF_RX_D_2_19 : out std_logic; + FF_RX_D_2_20 : out std_logic; + FF_RX_D_2_21 : out std_logic; + FF_RX_D_2_22 : out std_logic; + FF_RX_D_2_23 : out std_logic; + FF_RX_D_3_0 : out std_logic; + FF_RX_D_3_1 : out std_logic; + FF_RX_D_3_2 : out std_logic; + FF_RX_D_3_3 : out std_logic; + FF_RX_D_3_4 : out std_logic; + FF_RX_D_3_5 : out std_logic; + FF_RX_D_3_6 : out std_logic; + FF_RX_D_3_7 : out std_logic; + FF_RX_D_3_8 : out std_logic; + FF_RX_D_3_9 : out std_logic; + FF_RX_D_3_10 : out std_logic; + FF_RX_D_3_11 : out std_logic; + FF_RX_D_3_12 : out std_logic; + FF_RX_D_3_13 : out std_logic; + FF_RX_D_3_14 : out std_logic; + FF_RX_D_3_15 : out std_logic; + FF_RX_D_3_16 : out std_logic; + FF_RX_D_3_17 : out std_logic; + FF_RX_D_3_18 : out std_logic; + FF_RX_D_3_19 : out std_logic; + FF_RX_D_3_20 : out std_logic; + FF_RX_D_3_21 : out std_logic; + FF_RX_D_3_22 : out std_logic; + FF_RX_D_3_23 : out std_logic; + FF_RX_F_CLK_0 : out std_logic; + FF_RX_F_CLK_1 : out std_logic; + FF_RX_F_CLK_2 : out std_logic; + FF_RX_F_CLK_3 : out std_logic; + FF_RX_H_CLK_0 : out std_logic; + FF_RX_H_CLK_1 : out std_logic; + FF_RX_H_CLK_2 : out std_logic; + FF_RX_H_CLK_3 : out std_logic; + FF_RX_Q_CLK_0 : out std_logic; + FF_RX_Q_CLK_1 : out std_logic; + FF_RX_Q_CLK_2 : out std_logic; + FF_RX_Q_CLK_3 : out std_logic; + FF_TX_F_CLK : out std_logic; + FF_TX_H_CLK : out std_logic; + FF_TX_Q_CLK : out std_logic; + FFS_CC_OVERRUN_0 : out std_logic; + FFS_CC_OVERRUN_1 : out std_logic; + FFS_CC_OVERRUN_2 : out std_logic; + FFS_CC_OVERRUN_3 : out std_logic; + FFS_CC_UNDERRUN_0 : out std_logic; + FFS_CC_UNDERRUN_1 : out std_logic; + FFS_CC_UNDERRUN_2 : out std_logic; + FFS_CC_UNDERRUN_3 : out std_logic; + FFS_LS_SYNC_STATUS_0 : out std_logic; + FFS_LS_SYNC_STATUS_1 : out std_logic; + FFS_LS_SYNC_STATUS_2 : out std_logic; + FFS_LS_SYNC_STATUS_3 : out std_logic; + FFS_PCIE_CON_0 : out std_logic; + FFS_PCIE_CON_1 : out std_logic; + FFS_PCIE_CON_2 : out std_logic; + FFS_PCIE_CON_3 : out std_logic; + FFS_PCIE_DONE_0 : out std_logic; + FFS_PCIE_DONE_1 : out std_logic; + FFS_PCIE_DONE_2 : out std_logic; + FFS_PCIE_DONE_3 : out std_logic; + FFS_RLOS_LO_0 : out std_logic; + FFS_RLOS_LO_1 : out std_logic; + FFS_RLOS_LO_2 : out std_logic; + FFS_RLOS_LO_3 : out std_logic; + OOB_OUT_0 : out std_logic; + OOB_OUT_1 : out std_logic; + OOB_OUT_2 : out std_logic; + OOB_OUT_3 : out std_logic; + REFCK2CORE : out std_logic; + SCIINT : out std_logic; + SCIRDATA0 : out std_logic; + SCIRDATA1 : out std_logic; + SCIRDATA2 : out std_logic; + SCIRDATA3 : out std_logic; + SCIRDATA4 : out std_logic; + SCIRDATA5 : out std_logic; + SCIRDATA6 : out std_logic; + SCIRDATA7 : out std_logic; + FFS_PLOL : out std_logic; + FFS_RLOL_0 : out std_logic; + FFS_RLOL_1 : out std_logic; + FFS_RLOL_2 : out std_logic; + FFS_RLOL_3 : out std_logic; + FFS_RXFBFIFO_ERROR_0 : out std_logic; + FFS_RXFBFIFO_ERROR_1 : out std_logic; + FFS_RXFBFIFO_ERROR_2 : out std_logic; + FFS_RXFBFIFO_ERROR_3 : out std_logic; + FFS_TXFBFIFO_ERROR_0 : out std_logic; + FFS_TXFBFIFO_ERROR_1 : out std_logic; + FFS_TXFBFIFO_ERROR_2 : out std_logic; + FFS_TXFBFIFO_ERROR_3 : out std_logic +); +end component; + +begin + +PCSC_sim_inst : PCSC_sim +generic map ( + CONFIG_FILE => CONFIG_FILE) +port map ( + HDINN0 => HDINN0, + HDINN1 => HDINN1, + HDINN2 => HDINN2, + HDINN3 => HDINN3, + HDINP0 => HDINP0, + HDINP1 => HDINP1, + HDINP2 => HDINP2, + HDINP3 => HDINP3, + REFCLKN => REFCLKN, + REFCLKP => REFCLKP, + CIN11 => CIN11, + CIN10 => CIN10, + CIN9 => CIN9, + CIN8 => CIN8, + CIN7 => CIN7, + CIN6 => CIN6, + CIN5 => CIN5, + CIN4 => CIN4, + CIN3 => CIN3, + CIN2 => CIN2, + CIN1 => CIN1, + CIN0 => CIN0, + CYAWSTN => CYAWSTN, + FF_EBRD_CLK_3 => FF_EBRD_CLK_3, + FF_EBRD_CLK_2 => FF_EBRD_CLK_2, + FF_EBRD_CLK_1 => FF_EBRD_CLK_1, + FF_EBRD_CLK_0 => FF_EBRD_CLK_0, + FF_RXI_CLK_3 => FF_RXI_CLK_3, + FF_RXI_CLK_2 => FF_RXI_CLK_2, + FF_RXI_CLK_1 => FF_RXI_CLK_1, + FF_RXI_CLK_0 => FF_RXI_CLK_0, + + FF_TX_D_0_0 => FF_TX_D_0_0, + FF_TX_D_0_1 => FF_TX_D_0_1, + FF_TX_D_0_2 => FF_TX_D_0_2, + FF_TX_D_0_3 => FF_TX_D_0_3, + FF_TX_D_0_4 => FF_TX_D_0_4, + FF_TX_D_0_5 => FF_TX_D_0_5, + FF_TX_D_0_6 => FF_TX_D_0_6, + FF_TX_D_0_7 => FF_TX_D_0_7, + FF_TX_D_0_8 => FF_TX_D_0_8, + FF_TX_D_0_9 => FF_TX_D_0_9, + FF_TX_D_0_10 => FF_TX_D_0_10, + FF_TX_D_0_11 => FF_TX_D_0_11, + FF_TX_D_0_12 => FF_TX_D_0_12, + FF_TX_D_0_13 => FF_TX_D_0_13, + FF_TX_D_0_14 => FF_TX_D_0_14, + FF_TX_D_0_15 => FF_TX_D_0_15, + FF_TX_D_0_16 => FF_TX_D_0_16, + FF_TX_D_0_17 => FF_TX_D_0_17, + FF_TX_D_0_18 => FF_TX_D_0_18, + FF_TX_D_0_19 => FF_TX_D_0_19, + FF_TX_D_0_20 => FF_TX_D_0_20, + FF_TX_D_0_21 => FF_TX_D_0_21, + FF_TX_D_0_22 => FF_TX_D_0_22, + FF_TX_D_0_23 => FF_TX_D_0_23, + FF_TX_D_1_0 => FF_TX_D_1_0, + FF_TX_D_1_1 => FF_TX_D_1_1, + FF_TX_D_1_2 => FF_TX_D_1_2, + FF_TX_D_1_3 => FF_TX_D_1_3, + FF_TX_D_1_4 => FF_TX_D_1_4, + FF_TX_D_1_5 => FF_TX_D_1_5, + FF_TX_D_1_6 => FF_TX_D_1_6, + FF_TX_D_1_7 => FF_TX_D_1_7, + FF_TX_D_1_8 => FF_TX_D_1_8, + FF_TX_D_1_9 => FF_TX_D_1_9, + FF_TX_D_1_10 => FF_TX_D_1_10, + FF_TX_D_1_11 => FF_TX_D_1_11, + FF_TX_D_1_12 => FF_TX_D_1_12, + FF_TX_D_1_13 => FF_TX_D_1_13, + FF_TX_D_1_14 => FF_TX_D_1_14, + FF_TX_D_1_15 => FF_TX_D_1_15, + FF_TX_D_1_16 => FF_TX_D_1_16, + FF_TX_D_1_17 => FF_TX_D_1_17, + FF_TX_D_1_18 => FF_TX_D_1_18, + FF_TX_D_1_19 => FF_TX_D_1_19, + FF_TX_D_1_20 => FF_TX_D_1_20, + FF_TX_D_1_21 => FF_TX_D_1_21, + FF_TX_D_1_22 => FF_TX_D_1_22, + FF_TX_D_1_23 => FF_TX_D_1_23, + FF_TX_D_2_0 => FF_TX_D_2_0, + FF_TX_D_2_1 => FF_TX_D_2_1, + FF_TX_D_2_2 => FF_TX_D_2_2, + FF_TX_D_2_3 => FF_TX_D_2_3, + FF_TX_D_2_4 => FF_TX_D_2_4, + FF_TX_D_2_5 => FF_TX_D_2_5, + FF_TX_D_2_6 => FF_TX_D_2_6, + FF_TX_D_2_7 => FF_TX_D_2_7, + FF_TX_D_2_8 => FF_TX_D_2_8, + FF_TX_D_2_9 => FF_TX_D_2_9, + FF_TX_D_2_10 => FF_TX_D_2_10, + FF_TX_D_2_11 => FF_TX_D_2_11, + FF_TX_D_2_12 => FF_TX_D_2_12, + FF_TX_D_2_13 => FF_TX_D_2_13, + FF_TX_D_2_14 => FF_TX_D_2_14, + FF_TX_D_2_15 => FF_TX_D_2_15, + FF_TX_D_2_16 => FF_TX_D_2_16, + FF_TX_D_2_17 => FF_TX_D_2_17, + FF_TX_D_2_18 => FF_TX_D_2_18, + FF_TX_D_2_19 => FF_TX_D_2_19, + FF_TX_D_2_20 => FF_TX_D_2_20, + FF_TX_D_2_21 => FF_TX_D_2_21, + FF_TX_D_2_22 => FF_TX_D_2_22, + FF_TX_D_2_23 => FF_TX_D_2_23, + FF_TX_D_3_0 => FF_TX_D_3_0, + FF_TX_D_3_1 => FF_TX_D_3_1, + FF_TX_D_3_2 => FF_TX_D_3_2, + FF_TX_D_3_3 => FF_TX_D_3_3, + FF_TX_D_3_4 => FF_TX_D_3_4, + FF_TX_D_3_5 => FF_TX_D_3_5, + FF_TX_D_3_6 => FF_TX_D_3_6, + FF_TX_D_3_7 => FF_TX_D_3_7, + FF_TX_D_3_8 => FF_TX_D_3_8, + FF_TX_D_3_9 => FF_TX_D_3_9, + FF_TX_D_3_10 => FF_TX_D_3_10, + FF_TX_D_3_11 => FF_TX_D_3_11, + FF_TX_D_3_12 => FF_TX_D_3_12, + FF_TX_D_3_13 => FF_TX_D_3_13, + FF_TX_D_3_14 => FF_TX_D_3_14, + FF_TX_D_3_15 => FF_TX_D_3_15, + FF_TX_D_3_16 => FF_TX_D_3_16, + FF_TX_D_3_17 => FF_TX_D_3_17, + FF_TX_D_3_18 => FF_TX_D_3_18, + FF_TX_D_3_19 => FF_TX_D_3_19, + FF_TX_D_3_20 => FF_TX_D_3_20, + FF_TX_D_3_21 => FF_TX_D_3_21, + FF_TX_D_3_22 => FF_TX_D_3_22, + FF_TX_D_3_23 => FF_TX_D_3_23, + FF_TXI_CLK_0 => FF_TXI_CLK_0, + FF_TXI_CLK_1 => FF_TXI_CLK_1, + FF_TXI_CLK_2 => FF_TXI_CLK_2, + FF_TXI_CLK_3 => FF_TXI_CLK_3, + FFC_CK_CORE_RX => FFC_CK_CORE_RX, + FFC_CK_CORE_TX => FFC_CK_CORE_TX, + FFC_EI_EN_0 => FFC_EI_EN_0, + FFC_EI_EN_1 => FFC_EI_EN_1, + FFC_EI_EN_2 => FFC_EI_EN_2, + FFC_EI_EN_3 => FFC_EI_EN_3, + FFC_ENABLE_CGALIGN_0 => FFC_ENABLE_CGALIGN_0, + FFC_ENABLE_CGALIGN_1 => FFC_ENABLE_CGALIGN_1, + FFC_ENABLE_CGALIGN_2 => FFC_ENABLE_CGALIGN_2, + FFC_ENABLE_CGALIGN_3 => FFC_ENABLE_CGALIGN_3, + FFC_FB_LOOPBACK_0 => FFC_FB_LOOPBACK_0, + FFC_FB_LOOPBACK_1 => FFC_FB_LOOPBACK_1, + FFC_FB_LOOPBACK_2 => FFC_FB_LOOPBACK_2, + FFC_FB_LOOPBACK_3 => FFC_FB_LOOPBACK_3, + FFC_LANE_RX_RST_0 => FFC_LANE_RX_RST_0, + FFC_LANE_RX_RST_1 => FFC_LANE_RX_RST_1, + FFC_LANE_RX_RST_2 => FFC_LANE_RX_RST_2, + FFC_LANE_RX_RST_3 => FFC_LANE_RX_RST_3, + FFC_LANE_TX_RST_0 => FFC_LANE_TX_RST_0, + FFC_LANE_TX_RST_1 => FFC_LANE_TX_RST_1, + FFC_LANE_TX_RST_2 => FFC_LANE_TX_RST_2, + FFC_LANE_TX_RST_3 => FFC_LANE_TX_RST_3, + FFC_MACRO_RST => FFC_MACRO_RST, + FFC_PCI_DET_EN_0 => FFC_PCI_DET_EN_0, + FFC_PCI_DET_EN_1 => FFC_PCI_DET_EN_1, + FFC_PCI_DET_EN_2 => FFC_PCI_DET_EN_2, + FFC_PCI_DET_EN_3 => FFC_PCI_DET_EN_3, + FFC_PCIE_CT_0 => FFC_PCIE_CT_0, + FFC_PCIE_CT_1 => FFC_PCIE_CT_1, + FFC_PCIE_CT_2 => FFC_PCIE_CT_2, + FFC_PCIE_CT_3 => FFC_PCIE_CT_3, + FFC_PFIFO_CLR_0 => FFC_PFIFO_CLR_0, + FFC_PFIFO_CLR_1 => FFC_PFIFO_CLR_1, + FFC_PFIFO_CLR_2 => FFC_PFIFO_CLR_2, + FFC_PFIFO_CLR_3 => FFC_PFIFO_CLR_3, + FFC_QUAD_RST => FFC_QUAD_RST, + FFC_RRST_0 => FFC_RRST_0, + FFC_RRST_1 => FFC_RRST_1, + FFC_RRST_2 => FFC_RRST_2, + FFC_RRST_3 => FFC_RRST_3, + FFC_RXPWDNB_0 => FFC_RXPWDNB_0, + FFC_RXPWDNB_1 => FFC_RXPWDNB_1, + FFC_RXPWDNB_2 => FFC_RXPWDNB_2, + FFC_RXPWDNB_3 => FFC_RXPWDNB_3, + FFC_SB_INV_RX_0 => FFC_SB_INV_RX_0, + FFC_SB_INV_RX_1 => FFC_SB_INV_RX_1, + FFC_SB_INV_RX_2 => FFC_SB_INV_RX_2, + FFC_SB_INV_RX_3 => FFC_SB_INV_RX_3, + FFC_SB_PFIFO_LP_0 => FFC_SB_PFIFO_LP_0, + FFC_SB_PFIFO_LP_1 => FFC_SB_PFIFO_LP_1, + FFC_SB_PFIFO_LP_2 => FFC_SB_PFIFO_LP_2, + FFC_SB_PFIFO_LP_3 => FFC_SB_PFIFO_LP_3, + FFC_SIGNAL_DETECT_0 => FFC_SIGNAL_DETECT_0, + FFC_SIGNAL_DETECT_1 => FFC_SIGNAL_DETECT_1, + FFC_SIGNAL_DETECT_2 => FFC_SIGNAL_DETECT_2, + FFC_SIGNAL_DETECT_3 => FFC_SIGNAL_DETECT_3, + FFC_TRST => FFC_TRST, + FFC_TXPWDNB_0 => FFC_TXPWDNB_0, + FFC_TXPWDNB_1 => FFC_TXPWDNB_1, + FFC_TXPWDNB_2 => FFC_TXPWDNB_2, + FFC_TXPWDNB_3 => FFC_TXPWDNB_3, + SCIADDR0 => SCIADDR0, + SCIADDR1 => SCIADDR1, + SCIADDR2 => SCIADDR2, + SCIADDR3 => SCIADDR3, + SCIADDR4 => SCIADDR4, + SCIADDR5 => SCIADDR5, + SCIENAUX => SCIENAUX, + SCIENCH0 => SCIENCH0, + SCIENCH1 => SCIENCH1, + SCIENCH2 => SCIENCH2, + SCIENCH3 => SCIENCH3, + SCIRD => SCIRD, + SCISELAUX => SCISELAUX, + SCISELCH0 => SCISELCH0, + SCISELCH1 => SCISELCH1, + SCISELCH2 => SCISELCH2, + SCISELCH3 => SCISELCH3, + SCIWDATA0 => SCIWDATA0, + SCIWDATA1 => SCIWDATA1, + SCIWDATA2 => SCIWDATA2, + SCIWDATA3 => SCIWDATA3, + SCIWDATA4 => SCIWDATA4, + SCIWDATA5 => SCIWDATA5, + SCIWDATA6 => SCIWDATA6, + SCIWDATA7 => SCIWDATA7, + SCIWSTN => SCIWSTN, + HDOUTN0 => HDOUTN0, + HDOUTN1 => HDOUTN1, + HDOUTN2 => HDOUTN2, + HDOUTN3 => HDOUTN3, + HDOUTP0 => HDOUTP0, + HDOUTP1 => HDOUTP1, + HDOUTP2 => HDOUTP2, + HDOUTP3 => HDOUTP3, + COUT19 => COUT19, + COUT18 => COUT18, + COUT17 => COUT17, + COUT16 => COUT16, + COUT15 => COUT15, + COUT14 => COUT14, + COUT13 => COUT13, + COUT12 => COUT12, + COUT11 => COUT11, + COUT10 => COUT10, + COUT9 => COUT9, + COUT8 => COUT8, + COUT7 => COUT7, + COUT6 => COUT6, + COUT5 => COUT5, + COUT4 => COUT4, + COUT3 => COUT3, + COUT2 => COUT2, + COUT1 => COUT1, + COUT0 => COUT0, + FF_RX_D_0_0 => FF_RX_D_0_0, + FF_RX_D_0_1 => FF_RX_D_0_1, + FF_RX_D_0_2 => FF_RX_D_0_2, + FF_RX_D_0_3 => FF_RX_D_0_3, + FF_RX_D_0_4 => FF_RX_D_0_4, + FF_RX_D_0_5 => FF_RX_D_0_5, + FF_RX_D_0_6 => FF_RX_D_0_6, + FF_RX_D_0_7 => FF_RX_D_0_7, + FF_RX_D_0_8 => FF_RX_D_0_8, + FF_RX_D_0_9 => FF_RX_D_0_9, + FF_RX_D_0_10 => FF_RX_D_0_10, + FF_RX_D_0_11 => FF_RX_D_0_11, + FF_RX_D_0_12 => FF_RX_D_0_12, + FF_RX_D_0_13 => FF_RX_D_0_13, + FF_RX_D_0_14 => FF_RX_D_0_14, + FF_RX_D_0_15 => FF_RX_D_0_15, + FF_RX_D_0_16 => FF_RX_D_0_16, + FF_RX_D_0_17 => FF_RX_D_0_17, + FF_RX_D_0_18 => FF_RX_D_0_18, + FF_RX_D_0_19 => FF_RX_D_0_19, + FF_RX_D_0_20 => FF_RX_D_0_20, + FF_RX_D_0_21 => FF_RX_D_0_21, + FF_RX_D_0_22 => FF_RX_D_0_22, + FF_RX_D_0_23 => FF_RX_D_0_23, + FF_RX_D_1_0 => FF_RX_D_1_0, + FF_RX_D_1_1 => FF_RX_D_1_1, + FF_RX_D_1_2 => FF_RX_D_1_2, + FF_RX_D_1_3 => FF_RX_D_1_3, + FF_RX_D_1_4 => FF_RX_D_1_4, + FF_RX_D_1_5 => FF_RX_D_1_5, + FF_RX_D_1_6 => FF_RX_D_1_6, + FF_RX_D_1_7 => FF_RX_D_1_7, + FF_RX_D_1_8 => FF_RX_D_1_8, + FF_RX_D_1_9 => FF_RX_D_1_9, + FF_RX_D_1_10 => FF_RX_D_1_10, + FF_RX_D_1_11 => FF_RX_D_1_11, + FF_RX_D_1_12 => FF_RX_D_1_12, + FF_RX_D_1_13 => FF_RX_D_1_13, + FF_RX_D_1_14 => FF_RX_D_1_14, + FF_RX_D_1_15 => FF_RX_D_1_15, + FF_RX_D_1_16 => FF_RX_D_1_16, + FF_RX_D_1_17 => FF_RX_D_1_17, + FF_RX_D_1_18 => FF_RX_D_1_18, + FF_RX_D_1_19 => FF_RX_D_1_19, + FF_RX_D_1_20 => FF_RX_D_1_20, + FF_RX_D_1_21 => FF_RX_D_1_21, + FF_RX_D_1_22 => FF_RX_D_1_22, + FF_RX_D_1_23 => FF_RX_D_1_23, + FF_RX_D_2_0 => FF_RX_D_2_0, + FF_RX_D_2_1 => FF_RX_D_2_1, + FF_RX_D_2_2 => FF_RX_D_2_2, + FF_RX_D_2_3 => FF_RX_D_2_3, + FF_RX_D_2_4 => FF_RX_D_2_4, + FF_RX_D_2_5 => FF_RX_D_2_5, + FF_RX_D_2_6 => FF_RX_D_2_6, + FF_RX_D_2_7 => FF_RX_D_2_7, + FF_RX_D_2_8 => FF_RX_D_2_8, + FF_RX_D_2_9 => FF_RX_D_2_9, + FF_RX_D_2_10 => FF_RX_D_2_10, + FF_RX_D_2_11 => FF_RX_D_2_11, + FF_RX_D_2_12 => FF_RX_D_2_12, + FF_RX_D_2_13 => FF_RX_D_2_13, + FF_RX_D_2_14 => FF_RX_D_2_14, + FF_RX_D_2_15 => FF_RX_D_2_15, + FF_RX_D_2_16 => FF_RX_D_2_16, + FF_RX_D_2_17 => FF_RX_D_2_17, + FF_RX_D_2_18 => FF_RX_D_2_18, + FF_RX_D_2_19 => FF_RX_D_2_19, + FF_RX_D_2_20 => FF_RX_D_2_20, + FF_RX_D_2_21 => FF_RX_D_2_21, + FF_RX_D_2_22 => FF_RX_D_2_22, + FF_RX_D_2_23 => FF_RX_D_2_23, + FF_RX_D_3_0 => FF_RX_D_3_0, + FF_RX_D_3_1 => FF_RX_D_3_1, + FF_RX_D_3_2 => FF_RX_D_3_2, + FF_RX_D_3_3 => FF_RX_D_3_3, + FF_RX_D_3_4 => FF_RX_D_3_4, + FF_RX_D_3_5 => FF_RX_D_3_5, + FF_RX_D_3_6 => FF_RX_D_3_6, + FF_RX_D_3_7 => FF_RX_D_3_7, + FF_RX_D_3_8 => FF_RX_D_3_8, + FF_RX_D_3_9 => FF_RX_D_3_9, + FF_RX_D_3_10 => FF_RX_D_3_10, + FF_RX_D_3_11 => FF_RX_D_3_11, + FF_RX_D_3_12 => FF_RX_D_3_12, + FF_RX_D_3_13 => FF_RX_D_3_13, + FF_RX_D_3_14 => FF_RX_D_3_14, + FF_RX_D_3_15 => FF_RX_D_3_15, + FF_RX_D_3_16 => FF_RX_D_3_16, + FF_RX_D_3_17 => FF_RX_D_3_17, + FF_RX_D_3_18 => FF_RX_D_3_18, + FF_RX_D_3_19 => FF_RX_D_3_19, + FF_RX_D_3_20 => FF_RX_D_3_20, + FF_RX_D_3_21 => FF_RX_D_3_21, + FF_RX_D_3_22 => FF_RX_D_3_22, + FF_RX_D_3_23 => FF_RX_D_3_23, + FF_RX_F_CLK_0 => FF_RX_F_CLK_0, + FF_RX_F_CLK_1 => FF_RX_F_CLK_1, + FF_RX_F_CLK_2 => FF_RX_F_CLK_2, + FF_RX_F_CLK_3 => FF_RX_F_CLK_3, + FF_RX_H_CLK_0 => FF_RX_H_CLK_0, + FF_RX_H_CLK_1 => FF_RX_H_CLK_1, + FF_RX_H_CLK_2 => FF_RX_H_CLK_2, + FF_RX_H_CLK_3 => FF_RX_H_CLK_3, + FF_RX_Q_CLK_0 => FF_RX_Q_CLK_0, + FF_RX_Q_CLK_1 => FF_RX_Q_CLK_1, + FF_RX_Q_CLK_2 => FF_RX_Q_CLK_2, + FF_RX_Q_CLK_3 => FF_RX_Q_CLK_3, + FF_TX_F_CLK => FF_TX_F_CLK, + FF_TX_H_CLK => FF_TX_H_CLK, + FF_TX_Q_CLK => FF_TX_Q_CLK, + FFS_CC_OVERRUN_0 => FFS_CC_OVERRUN_0, + FFS_CC_OVERRUN_1 => FFS_CC_OVERRUN_1, + FFS_CC_OVERRUN_2 => FFS_CC_OVERRUN_2, + FFS_CC_OVERRUN_3 => FFS_CC_OVERRUN_3, + FFS_CC_UNDERRUN_0 => FFS_CC_UNDERRUN_0, + FFS_CC_UNDERRUN_1 => FFS_CC_UNDERRUN_1, + FFS_CC_UNDERRUN_2 => FFS_CC_UNDERRUN_2, + FFS_CC_UNDERRUN_3 => FFS_CC_UNDERRUN_3, + FFS_LS_SYNC_STATUS_0 => FFS_LS_SYNC_STATUS_0, + FFS_LS_SYNC_STATUS_1 => FFS_LS_SYNC_STATUS_1, + FFS_LS_SYNC_STATUS_2 => FFS_LS_SYNC_STATUS_2, + FFS_LS_SYNC_STATUS_3 => FFS_LS_SYNC_STATUS_3, + FFS_PCIE_CON_0 => FFS_PCIE_CON_0, + FFS_PCIE_CON_1 => FFS_PCIE_CON_1, + FFS_PCIE_CON_2 => FFS_PCIE_CON_2, + FFS_PCIE_CON_3 => FFS_PCIE_CON_3, + FFS_PCIE_DONE_0 => FFS_PCIE_DONE_0, + FFS_PCIE_DONE_1 => FFS_PCIE_DONE_1, + FFS_PCIE_DONE_2 => FFS_PCIE_DONE_2, + FFS_PCIE_DONE_3 => FFS_PCIE_DONE_3, + FFS_RLOS_LO_0 => FFS_RLOS_LO_0, + FFS_RLOS_LO_1 => FFS_RLOS_LO_1, + FFS_RLOS_LO_2 => FFS_RLOS_LO_2, + FFS_RLOS_LO_3 => FFS_RLOS_LO_3, + FFS_PLOL => FFS_PLOL, + FFS_RLOL_0 => FFS_RLOL_0, + FFS_RLOL_1 => FFS_RLOL_1, + FFS_RLOL_2 => FFS_RLOL_2, + FFS_RLOL_3 => FFS_RLOL_3, + FFS_RXFBFIFO_ERROR_0 => FFS_RXFBFIFO_ERROR_0, + FFS_RXFBFIFO_ERROR_1 => FFS_RXFBFIFO_ERROR_1, + FFS_RXFBFIFO_ERROR_2 => FFS_RXFBFIFO_ERROR_2, + FFS_RXFBFIFO_ERROR_3 => FFS_RXFBFIFO_ERROR_3, + FFS_TXFBFIFO_ERROR_0 => FFS_TXFBFIFO_ERROR_0, + FFS_TXFBFIFO_ERROR_1 => FFS_TXFBFIFO_ERROR_1, + FFS_TXFBFIFO_ERROR_2 => FFS_TXFBFIFO_ERROR_2, + FFS_TXFBFIFO_ERROR_3 => FFS_TXFBFIFO_ERROR_3, + OOB_OUT_0 => OOB_OUT_0, + OOB_OUT_1 => OOB_OUT_1, + OOB_OUT_2 => OOB_OUT_2, + OOB_OUT_3 => OOB_OUT_3, + REFCK2CORE => REFCK2CORE, + SCIINT => SCIINT, + SCIRDATA0 => SCIRDATA0, + SCIRDATA1 => SCIRDATA1, + SCIRDATA2 => SCIRDATA2, + SCIRDATA3 => SCIRDATA3, + SCIRDATA4 => SCIRDATA4, + SCIRDATA5 => SCIRDATA5, + SCIRDATA6 => SCIRDATA6, + SCIRDATA7 => SCIRDATA7 + ); + +end PCSC_arch; + +--synopsys translate_on + +--synopsys translate_off +library ECP2; +use ECP2.components.all; +--synopsys translate_on + +library IEEE, STD; +use IEEE.std_logic_1164.all; +use STD.TEXTIO.all; + +entity serdes_gbe_0_extclock_8b is + GENERIC (USER_CONFIG_FILE : String := "serdes_gbe_0_extclock_8b.txt"); + port ( + refclkp, refclkn : in std_logic; + hdinp0, hdinn0 : in std_logic; + hdoutp0, hdoutn0 : out std_logic; + ff_rxiclk_ch0, ff_txiclk_ch0, ff_ebrd_clk_0 : in std_logic; + ff_txdata_ch0 : in std_logic_vector (7 downto 0); + ff_rxdata_ch0 : out std_logic_vector (7 downto 0); + ff_tx_k_cntrl_ch0 : in std_logic; + ff_rx_k_cntrl_ch0 : out std_logic; + ff_rxfullclk_ch0 : out std_logic; + ff_xmit_ch0 : in std_logic; + ff_correct_disp_ch0 : in std_logic; + ff_disp_err_ch0, ff_cv_ch0 : out std_logic; + ff_rx_even_ch0 : out std_logic; + ffc_rrst_ch0 : in std_logic; + ffc_lane_tx_rst_ch0 : in std_logic; + ffc_lane_rx_rst_ch0 : in std_logic; + ffc_txpwdnb_ch0 : in std_logic; + ffc_rxpwdnb_ch0 : in std_logic; + ffs_rlos_lo_ch0 : out std_logic; + ffs_ls_sync_status_ch0 : out std_logic; + ffs_rlol_ch0 : out std_logic; + oob_out_ch0 : out std_logic; + ffc_macro_rst : in std_logic; + ffc_quad_rst : in std_logic; + ffc_trst : in std_logic; + ff_txfullclk : out std_logic; + ff_txhalfclk : out std_logic; + refck2core : out std_logic; + ffs_plol : out std_logic); + +end serdes_gbe_0_extclock_8b; + +architecture serdes_gbe_0_extclock_8b_arch of serdes_gbe_0_extclock_8b is + +component VLO +port ( + Z : out std_logic); +end component; + +component VHI +port ( + Z : out std_logic); +end component; +component PCSC +--synopsys translate_off +GENERIC( + CONFIG_FILE : String + ); +--synopsys translate_on +port ( + HDINN0 : in std_logic; + HDINN1 : in std_logic; + HDINN2 : in std_logic; + HDINN3 : in std_logic; + HDINP0 : in std_logic; + HDINP1 : in std_logic; + HDINP2 : in std_logic; + HDINP3 : in std_logic; + REFCLKN : in std_logic; + REFCLKP : in std_logic; + CIN0 : in std_logic; + CIN1 : in std_logic; + CIN2 : in std_logic; + CIN3 : in std_logic; + CIN4 : in std_logic; + CIN5 : in std_logic; + CIN6 : in std_logic; + CIN7 : in std_logic; + CIN8 : in std_logic; + CIN9 : in std_logic; + CIN10 : in std_logic; + CIN11 : in std_logic; + CYAWSTN : in std_logic; + FF_EBRD_CLK_0 : in std_logic; + FF_EBRD_CLK_1 : in std_logic; + FF_EBRD_CLK_2 : in std_logic; + FF_EBRD_CLK_3 : in std_logic; + FF_RXI_CLK_0 : in std_logic; + FF_RXI_CLK_1 : in std_logic; + FF_RXI_CLK_2 : in std_logic; + FF_RXI_CLK_3 : in std_logic; + FF_TX_D_0_0 : in std_logic; + FF_TX_D_0_1 : in std_logic; + FF_TX_D_0_2 : in std_logic; + FF_TX_D_0_3 : in std_logic; + FF_TX_D_0_4 : in std_logic; + FF_TX_D_0_5 : in std_logic; + FF_TX_D_0_6 : in std_logic; + FF_TX_D_0_7 : in std_logic; + FF_TX_D_0_8 : in std_logic; + FF_TX_D_0_9 : in std_logic; + FF_TX_D_0_10 : in std_logic; + FF_TX_D_0_11 : in std_logic; + FF_TX_D_0_12 : in std_logic; + FF_TX_D_0_13 : in std_logic; + FF_TX_D_0_14 : in std_logic; + FF_TX_D_0_15 : in std_logic; + FF_TX_D_0_16 : in std_logic; + FF_TX_D_0_17 : in std_logic; + FF_TX_D_0_18 : in std_logic; + FF_TX_D_0_19 : in std_logic; + FF_TX_D_0_20 : in std_logic; + FF_TX_D_0_21 : in std_logic; + FF_TX_D_0_22 : in std_logic; + FF_TX_D_0_23 : in std_logic; + FF_TX_D_1_0 : in std_logic; + FF_TX_D_1_1 : in std_logic; + FF_TX_D_1_2 : in std_logic; + FF_TX_D_1_3 : in std_logic; + FF_TX_D_1_4 : in std_logic; + FF_TX_D_1_5 : in std_logic; + FF_TX_D_1_6 : in std_logic; + FF_TX_D_1_7 : in std_logic; + FF_TX_D_1_8 : in std_logic; + FF_TX_D_1_9 : in std_logic; + FF_TX_D_1_10 : in std_logic; + FF_TX_D_1_11 : in std_logic; + FF_TX_D_1_12 : in std_logic; + FF_TX_D_1_13 : in std_logic; + FF_TX_D_1_14 : in std_logic; + FF_TX_D_1_15 : in std_logic; + FF_TX_D_1_16 : in std_logic; + FF_TX_D_1_17 : in std_logic; + FF_TX_D_1_18 : in std_logic; + FF_TX_D_1_19 : in std_logic; + FF_TX_D_1_20 : in std_logic; + FF_TX_D_1_21 : in std_logic; + FF_TX_D_1_22 : in std_logic; + FF_TX_D_1_23 : in std_logic; + FF_TX_D_2_0 : in std_logic; + FF_TX_D_2_1 : in std_logic; + FF_TX_D_2_2 : in std_logic; + FF_TX_D_2_3 : in std_logic; + FF_TX_D_2_4 : in std_logic; + FF_TX_D_2_5 : in std_logic; + FF_TX_D_2_6 : in std_logic; + FF_TX_D_2_7 : in std_logic; + FF_TX_D_2_8 : in std_logic; + FF_TX_D_2_9 : in std_logic; + FF_TX_D_2_10 : in std_logic; + FF_TX_D_2_11 : in std_logic; + FF_TX_D_2_12 : in std_logic; + FF_TX_D_2_13 : in std_logic; + FF_TX_D_2_14 : in std_logic; + FF_TX_D_2_15 : in std_logic; + FF_TX_D_2_16 : in std_logic; + FF_TX_D_2_17 : in std_logic; + FF_TX_D_2_18 : in std_logic; + FF_TX_D_2_19 : in std_logic; + FF_TX_D_2_20 : in std_logic; + FF_TX_D_2_21 : in std_logic; + FF_TX_D_2_22 : in std_logic; + FF_TX_D_2_23 : in std_logic; + FF_TX_D_3_0 : in std_logic; + FF_TX_D_3_1 : in std_logic; + FF_TX_D_3_2 : in std_logic; + FF_TX_D_3_3 : in std_logic; + FF_TX_D_3_4 : in std_logic; + FF_TX_D_3_5 : in std_logic; + FF_TX_D_3_6 : in std_logic; + FF_TX_D_3_7 : in std_logic; + FF_TX_D_3_8 : in std_logic; + FF_TX_D_3_9 : in std_logic; + FF_TX_D_3_10 : in std_logic; + FF_TX_D_3_11 : in std_logic; + FF_TX_D_3_12 : in std_logic; + FF_TX_D_3_13 : in std_logic; + FF_TX_D_3_14 : in std_logic; + FF_TX_D_3_15 : in std_logic; + FF_TX_D_3_16 : in std_logic; + FF_TX_D_3_17 : in std_logic; + FF_TX_D_3_18 : in std_logic; + FF_TX_D_3_19 : in std_logic; + FF_TX_D_3_20 : in std_logic; + FF_TX_D_3_21 : in std_logic; + FF_TX_D_3_22 : in std_logic; + FF_TX_D_3_23 : in std_logic; + FF_TXI_CLK_0 : in std_logic; + FF_TXI_CLK_1 : in std_logic; + FF_TXI_CLK_2 : in std_logic; + FF_TXI_CLK_3 : in std_logic; + FFC_CK_CORE_RX : in std_logic; + FFC_CK_CORE_TX : in std_logic; + FFC_EI_EN_0 : in std_logic; + FFC_EI_EN_1 : in std_logic; + FFC_EI_EN_2 : in std_logic; + FFC_EI_EN_3 : in std_logic; + FFC_ENABLE_CGALIGN_0 : in std_logic; + FFC_ENABLE_CGALIGN_1 : in std_logic; + FFC_ENABLE_CGALIGN_2 : in std_logic; + FFC_ENABLE_CGALIGN_3 : in std_logic; + FFC_FB_LOOPBACK_0 : in std_logic; + FFC_FB_LOOPBACK_1 : in std_logic; + FFC_FB_LOOPBACK_2 : in std_logic; + FFC_FB_LOOPBACK_3 : in std_logic; + FFC_LANE_RX_RST_0 : in std_logic; + FFC_LANE_RX_RST_1 : in std_logic; + FFC_LANE_RX_RST_2 : in std_logic; + FFC_LANE_RX_RST_3 : in std_logic; + FFC_LANE_TX_RST_0 : in std_logic; + FFC_LANE_TX_RST_1 : in std_logic; + FFC_LANE_TX_RST_2 : in std_logic; + FFC_LANE_TX_RST_3 : in std_logic; + FFC_MACRO_RST : in std_logic; + FFC_PCI_DET_EN_0 : in std_logic; + FFC_PCI_DET_EN_1 : in std_logic; + FFC_PCI_DET_EN_2 : in std_logic; + FFC_PCI_DET_EN_3 : in std_logic; + FFC_PCIE_CT_0 : in std_logic; + FFC_PCIE_CT_1 : in std_logic; + FFC_PCIE_CT_2 : in std_logic; + FFC_PCIE_CT_3 : in std_logic; + FFC_PFIFO_CLR_0 : in std_logic; + FFC_PFIFO_CLR_1 : in std_logic; + FFC_PFIFO_CLR_2 : in std_logic; + FFC_PFIFO_CLR_3 : in std_logic; + FFC_QUAD_RST : in std_logic; + FFC_RRST_0 : in std_logic; + FFC_RRST_1 : in std_logic; + FFC_RRST_2 : in std_logic; + FFC_RRST_3 : in std_logic; + FFC_RXPWDNB_0 : in std_logic; + FFC_RXPWDNB_1 : in std_logic; + FFC_RXPWDNB_2 : in std_logic; + FFC_RXPWDNB_3 : in std_logic; + FFC_SB_INV_RX_0 : in std_logic; + FFC_SB_INV_RX_1 : in std_logic; + FFC_SB_INV_RX_2 : in std_logic; + FFC_SB_INV_RX_3 : in std_logic; + FFC_SB_PFIFO_LP_0 : in std_logic; + FFC_SB_PFIFO_LP_1 : in std_logic; + FFC_SB_PFIFO_LP_2 : in std_logic; + FFC_SB_PFIFO_LP_3 : in std_logic; + FFC_SIGNAL_DETECT_0 : in std_logic; + FFC_SIGNAL_DETECT_1 : in std_logic; + FFC_SIGNAL_DETECT_2 : in std_logic; + FFC_SIGNAL_DETECT_3 : in std_logic; + FFC_TRST : in std_logic; + FFC_TXPWDNB_0 : in std_logic; + FFC_TXPWDNB_1 : in std_logic; + FFC_TXPWDNB_2 : in std_logic; + FFC_TXPWDNB_3 : in std_logic; + SCIADDR0 : in std_logic; + SCIADDR1 : in std_logic; + SCIADDR2 : in std_logic; + SCIADDR3 : in std_logic; + SCIADDR4 : in std_logic; + SCIADDR5 : in std_logic; + SCIENAUX : in std_logic; + SCIENCH0 : in std_logic; + SCIENCH1 : in std_logic; + SCIENCH2 : in std_logic; + SCIENCH3 : in std_logic; + SCIRD : in std_logic; + SCISELAUX : in std_logic; + SCISELCH0 : in std_logic; + SCISELCH1 : in std_logic; + SCISELCH2 : in std_logic; + SCISELCH3 : in std_logic; + SCIWDATA0 : in std_logic; + SCIWDATA1 : in std_logic; + SCIWDATA2 : in std_logic; + SCIWDATA3 : in std_logic; + SCIWDATA4 : in std_logic; + SCIWDATA5 : in std_logic; + SCIWDATA6 : in std_logic; + SCIWDATA7 : in std_logic; + SCIWSTN : in std_logic; + HDOUTN0 : out std_logic; + HDOUTN1 : out std_logic; + HDOUTN2 : out std_logic; + HDOUTN3 : out std_logic; + HDOUTP0 : out std_logic; + HDOUTP1 : out std_logic; + HDOUTP2 : out std_logic; + HDOUTP3 : out std_logic; + COUT0 : out std_logic; + COUT1 : out std_logic; + COUT2 : out std_logic; + COUT3 : out std_logic; + COUT4 : out std_logic; + COUT5 : out std_logic; + COUT6 : out std_logic; + COUT7 : out std_logic; + COUT8 : out std_logic; + COUT9 : out std_logic; + COUT10 : out std_logic; + COUT11 : out std_logic; + COUT12 : out std_logic; + COUT13 : out std_logic; + COUT14 : out std_logic; + COUT15 : out std_logic; + COUT16 : out std_logic; + COUT17 : out std_logic; + COUT18 : out std_logic; + COUT19 : out std_logic; + FF_RX_D_0_0 : out std_logic; + FF_RX_D_0_1 : out std_logic; + FF_RX_D_0_2 : out std_logic; + FF_RX_D_0_3 : out std_logic; + FF_RX_D_0_4 : out std_logic; + FF_RX_D_0_5 : out std_logic; + FF_RX_D_0_6 : out std_logic; + FF_RX_D_0_7 : out std_logic; + FF_RX_D_0_8 : out std_logic; + FF_RX_D_0_9 : out std_logic; + FF_RX_D_0_10 : out std_logic; + FF_RX_D_0_11 : out std_logic; + FF_RX_D_0_12 : out std_logic; + FF_RX_D_0_13 : out std_logic; + FF_RX_D_0_14 : out std_logic; + FF_RX_D_0_15 : out std_logic; + FF_RX_D_0_16 : out std_logic; + FF_RX_D_0_17 : out std_logic; + FF_RX_D_0_18 : out std_logic; + FF_RX_D_0_19 : out std_logic; + FF_RX_D_0_20 : out std_logic; + FF_RX_D_0_21 : out std_logic; + FF_RX_D_0_22 : out std_logic; + FF_RX_D_0_23 : out std_logic; + FF_RX_D_1_0 : out std_logic; + FF_RX_D_1_1 : out std_logic; + FF_RX_D_1_2 : out std_logic; + FF_RX_D_1_3 : out std_logic; + FF_RX_D_1_4 : out std_logic; + FF_RX_D_1_5 : out std_logic; + FF_RX_D_1_6 : out std_logic; + FF_RX_D_1_7 : out std_logic; + FF_RX_D_1_8 : out std_logic; + FF_RX_D_1_9 : out std_logic; + FF_RX_D_1_10 : out std_logic; + FF_RX_D_1_11 : out std_logic; + FF_RX_D_1_12 : out std_logic; + FF_RX_D_1_13 : out std_logic; + FF_RX_D_1_14 : out std_logic; + FF_RX_D_1_15 : out std_logic; + FF_RX_D_1_16 : out std_logic; + FF_RX_D_1_17 : out std_logic; + FF_RX_D_1_18 : out std_logic; + FF_RX_D_1_19 : out std_logic; + FF_RX_D_1_20 : out std_logic; + FF_RX_D_1_21 : out std_logic; + FF_RX_D_1_22 : out std_logic; + FF_RX_D_1_23 : out std_logic; + FF_RX_D_2_0 : out std_logic; + FF_RX_D_2_1 : out std_logic; + FF_RX_D_2_2 : out std_logic; + FF_RX_D_2_3 : out std_logic; + FF_RX_D_2_4 : out std_logic; + FF_RX_D_2_5 : out std_logic; + FF_RX_D_2_6 : out std_logic; + FF_RX_D_2_7 : out std_logic; + FF_RX_D_2_8 : out std_logic; + FF_RX_D_2_9 : out std_logic; + FF_RX_D_2_10 : out std_logic; + FF_RX_D_2_11 : out std_logic; + FF_RX_D_2_12 : out std_logic; + FF_RX_D_2_13 : out std_logic; + FF_RX_D_2_14 : out std_logic; + FF_RX_D_2_15 : out std_logic; + FF_RX_D_2_16 : out std_logic; + FF_RX_D_2_17 : out std_logic; + FF_RX_D_2_18 : out std_logic; + FF_RX_D_2_19 : out std_logic; + FF_RX_D_2_20 : out std_logic; + FF_RX_D_2_21 : out std_logic; + FF_RX_D_2_22 : out std_logic; + FF_RX_D_2_23 : out std_logic; + FF_RX_D_3_0 : out std_logic; + FF_RX_D_3_1 : out std_logic; + FF_RX_D_3_2 : out std_logic; + FF_RX_D_3_3 : out std_logic; + FF_RX_D_3_4 : out std_logic; + FF_RX_D_3_5 : out std_logic; + FF_RX_D_3_6 : out std_logic; + FF_RX_D_3_7 : out std_logic; + FF_RX_D_3_8 : out std_logic; + FF_RX_D_3_9 : out std_logic; + FF_RX_D_3_10 : out std_logic; + FF_RX_D_3_11 : out std_logic; + FF_RX_D_3_12 : out std_logic; + FF_RX_D_3_13 : out std_logic; + FF_RX_D_3_14 : out std_logic; + FF_RX_D_3_15 : out std_logic; + FF_RX_D_3_16 : out std_logic; + FF_RX_D_3_17 : out std_logic; + FF_RX_D_3_18 : out std_logic; + FF_RX_D_3_19 : out std_logic; + FF_RX_D_3_20 : out std_logic; + FF_RX_D_3_21 : out std_logic; + FF_RX_D_3_22 : out std_logic; + FF_RX_D_3_23 : out std_logic; + FF_RX_F_CLK_0 : out std_logic; + FF_RX_F_CLK_1 : out std_logic; + FF_RX_F_CLK_2 : out std_logic; + FF_RX_F_CLK_3 : out std_logic; + FF_RX_H_CLK_0 : out std_logic; + FF_RX_H_CLK_1 : out std_logic; + FF_RX_H_CLK_2 : out std_logic; + FF_RX_H_CLK_3 : out std_logic; + FF_RX_Q_CLK_0 : out std_logic; + FF_RX_Q_CLK_1 : out std_logic; + FF_RX_Q_CLK_2 : out std_logic; + FF_RX_Q_CLK_3 : out std_logic; + FF_TX_F_CLK : out std_logic; + FF_TX_H_CLK : out std_logic; + FF_TX_Q_CLK : out std_logic; + FFS_CC_OVERRUN_0 : out std_logic; + FFS_CC_OVERRUN_1 : out std_logic; + FFS_CC_OVERRUN_2 : out std_logic; + FFS_CC_OVERRUN_3 : out std_logic; + FFS_CC_UNDERRUN_0 : out std_logic; + FFS_CC_UNDERRUN_1 : out std_logic; + FFS_CC_UNDERRUN_2 : out std_logic; + FFS_CC_UNDERRUN_3 : out std_logic; + FFS_LS_SYNC_STATUS_0 : out std_logic; + FFS_LS_SYNC_STATUS_1 : out std_logic; + FFS_LS_SYNC_STATUS_2 : out std_logic; + FFS_LS_SYNC_STATUS_3 : out std_logic; + FFS_PCIE_CON_0 : out std_logic; + FFS_PCIE_CON_1 : out std_logic; + FFS_PCIE_CON_2 : out std_logic; + FFS_PCIE_CON_3 : out std_logic; + FFS_PCIE_DONE_0 : out std_logic; + FFS_PCIE_DONE_1 : out std_logic; + FFS_PCIE_DONE_2 : out std_logic; + FFS_PCIE_DONE_3 : out std_logic; + FFS_RLOS_LO_0 : out std_logic; + FFS_RLOS_LO_1 : out std_logic; + FFS_RLOS_LO_2 : out std_logic; + FFS_RLOS_LO_3 : out std_logic; + OOB_OUT_0 : out std_logic; + OOB_OUT_1 : out std_logic; + OOB_OUT_2 : out std_logic; + OOB_OUT_3 : out std_logic; + REFCK2CORE : out std_logic; + SCIINT : out std_logic; + SCIRDATA0 : out std_logic; + SCIRDATA1 : out std_logic; + SCIRDATA2 : out std_logic; + SCIRDATA3 : out std_logic; + SCIRDATA4 : out std_logic; + SCIRDATA5 : out std_logic; + SCIRDATA6 : out std_logic; + SCIRDATA7 : out std_logic; + FFS_PLOL : out std_logic; + FFS_RLOL_0 : out std_logic; + FFS_RLOL_1 : out std_logic; + FFS_RLOL_2 : out std_logic; + FFS_RLOL_3 : out std_logic; + FFS_RXFBFIFO_ERROR_0 : out std_logic; + FFS_RXFBFIFO_ERROR_1 : out std_logic; + FFS_RXFBFIFO_ERROR_2 : out std_logic; + FFS_RXFBFIFO_ERROR_3 : out std_logic; + FFS_TXFBFIFO_ERROR_0 : out std_logic; + FFS_TXFBFIFO_ERROR_1 : out std_logic; + FFS_TXFBFIFO_ERROR_2 : out std_logic; + FFS_TXFBFIFO_ERROR_3 : out std_logic +); +end component; + attribute IS_ASB: string; + attribute IS_ASB of PCSC_INST : label is "ep5m00/data/ep5m00.acd"; + attribute CONFIG_FILE: string; + attribute CONFIG_FILE of PCSC_INST : label is USER_CONFIG_FILE; + attribute black_box_pad_pin: string; + attribute black_box_pad_pin of PCSC : component is "HDINP0, HDINN0, HDINP1, HDINN1, HDINP2, HDINN2, HDINP3, HDINN3, HDOUTP0, HDOUTN0, HDOUTP1, HDOUTN1, HDOUTP2, HDOUTN2, HDOUTP3, HDOUTN3, REFCLKP, REFCLKN"; + +signal fpsc_vlo : std_logic := '0'; +signal cin : std_logic_vector (11 downto 0) := "000000000000"; +signal cout : std_logic_vector (19 downto 0); + +begin + +vlo_inst : VLO port map(Z => fpsc_vlo); + +-- pcs_quad instance +PCSC_INST : PCSC +--synopsys translate_off + generic map (CONFIG_FILE => USER_CONFIG_FILE) +--synopsys translate_on +port map ( + FFC_CK_CORE_TX => fpsc_vlo, + FFC_CK_CORE_RX => fpsc_vlo, + REFCLKP => refclkp, + REFCLKN => refclkn, + HDINP0 => hdinp0, + HDINN0 => hdinn0, + HDOUTP0 => hdoutp0, + HDOUTN0 => hdoutn0, + SCISELCH0 => fpsc_vlo, + SCIENCH0 => fpsc_vlo, + FF_RXI_CLK_0 => ff_rxiclk_ch0, + FF_TXI_CLK_0 => ff_txiclk_ch0, + FF_EBRD_CLK_0 => ff_ebrd_clk_0, + FF_RX_F_CLK_0 => ff_rxfullclk_ch0, + FF_RX_H_CLK_0 => open, + FF_RX_Q_CLK_0 => open, + FF_TX_D_0_0 => ff_txdata_ch0(0), + FF_TX_D_0_1 => ff_txdata_ch0(1), + FF_TX_D_0_2 => ff_txdata_ch0(2), + FF_TX_D_0_3 => ff_txdata_ch0(3), + FF_TX_D_0_4 => ff_txdata_ch0(4), + FF_TX_D_0_5 => ff_txdata_ch0(5), + FF_TX_D_0_6 => ff_txdata_ch0(6), + FF_TX_D_0_7 => ff_txdata_ch0(7), + FF_TX_D_0_8 => ff_tx_k_cntrl_ch0, + FF_TX_D_0_9 => fpsc_vlo, + FF_TX_D_0_10 => ff_xmit_ch0, + FF_TX_D_0_11 => ff_correct_disp_ch0, + FF_TX_D_0_12 => fpsc_vlo, + FF_TX_D_0_13 => fpsc_vlo, + FF_TX_D_0_14 => fpsc_vlo, + FF_TX_D_0_15 => fpsc_vlo, + FF_TX_D_0_16 => fpsc_vlo, + FF_TX_D_0_17 => fpsc_vlo, + FF_TX_D_0_18 => fpsc_vlo, + FF_TX_D_0_19 => fpsc_vlo, + FF_TX_D_0_20 => fpsc_vlo, + FF_TX_D_0_21 => fpsc_vlo, + FF_TX_D_0_22 => fpsc_vlo, + FF_TX_D_0_23 => fpsc_vlo, + FF_RX_D_0_0 => ff_rxdata_ch0(0), + FF_RX_D_0_1 => ff_rxdata_ch0(1), + FF_RX_D_0_2 => ff_rxdata_ch0(2), + FF_RX_D_0_3 => ff_rxdata_ch0(3), + FF_RX_D_0_4 => ff_rxdata_ch0(4), + FF_RX_D_0_5 => ff_rxdata_ch0(5), + FF_RX_D_0_6 => ff_rxdata_ch0(6), + FF_RX_D_0_7 => ff_rxdata_ch0(7), + FF_RX_D_0_8 => ff_rx_k_cntrl_ch0, + FF_RX_D_0_9 => ff_disp_err_ch0, + FF_RX_D_0_10 => ff_cv_ch0, + FF_RX_D_0_11 => ff_rx_even_ch0, + FF_RX_D_0_12 => open, + FF_RX_D_0_13 => open, + FF_RX_D_0_14 => open, + FF_RX_D_0_15 => open, + FF_RX_D_0_16 => open, + FF_RX_D_0_17 => open, + FF_RX_D_0_18 => open, + FF_RX_D_0_19 => open, + FF_RX_D_0_20 => open, + FF_RX_D_0_21 => open, + FF_RX_D_0_22 => open, + FF_RX_D_0_23 => open, + FFC_RRST_0 => ffc_rrst_ch0, + FFC_SIGNAL_DETECT_0 => fpsc_vlo, + FFC_ENABLE_CGALIGN_0 => fpsc_vlo, + FFC_SB_PFIFO_LP_0 => fpsc_vlo, + FFC_PFIFO_CLR_0 => fpsc_vlo, + FFC_FB_LOOPBACK_0 => fpsc_vlo, + FFC_SB_INV_RX_0 => fpsc_vlo, + FFC_PCIE_CT_0 => fpsc_vlo, + FFC_PCI_DET_EN_0 => fpsc_vlo, + FFS_PCIE_DONE_0 => open, + FFS_PCIE_CON_0 => open, + FFC_EI_EN_0 => fpsc_vlo, + FFC_LANE_TX_RST_0 => ffc_lane_tx_rst_ch0, + FFC_LANE_RX_RST_0 => ffc_lane_rx_rst_ch0, + FFC_TXPWDNB_0 => ffc_txpwdnb_ch0, + FFC_RXPWDNB_0 => ffc_rxpwdnb_ch0, + FFS_RLOS_LO_0 => ffs_rlos_lo_ch0, + FFS_LS_SYNC_STATUS_0 => ffs_ls_sync_status_ch0, + FFS_CC_UNDERRUN_0 => open, + FFS_CC_OVERRUN_0 => open, + FFS_RXFBFIFO_ERROR_0 => open, + FFS_TXFBFIFO_ERROR_0 => open, + FFS_RLOL_0 => ffs_rlol_ch0, + OOB_OUT_0 => oob_out_ch0, + HDINP1 => fpsc_vlo, + HDINN1 => fpsc_vlo, + HDOUTP1 => open, + HDOUTN1 => open, + SCISELCH1 => fpsc_vlo, + SCIENCH1 => fpsc_vlo, + FF_RXI_CLK_1 => fpsc_vlo, + FF_TXI_CLK_1 => fpsc_vlo, + FF_EBRD_CLK_1 => fpsc_vlo, + FF_RX_F_CLK_1 => open, + FF_RX_H_CLK_1 => open, + FF_RX_Q_CLK_1 => open, + FF_TX_D_1_0 => fpsc_vlo, + FF_TX_D_1_1 => fpsc_vlo, + FF_TX_D_1_2 => fpsc_vlo, + FF_TX_D_1_3 => fpsc_vlo, + FF_TX_D_1_4 => fpsc_vlo, + FF_TX_D_1_5 => fpsc_vlo, + FF_TX_D_1_6 => fpsc_vlo, + FF_TX_D_1_7 => fpsc_vlo, + FF_TX_D_1_8 => fpsc_vlo, + FF_TX_D_1_9 => fpsc_vlo, + FF_TX_D_1_10 => fpsc_vlo, + FF_TX_D_1_11 => fpsc_vlo, + FF_TX_D_1_12 => fpsc_vlo, + FF_TX_D_1_13 => fpsc_vlo, + FF_TX_D_1_14 => fpsc_vlo, + FF_TX_D_1_15 => fpsc_vlo, + FF_TX_D_1_16 => fpsc_vlo, + FF_TX_D_1_17 => fpsc_vlo, + FF_TX_D_1_18 => fpsc_vlo, + FF_TX_D_1_19 => fpsc_vlo, + FF_TX_D_1_20 => fpsc_vlo, + FF_TX_D_1_21 => fpsc_vlo, + FF_TX_D_1_22 => fpsc_vlo, + FF_TX_D_1_23 => fpsc_vlo, + FF_RX_D_1_0 => open, + FF_RX_D_1_1 => open, + FF_RX_D_1_2 => open, + FF_RX_D_1_3 => open, + FF_RX_D_1_4 => open, + FF_RX_D_1_5 => open, + FF_RX_D_1_6 => open, + FF_RX_D_1_7 => open, + FF_RX_D_1_8 => open, + FF_RX_D_1_9 => open, + FF_RX_D_1_10 => open, + FF_RX_D_1_11 => open, + FF_RX_D_1_12 => open, + FF_RX_D_1_13 => open, + FF_RX_D_1_14 => open, + FF_RX_D_1_15 => open, + FF_RX_D_1_16 => open, + FF_RX_D_1_17 => open, + FF_RX_D_1_18 => open, + FF_RX_D_1_19 => open, + FF_RX_D_1_20 => open, + FF_RX_D_1_21 => open, + FF_RX_D_1_22 => open, + FF_RX_D_1_23 => open, + FFC_RRST_1 => fpsc_vlo, + FFC_SIGNAL_DETECT_1 => fpsc_vlo, + FFC_SB_PFIFO_LP_1 => fpsc_vlo, + FFC_SB_INV_RX_1 => fpsc_vlo, + FFC_PFIFO_CLR_1 => fpsc_vlo, + FFC_PCIE_CT_1 => fpsc_vlo, + FFC_PCI_DET_EN_1 => fpsc_vlo, + FFC_FB_LOOPBACK_1 => fpsc_vlo, + FFC_ENABLE_CGALIGN_1 => fpsc_vlo, + FFC_EI_EN_1 => fpsc_vlo, + FFC_LANE_TX_RST_1 => fpsc_vlo, + FFC_LANE_RX_RST_1 => fpsc_vlo, + FFC_TXPWDNB_1 => fpsc_vlo, + FFC_RXPWDNB_1 => fpsc_vlo, + FFS_RLOS_LO_1 => open, + FFS_PCIE_DONE_1 => open, + FFS_PCIE_CON_1 => open, + FFS_LS_SYNC_STATUS_1 => open, + FFS_CC_UNDERRUN_1 => open, + FFS_CC_OVERRUN_1 => open, + FFS_RLOL_1 => open, + FFS_RXFBFIFO_ERROR_1 => open, + FFS_TXFBFIFO_ERROR_1 => open, + OOB_OUT_1 => open, + HDINP2 => fpsc_vlo, + HDINN2 => fpsc_vlo, + HDOUTP2 => open, + HDOUTN2 => open, + SCISELCH2 => fpsc_vlo, + SCIENCH2 => fpsc_vlo, + FF_RXI_CLK_2 => fpsc_vlo, + FF_TXI_CLK_2 => fpsc_vlo, + FF_EBRD_CLK_2 => fpsc_vlo, + FF_RX_F_CLK_2 => open, + FF_RX_H_CLK_2 => open, + FF_RX_Q_CLK_2 => open, + FF_TX_D_2_0 => fpsc_vlo, + FF_TX_D_2_1 => fpsc_vlo, + FF_TX_D_2_2 => fpsc_vlo, + FF_TX_D_2_3 => fpsc_vlo, + FF_TX_D_2_4 => fpsc_vlo, + FF_TX_D_2_5 => fpsc_vlo, + FF_TX_D_2_6 => fpsc_vlo, + FF_TX_D_2_7 => fpsc_vlo, + FF_TX_D_2_8 => fpsc_vlo, + FF_TX_D_2_9 => fpsc_vlo, + FF_TX_D_2_10 => fpsc_vlo, + FF_TX_D_2_11 => fpsc_vlo, + FF_TX_D_2_12 => fpsc_vlo, + FF_TX_D_2_13 => fpsc_vlo, + FF_TX_D_2_14 => fpsc_vlo, + FF_TX_D_2_15 => fpsc_vlo, + FF_TX_D_2_16 => fpsc_vlo, + FF_TX_D_2_17 => fpsc_vlo, + FF_TX_D_2_18 => fpsc_vlo, + FF_TX_D_2_19 => fpsc_vlo, + FF_TX_D_2_20 => fpsc_vlo, + FF_TX_D_2_21 => fpsc_vlo, + FF_TX_D_2_22 => fpsc_vlo, + FF_TX_D_2_23 => fpsc_vlo, + FF_RX_D_2_0 => open, + FF_RX_D_2_1 => open, + FF_RX_D_2_2 => open, + FF_RX_D_2_3 => open, + FF_RX_D_2_4 => open, + FF_RX_D_2_5 => open, + FF_RX_D_2_6 => open, + FF_RX_D_2_7 => open, + FF_RX_D_2_8 => open, + FF_RX_D_2_9 => open, + FF_RX_D_2_10 => open, + FF_RX_D_2_11 => open, + FF_RX_D_2_12 => open, + FF_RX_D_2_13 => open, + FF_RX_D_2_14 => open, + FF_RX_D_2_15 => open, + FF_RX_D_2_16 => open, + FF_RX_D_2_17 => open, + FF_RX_D_2_18 => open, + FF_RX_D_2_19 => open, + FF_RX_D_2_20 => open, + FF_RX_D_2_21 => open, + FF_RX_D_2_22 => open, + FF_RX_D_2_23 => open, + FFC_RRST_2 => fpsc_vlo, + FFC_SIGNAL_DETECT_2 => fpsc_vlo, + FFC_SB_PFIFO_LP_2 => fpsc_vlo, + FFC_SB_INV_RX_2 => fpsc_vlo, + FFC_PFIFO_CLR_2 => fpsc_vlo, + FFC_PCIE_CT_2 => fpsc_vlo, + FFC_PCI_DET_EN_2 => fpsc_vlo, + FFC_FB_LOOPBACK_2 => fpsc_vlo, + FFC_ENABLE_CGALIGN_2 => fpsc_vlo, + FFC_EI_EN_2 => fpsc_vlo, + FFC_LANE_TX_RST_2 => fpsc_vlo, + FFC_LANE_RX_RST_2 => fpsc_vlo, + FFC_TXPWDNB_2 => fpsc_vlo, + FFC_RXPWDNB_2 => fpsc_vlo, + FFS_RLOS_LO_2 => open, + FFS_PCIE_DONE_2 => open, + FFS_PCIE_CON_2 => open, + FFS_LS_SYNC_STATUS_2 => open, + FFS_CC_UNDERRUN_2 => open, + FFS_CC_OVERRUN_2 => open, + FFS_RLOL_2 => open, + FFS_RXFBFIFO_ERROR_2 => open, + FFS_TXFBFIFO_ERROR_2 => open, + OOB_OUT_2 => open, + HDINP3 => fpsc_vlo, + HDINN3 => fpsc_vlo, + HDOUTP3 => open, + HDOUTN3 => open, + SCISELCH3 => fpsc_vlo, + SCIENCH3 => fpsc_vlo, + FF_RXI_CLK_3 => fpsc_vlo, + FF_TXI_CLK_3 => fpsc_vlo, + FF_EBRD_CLK_3 => fpsc_vlo, + FF_RX_F_CLK_3 => open, + FF_RX_H_CLK_3 => open, + FF_RX_Q_CLK_3 => open, + FF_TX_D_3_0 => fpsc_vlo, + FF_TX_D_3_1 => fpsc_vlo, + FF_TX_D_3_2 => fpsc_vlo, + FF_TX_D_3_3 => fpsc_vlo, + FF_TX_D_3_4 => fpsc_vlo, + FF_TX_D_3_5 => fpsc_vlo, + FF_TX_D_3_6 => fpsc_vlo, + FF_TX_D_3_7 => fpsc_vlo, + FF_TX_D_3_8 => fpsc_vlo, + FF_TX_D_3_9 => fpsc_vlo, + FF_TX_D_3_10 => fpsc_vlo, + FF_TX_D_3_11 => fpsc_vlo, + FF_TX_D_3_12 => fpsc_vlo, + FF_TX_D_3_13 => fpsc_vlo, + FF_TX_D_3_14 => fpsc_vlo, + FF_TX_D_3_15 => fpsc_vlo, + FF_TX_D_3_16 => fpsc_vlo, + FF_TX_D_3_17 => fpsc_vlo, + FF_TX_D_3_18 => fpsc_vlo, + FF_TX_D_3_19 => fpsc_vlo, + FF_TX_D_3_20 => fpsc_vlo, + FF_TX_D_3_21 => fpsc_vlo, + FF_TX_D_3_22 => fpsc_vlo, + FF_TX_D_3_23 => fpsc_vlo, + FF_RX_D_3_0 => open, + FF_RX_D_3_1 => open, + FF_RX_D_3_2 => open, + FF_RX_D_3_3 => open, + FF_RX_D_3_4 => open, + FF_RX_D_3_5 => open, + FF_RX_D_3_6 => open, + FF_RX_D_3_7 => open, + FF_RX_D_3_8 => open, + FF_RX_D_3_9 => open, + FF_RX_D_3_10 => open, + FF_RX_D_3_11 => open, + FF_RX_D_3_12 => open, + FF_RX_D_3_13 => open, + FF_RX_D_3_14 => open, + FF_RX_D_3_15 => open, + FF_RX_D_3_16 => open, + FF_RX_D_3_17 => open, + FF_RX_D_3_18 => open, + FF_RX_D_3_19 => open, + FF_RX_D_3_20 => open, + FF_RX_D_3_21 => open, + FF_RX_D_3_22 => open, + FF_RX_D_3_23 => open, + FFC_RRST_3 => fpsc_vlo, + FFC_SIGNAL_DETECT_3 => fpsc_vlo, + FFC_SB_PFIFO_LP_3 => fpsc_vlo, + FFC_SB_INV_RX_3 => fpsc_vlo, + FFC_PFIFO_CLR_3 => fpsc_vlo, + FFC_PCIE_CT_3 => fpsc_vlo, + FFC_PCI_DET_EN_3 => fpsc_vlo, + FFC_FB_LOOPBACK_3 => fpsc_vlo, + FFC_ENABLE_CGALIGN_3 => fpsc_vlo, + FFC_EI_EN_3 => fpsc_vlo, + FFC_LANE_TX_RST_3 => fpsc_vlo, + FFC_LANE_RX_RST_3 => fpsc_vlo, + FFC_TXPWDNB_3 => fpsc_vlo, + FFC_RXPWDNB_3 => fpsc_vlo, + FFS_RLOS_LO_3 => open, + FFS_PCIE_DONE_3 => open, + FFS_PCIE_CON_3 => open, + FFS_LS_SYNC_STATUS_3 => open, + FFS_CC_UNDERRUN_3 => open, + FFS_CC_OVERRUN_3 => open, + FFS_RLOL_3 => open, + FFS_RXFBFIFO_ERROR_3 => open, + FFS_TXFBFIFO_ERROR_3 => open, + OOB_OUT_3 => open, + SCIWDATA0 => fpsc_vlo, + SCIWDATA1 => fpsc_vlo, + SCIWDATA2 => fpsc_vlo, + SCIWDATA3 => fpsc_vlo, + SCIWDATA4 => fpsc_vlo, + SCIWDATA5 => fpsc_vlo, + SCIWDATA6 => fpsc_vlo, + SCIWDATA7 => fpsc_vlo, + SCIADDR0 => fpsc_vlo, + SCIADDR1 => fpsc_vlo, + SCIADDR2 => fpsc_vlo, + SCIADDR3 => fpsc_vlo, + SCIADDR4 => fpsc_vlo, + SCIADDR5 => fpsc_vlo, + SCIRDATA0 => open, + SCIRDATA1 => open, + SCIRDATA2 => open, + SCIRDATA3 => open, + SCIRDATA4 => open, + SCIRDATA5 => open, + SCIRDATA6 => open, + SCIRDATA7 => open, + SCIENAUX => fpsc_vlo, + SCISELAUX => fpsc_vlo, + SCIRD => fpsc_vlo, + SCIWSTN => fpsc_vlo, + CYAWSTN => fpsc_vlo, + SCIINT => open, + FFC_MACRO_RST => ffc_macro_rst, + FFC_QUAD_RST => ffc_quad_rst, + FFC_TRST => ffc_trst, + FF_TX_F_CLK => ff_txfullclk, + FF_TX_H_CLK => ff_txhalfclk, + FF_TX_Q_CLK => open, + REFCK2CORE => refck2core, + CIN0 => cin(0), + CIN1 => cin(1), + CIN2 => cin(2), + CIN3 => cin(3), + CIN4 => cin(4), + CIN5 => cin(5), + CIN6 => cin(6), + CIN7 => cin(7), + CIN8 => cin(8), + CIN9 => cin(9), + CIN10 => cin(10), + CIN11 => cin(11), + COUT0 => cout(0), + COUT1 => cout(1), + COUT2 => cout(2), + COUT3 => cout(3), + COUT4 => cout(4), + COUT5 => cout(5), + COUT6 => cout(6), + COUT7 => cout(7), + COUT8 => cout(8), + COUT9 => cout(9), + COUT10 => cout(10), + COUT11 => cout(11), + COUT12 => cout(12), + COUT13 => cout(13), + COUT14 => cout(14), + COUT15 => cout(15), + COUT16 => cout(16), + COUT17 => cout(17), + COUT18 => cout(18), + COUT19 => cout(19), + FFS_PLOL => ffs_plol); + +--synopsys translate_off +file_read : PROCESS +VARIABLE open_status : file_open_status; +FILE config : text; +BEGIN + file_open (open_status, config, USER_CONFIG_FILE, read_mode); + IF (open_status = name_error) THEN + report "Auto configuration file for PCS module not found. PCS internal configuration registers will not be initialized correctly during simulation!" + severity ERROR; + END IF; + wait; +END PROCESS; +--synopsys translate_on + +end serdes_gbe_0_extclock_8b_arch ; diff --git a/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/.cvsignore b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/.cvsignore new file mode 100644 index 0000000..67edf82 --- /dev/null +++ b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/.cvsignore @@ -0,0 +1,11 @@ +*.jhd +*.naf +*.srp +*.sym +*.log +*.v +*.htm +*.tcl +*tmpl.vhd +sgmii_pcs_eval + diff --git a/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/pmi_fifo_dcLEan71301616161010.ngo b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/pmi_fifo_dcLEan71301616161010.ngo new file mode 100755 index 0000000000000000000000000000000000000000..d3c4b97c352a5cfa8fff25b327440ad74a0271e5 GIT binary patch literal 35501 zcmdsgd3+qjwY6+xs1Tb75JVv)3PP1ejP51Mi$$U0vOy9zXjm(?#^Fm3Y5OAqnJ zxZXJV=X!3LI)7cJ$=x>DBJ!GPTclU13a_P&dBr_%c;-R3CGl zST}k6oXPcbrc9qad(QajDQ1+T;H1g(rc6XSmOgw4#izcs;e}z$hh+_;97`F<*|7hc zdTlng*zra^tR?iWy-bsZrNb6MSD7}6e%%;%o= zD6g8#)!8B@TEl%*YY+wK)ToL3L{C%@a*k6OA|^MD&5G(f~arIF^NQh z*jtU5A0@Q=+#rftd+o^}$`1K*heQ{hwFsCzB`RsO58&--xy>HF?Cj-Ca8oYKIT)Ol zLYPwn&VTwGc@mEjoi;Ai53RQ{6_!2}(l;i;oN?g%N`vxCJp`OvlVKTD+Pk?Y%wfIn zh@@g&@2U*TP#G7u3P)FP1?zKZGR$Gl=eC78OjTYU;xOY~3n2z`*{wUoU?w{yLJa2d zy02P!ijUVt=%pVe=Acw}UX9POgTeLSpz-~TP_TP~R=6&U zSj(CtsUUK1!EnsT>#lPntQC9$-50u|O!AKFF+6_|f5QOxm5iowpKdZjQoxF8Fb{e+ zz~M8Awva251mc6<=`3PWLFMtLmd&SZo~*4=#(7S-Ec8)31wcSSQ} znSa(&b$qD3#;l)Y;5eY)(?kE4_q6wLnmJ@oZd|_jx@? zz-CLGD#~K>)-O0Si#K^aUgh356omt>9+X{Ch%gt{FM!lRU4hg>MEAE*$!bX>@?R{) z205|FGm=3v%CR|4iza1ztn3ge&Lp#^o?Y+C#B5c25tI4-prwdORqigyrH4wzbQSi@ zQB-pY`74D`oONvlC0iI-BBLuS8;rjyyF@tbC$TF zz=;2zK`!32`4EFIx2H292H#c>bO~e80=FJhO*Z^9eIXIPtbQ%<{9O4y?3Bv+48Gvj zyP+h^uuElwmAhN)Y{s>bfpo z$|66^*f?vtvE0Uq@gMCrPDCFUY@Dk4D3m_|ZVshqNBU6Y7c3*aImfgMma(Dwvzlg_ z!$ngImQ~C2`OI4X4revq4jB_;X-5hgBRVA} zk2|8Zx_JHc6J1ln-WL_@RT*MXcbD{$p@*+}vue6HS;UlOfp@wf2@iF|a7o4r>%o;c zPpv8Dvc+@##ayC1R~2*F!k6bQSCCP(PO2Y*D+`UwibYwotQM6q)zr*8G9#IW23m@K zHv~Y&7?yu^sJ6mn`Hd}MP*gOB5ATYuBDM@t?v?2xwjPw-t2&DK)MK5_Is}b+yry79 z5xq8~KpDBmYLuZ=)bp$=NfqJ(yt@ocw6$+Ii7v@OkFmsHLd=7YJgR_-Hf=NKV%E_kAy zX??t<<4EKj+hXHrA!n*<<9OzsV{(Wq$|Ewf%ibi!8Ce_W{gmL+nWONE2NdturRwye zYxJxPY5 z_?#MWoKcG-@*&oY@zc>b&WI}TMx-WE0V4o2~9Rm`LxZ= zV__#H?R{o{QQpQ8U0|Vktk=ce!EHt-S28+f#yrk!orx_bhLS6f$RIWp_s|%Ru>M0Q z>$R41uc-Lwqw5bw?JFK(s-Z{A;>?-dfXL2MW=xrbEz&uBpl->7GxeC+btqtmKF}kM zVN!BW#DOnv5KEb7i}UvF6tr!9!3N_Xv|e z8z|rJ3yz}-e_m^1Y@Q#nYAkvjC07xl#8_Nw&cxU>*O!|Z6@OdG#HhMknoW$rZY-D> zf!$f@#|~zFjx;f5c@OSLaR;-w4^07M2=kQ&|K3=_e6rO@vVccT?GC1-elFP_lw93n zBw5142@@me$Gc37z&fk^*jTo~uQTQz^_MhiVU{m+8$s&mc>{ASL3icNJr?(u8b3CM zS^lBT+#~4URhk$<|JF4z0(-5;#0cz9Sra3ai8&L)t#_OJ$QT0qYp;nB*jot`Be1vI zO^m?aPnsBtb9Za;W7PoW4o{gFbNM7;B-yYZXHAS%*ihz!k} zTY%!0yC#O3yE_`eYE;2xOG+20226Kk#>5D7mmU*CaqiT#A0y`dOxYaO+&%itEh4E* znq*X8ZLNtRqIc!dRXkMH)k{yti1KR*U(h2Gx6{N}+~|~vu?AH+6C=ul5Rn>qL^-C# z#8CKdyAkHlqbGT@$4p2gz7wmvyTm!lyVFd6q3}K|ay#5iY2m#xh#w?z5uQl}j5vDy zq)F8iFtR+_j_8m{*p3aoQy;I4GUeq~V5uQVz7?IzvtUl0JY)QXX_NU5dR&0p?D#^i zcq|`HDR0lms-jGJU9L?;ney&?RH|q5lvm{1LR3=Tq-)EgOuiwVZxYguOzyukodl~_ zF=-~d=IA8oVUuREMOO9+ovOq1VC;C_Y|uB^Pe(Hw2(kwsKvfKzG==o&9!-l(ho<>x z9^h&kg;e~2^i=4_os|GJV&Ys#S6oeQTM znx+)`n#pCYS1!D;Pf{czWumrhusdlvn^pB*HSp^N*W%E;mY4=VpgJc)irZa%zMh&5k(m_YEAgavjvkJ z#mJOac}uB&`3bLz#YD6tkCyVzY%_90k(QHJHu*|o}>DjsV~e$ojy=bd2_T*!}V~cywk!emUSNXM}pjmi=!G&n>!4XJg!%i_X_Ul zA9-BdC{JD`!W3M1Q5#%)Wdd9$WT)&3TpN|MOG6103%KevW?S~rD2hk^kwe1l;p z7)1DOHZ{5HVqo}(a=zGA0)y=j7DKdsO6%eAtieSLT=n>m02Voyq!zt}qBkjLkEUqR zL(O3DRK_G{(emJj1_PaCr^ynF(QBXF<7H&oube$I(JWD6J-$SHk&G|iOND{OSdB_C z7k3-&VMAb;!g7o6h0`-XIUMDEq@1s|Mavtm9KO$r2Nk~Wl>2eGCp&vLk@v@N3(8v# zrX>v_TrvX*56#l5IQ}q$%F4cTnl{Yd3d87KsyRSLI>m;weHNwl2cXxM$ z*F@f<(X>>n_ee)X4k%!|gIx8Gn7KyfQXmi*xB@vJ>kN9zIML@py78tt^{Cj(}t&?)^&mp9= zH59JkuSS2MEs}EApu9CG@4+U<9_&PD)fP?4eJF{5oM?=s+(!@|?!tXZw>GWZwN=_i zO1Y0!g6h>~RLXrki-5GWl~V4LE`o0>q1>mM5s>!jR^EFWX`b%T))C5m25Fu_dFyh# zw+>~k%WHEA_BMN zhlR@hM>(h-ZM1+Za^F;=4-9cFAhc*3L5|~~y7j>#u3ZRuZC#+;Ppd!y0qqfR%^{?; z)eElO2yNOj0ax&cCbYc+uHX-A(ua1+8;;>+yDn|#fNL6|N*_w%+K!OZ=2E!!BXsKH zL|h99E&8xec_S-9^=fk@+!(f^=P{y9IDqMASWJX z;+jK9L53~ueW?$jpby@a_vI`?6304nZ_h4Jd41fjyswsn>QNp~6>)7qs8L=b%UA;Z zM7uUe#1-lG$t!Q)R^HoBf$G-AjJReHTy4pSYbyeB;=wAeNH+@U_U~fs07xDH$#1at zcn1~`TD0*3tRfPi`jqENja*2&kfaHP^1LpDytbTB-k2;xQXf<)Z!B<(ZPP{~${Pp# zcf6!Sc+1tFskoRxP3YIHbrlKOoUxqK6xBiku?6vB}} zK(jTjbr8z+SuL)e2(8){RC!Zf1j=+#@>rxfHjjHXj7`rWq>z*7Wo7~vDSi6j7+2(y zLN2p9DOrbmvv6;=)O~gVREs_mRNmYi0&?MDqw3Zu4#lSZB>YCA3{N!x+re}(ky7eeX0ARa+ufj=u=!A z5jP>!Y7-i+CJ@@R`Hk`xXAzRhev=ov{!QpW} zt_6e^ZRN`~0H`i~D2{6@LW8!=Q{H*FcP{QVO1ks&$~!-+52lrO0jLX-Kp<^lXnkD3rOAfhQEcY(%169x#fVj3GWN^Qql9wZw%ai)JTzOYk;n27ri*6~exgAsv zrMFP>s)X{si=3|LV(e;^a5YNcK`_^Ipm2}pz+9dqR4TE6#I=CXqP!N7{5~XGAh{|* z$yGUol(vIZ-VNoTdbFJ+uDEw2?%kB5j5L|B1<)@(PeFH0uKw*axP|y}Q z%6q;B0i~>Wd2f9VA*GFRa7BJEv}&Uv<-LgfHuPw_8(fxFX%_NJoorTssh&wWW{p`Z5TvHtWF^lJ7zCeW}9- z$n*UkZNh_V4k4utd~oeT$ZK;ReI$RTvi|?wJ8r59tbVk(1%MCgfeZ`!^I0i zstms&WnaZMrIIz-nmqSwF`a%8>MHx(VPmiQCq)RBe>tsvyd_3b?Xmvlb(CO5_*W$L zN^Vs$LWKX#0E9j(^1LocfRn2pJ~aBxj?ciMsoOb`z(1!OMcj8B(bqR zFwgCFzkB9gT5?k&kkqUBXz9cLes{*tQ?J!nBW!vP%ya01-LuRJHPS0Rkxax$4teI) zzHTk4*NGxo9wS+H)yp^%kvuo&_?MEadq}Yyy=6e2oaqZsZ)K2oe3DX>`#lBl~(nzR|qPkYg#q2bF)ZhNCTj(T|l>RhK>O z_o83-8_9=k>sZMh_FZ+_NJ{Vl4WYwg6dwB)mW zfn;rrI{xc1E%`#HkzCUdBROQk zr>hRpk}paNQJ-t#@+`YQJrWC9YN@Nqk3>1Wg zy5UJNQ{7N8?Q7q<6~$oBY)VUsVxn2 zl?bm17~Hk#2ro~b-34b_jqBJhBPY0EUBvf55w2I0iB90!Q8~v!k>O5l^i^D5YG8S? zzg%>X#Zy$y@C^owYj(l#1Q)EJVsMRoXU<2!^?BvYZ!3YTNH>D3NH?OdsBTK*s!K$0 zos^8jwfz;Tw}ESfa!$;az;%DlwMhNKfwiav>03`jd*h|aP0(h zHFV6_{#8_-v}3fqZR=l`wnT8jzApyXrGI(&HQ@S!au#)#z*VFh!BvD+^i_m4U#j0< z+!w*MI2VWOl~H&94!Fvd)6iZ5*Hg_VAKQ*aZ7aBn@Cz=h8{5CmGug@E0u3Ms=xa&; zd5<}t0oTsTIislrt{b~dMgcDD8Af=5Yipm!FK10!>0hw!9Dr+CZ~lhS=K~i`pO!ZK zn{a(8+K!D?193HWfAN;5ZUC-bmGkX%30%>$x4lz*&LWeA(&u)uT!65a+cTrn{XYFiQqa{uSX*9q4Tm|*!Ps(fNMA9H1);f^1fMP^4aG8g>#p1 zT0MT9fESjVdoFx+tI1FFby?7kVGE7kp-*wVuT;*Z18|AK8O~4gCLiG1YD);Q zLWs4{uqze81Z*Um@$?MC4GvU0A;7WXe7*T#;)#bp;yf(usU zG5UI`qJIf+?WvrV1LiqCu1yVtiYxTY2(DFqaky@}#MuY9z5+Az0rMOmmt84uOTRDK zzi@hN>M6Kj>>i`9KRj7=8gPA8IX~*jkokKRi;KWQ(4 z%dW)-2UlCrFGOGXR3JuQ|B+nyC~zf|^Rof-9KRjy;(c&%-ByU`3!fsy;QG_sEB*{z zdn@M`$rAdC%pJCRTrJ(d?x>02%J;|NYN`3?2f(!tKEzP*xNzob@);C;g$#3~9dESn zq0o4L_+=Zpi}E$)+|XA7mmQx62iGIf=kb>2IDLJ5z|`A;YhUHS_@ih&r27|6o(ET7 z)<8-0bz3S9*SuCW9k}*WPFt=7E;~LCj=rpsl;FCvG7i^>%(@=|*Z#`6W59gXe;x5sSGYIyRRs?@Fi8uxO(%bCpfN-QqG#@61ax74K6Obw<)+DPQ>9l{`PZ@1g_D_ zc_>u^*Y@eb#bwv(f(zfF#pvtd)Tajm*8$2|TN#fFwsC`s3-)a$Kf(2QR~)XJGe6x0 zxDLd3aAhTM*==e&ekGG8Z}Q@v$CCXXmUbqs;KEmYG5Xs7hbvD4u7i~GL}v+Hc3*pN zaNQHsNpSr-6NhW+r=R==xE$p?-BJSA4TIaiV0{?T7rs!8(bvX34)_~zxyo6Wj>i?< zQ}X9I|4KXF7oD#@A3Og#yW_Iiz~w3DxkL$Ec6=U`b_^LbOFQC2%@}>{|DAg|PE_MV zPE`Vz9iImWmo=&uTwVD%Tur}CaGoFKH-hQ^^@&hD*)Fx z<#c0C5#7J{=d0GReNb@u$M@8k;Cihm4%g;8_kI_+4#DTexE8}pXdu8SjXUM`Nz#%Zy&0ho_q;hx7C<@21j4( zb0$B*^_QABT+7DEKGR{!fsu85|GFh<@);al+Kh#H3a+;jak%yz^$i}6AFiA?@h*z( z_c!$nE-r0|6X3%4?=kJz+x5iNz;y(^kFP9&>&D#R;?kx>0j{^(<8VFM`h`Wn^-bmc zcTWjiHw5q5!D+{JNmEa0$9J3JaHV=j{sg#=RL(nXC2)N|Ve%OqT-uzAc?z!glX194 z9yWP9;5te=Y+o2J1lnzti6UOm9r6JSh(MtF9t*Vj?`Dl zIdj}zJ-#b3brRjc=Yr|uAq>x^Gdyb?51$N0bD98y-DBK#3=c-f%a84N8Nx8uo!|h& z1m%3xQ9=)PKXKbJJYv+K`^YDD3<_bmxXt|%Ficd==AyAN(1YDO+;$9)1@A{`i_f~^ z+G6MHZ^!y%_#}A5C>n1940fMz+c7-p8buHTU2DYjhnh^=O~5c&xkEZjw1r(GS`2SR z-m|6GaZmR~Fbq${VYuRygGU0x(aPPfwFCyc9^7^e>$)NsR9PH`=T=?0FEAXV+#PC5 zV6bbyZO8CDO4UDUiyhnJFuajDf$yJM<$kWe1O__~-*yZe5)lj|GjSLWET6?OeTs5N zw3WbM*L2&C;f-_zL%AD=;pl^=903edmHUNs2@H0uvlya#ebOgm$4P5LByF)vPaKBx z_dMuRU^o`eWU5MFuw&h}W3V<$f?>CoI1D>J^UXEDFip7?-6b&Cv2NQjJd}*IMP)J$ z!;z<)K>rofmHWl!5*X}Qx9u3LO_}Hc{&-@>sAH!c`wL*00e?L;B{0~rZrd?fn;F6I zl|meb{OZd$0K-h>?%7)cgB|NEhOHeZt=*AeNMz$MY-l;1<77&?dv%n+V8^;`$M8(F zKYT3_hvCijLkqw#OS$_rl)zxex^2hsY;B}Z?$;HE;m#u(RscgCyg5~tz+lI^ZO5=a z6TwiGi^EXe{pf4JFk87_?<|4Aj&<9P!P>n^e;Az#FoZl%>{@xo;lMCQxucrmF?f3h z?>>v+bu^&2tic)PudKK893zYifTK6Xp6BBBL*Wr z#E7wm4{>t1Uj zCHw4gJwa7wB^r+`T!X4Cz<+^LG;1*04iyt<8~!&;VOHDanJ`bZ4c{N;XFG(oS`i)u z=v&0fA$ok^0LYz{_@~?bI3O-mZaN>;b^y^9V z#s36i$Jx)leBRA~c&c*0wJm)%nKan~_7=w3h+OG$7H(Wjet^C8eHQ=!h^b0_`B(S( zaTZlM4gW1k(JLcx5*g{AzTd$}|MaV3zkHJFDUKTUt2VZjjN2jDX%EW~I()>^c1EX1#tM<6Z?J|f24 zVEkieY!8U1D|dk#)#4V%*+|h_=(7L%o&qn07@c8W&e$#FJ<9Ax{!7Vz@9b-Q|9#vU_|MUpYLihkD z=-ZJgjo-H;QyRZjuxR#ww&R?i5Apn}SlG7X?1zf$pY-j;O@X%S%Wthd1hpKmVqm1L88}E-7m0|7VY%g~O_pe*Eli zO3BA>Sy`wmQ%`z_n`K%2Hz&POZEvwEk=4T%Mv{o!79PK`-KM3s>Ft+o52`XNk^Xek z%c#n?@&DR%MynD`hioxy=n>L!rsqu2!mHv)V)seN(=)b1D~%i=`i_C^zLD@CKyPAJ z4sXB4@D%>SCC}4jtWmk&E-{6NQ!$g=LbTf>7NXsnun>^-v8xRDMT@{Gr`%z|s9_))8U7WB=adHx zJu`jd=3N#6;&S|dLq${bE%w=D(qs$RTj;Y9xh?eB+D?-nU~l~^V?`mTN`3imyWjO9 zs&ck+&*?7Kwm;X1^iO|0j`UBzDqA~av#{BEdd8LtRRw+a+-wNqwL6YM7aD#JyskHw zfEekYKEz1>^dWBTjLpKa5Ys(Y+kkj}A_Q^Lk#jSExI($-m3n2^FHWWL(*yda4{?6V z6eDuzt;PLVztt=p3-Ki6s(;dFFSPUCnd$w0cGvlU*aYN#Q7vw<&qm%>Tj;Y9Ils?Z zIIK$PSH_91gi43`D!zXdz|`10h;J?iQlm`4os( zrUQsG)A#qio&m(~DEEqF6yg>;L}Y5dg$@ys+d_wEY7JFo>&N5os-P>`ctS7mFb@D?^(MUTh1P*pJ4UDXkS_{Njh>;i}v;(sX|uv6*3 zG9r!dLyR=O4{>X!@D`4R*xYWl4Tvi(#Fc#;KRs|CK)gt~*S1Hs7`Q5buV9ihOYN$> zFB9gC?io1tj_w%9K}RhuifZRGRzy*N8WwS5nd;G5lb3p zRGvI*P0svAHIX;iuFAikFj)BPjh1?>EJSz>CZ_+2T(X#lCRx=U^qQ4@=QU6N1Wl4t zZcAHyv4AI-wv=kJrs=!DoNMqLXD?ebfG5DCAv@(=?-0}NpyuS6s+*Bs}Tye zaMveLB)3RXL9IzQOX+@?{% zg5?e+cVS0zXGSPkbKIrz!KUIKjSrR$?HV8K3-0X^Ih^v}pArgZ?W@~`!s+%JogdDV zA8ZvKPH-R6x!}z7;V$9flyYsAP&gNSv{xvc#66xA3Ws1%k|^5&XGl+_h04%1xllL} zc}C}lgNJo_;bGtY*-D|XJ^oy`P}qfD?+S&@-WU3W!d~egbv>{p`G!V-oxeY89yZwi zo)tOlPrcJA6t;Kz5<+1Y>Rh@F7wSB^3>WHrx(gTTJ9HH;)CF`C zF4To|5iZn4bPq06j;_Ilx|nXkg}Q_;!G*e%?!bk*jIO|ix}0vng}Q<+z=gV!?!SeC z8`-b)2=!gM{TAvfy8IUEYP$Ot>KeNG7V28M`4;MX3NF5dT1ofbLcvY!0s8Lu>DF6# ztLV~Os2|Xsw@^Q%D{rBGL^s|-{g^Jih58BIcMH`@*WE(>ly19)`Wanz3-xol>lW%d zy6P6{7j)At)b(`HEz~dRo?ECqU2_ZdE4t+t>IS;x7V1X2;}+^By5bhK3}- z7V1{I-xjKkuD6A{jc&Jvx}7e!g}Q_8wuQQruC|4`i*B}sx|=Sxg}R6CwS{V@Yi*(K zrCV*G?xRa>q3)+UZJ}1vm9|h1(2cfGYv@8-s0ZmjTPU~+&T7mL(QUTy9;VA|p&p^T zY@ycDRkl!%(oMEdkI_Z8P><6+wonDS#un-cy2TdiNxH-q>M6Rz7V2rb!WQb+bb~F_ zGjxG1)H=Gq7OIo3uZ4P+Zm)%UjxMi-dLGNTlu+yG>RPB5=;m6e4RmoW)Qfa)EmRj> zTMP9P-C7IvGF@5=^$Oit3-u~pSqt?Wy0I4Ow{&4G)PK-@wNTx3T`kn_=(bv@|D?-m zpFv``<=owQIJ=}KCt59vl)sDIFfv{0MqK3b@Lx{em=Bf5SMZ${vTG3vxNWv literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.lpc b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.lpc new file mode 100755 index 0000000..6f17c6f --- /dev/null +++ b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.lpc @@ -0,0 +1,26 @@ +[Device] +Family=ep5m00 +PartType=LFE2M100E +PartName=LFE2M100E-5F900C +SpeedGrade=-5 +Package=FPBGA900 +OperatingCondition=COM +Status=P + +[IP] +VendorName=Lattice Semiconductor Corporation +CoreType=IPCFG +CoreStatus=Demo +CoreName=SGMII/Gb Ethernet PCS +CoreRevision=3.2 +ModuleName=sgmii_gbe_pcs32 +SourceFormat=VHDL +ParameterFileVersion=1.0 +Date=12/10/2009 +Time=15:57:40 + +[Parameters] +RX_CTC=2 +RX_CTC_LOW=16 +RX_CTC_HIGH=32 +EasyConnect=1 diff --git a/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.ngo b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_gbe_pcs32.ngo new file mode 100755 index 0000000000000000000000000000000000000000..c6f8129f5919b2072c30abf57a2330e43a183a2a GIT binary patch literal 378259 zcmb4M30$OQ{a@HsNzJg58DL-r*kgbNW(L@uHLGDy&^>SuMJ;DoU>9_O5!l^XPt;V> zO!7$7tTB)9C^4<*`bRf*D5e=5)>x)!W|*mX|G(eodGCW=>+@Op-M`=W_dL)0zR!Ei z#8hTBvLIZ$fd4x@XT^>T{+rdmySu9^zI$g!JlWP?8(EN3_tXga9m)FcP-sC;-U*{5 zH?Ch7*%S$_TaZ(J@2p@nt=`(O^|S>!$L-4@y=LpWhVAR(+nYA6+qS)7Q!^Yrl%`K6gz>e`2W>Nj5lB4?;(hp-Tq#mRE`|<&(A3c)e`C^QAeevCG1AXzj1v#E`MTCJ= zd%UY>AROPic}sldf}FzIaq8`dUhm$Xfp}kJ)qY7`g@K8v#Uc#m-Goj0r$tz3-qvYhLbLeDM$NY&lQ>%8xq3*`51$iTw5hDkf7p#pMImEdqW8l!u&T#_+Fc<9TG%zqG z3QnCeFjzrHz`$U-=NOA*Cg;u=G?@Mc%?1WDdmv+Aa4;1#Dv2m7M0fvAFt0L}1TD{X zgVGLKG&(t{k@fM_TXt**Z%?kq<5I(#5(;{XZ&uZsFln)_Zl!WXi#xyM$d9Iq!NVxTUR`-FzJXcR@Qsm+Jf&v#( zqxWlKnlu#OM!de6796>T*T*-nfm-4HGW+=M_SS(`uIz>PWfV2R;ncq;*T~`8Fe>v@ ztT2uX@0Iu|94;r{kWeWccH+;n6EcCeuGaWAX7J6J(L2g69Gfw6P+Q@H<3}fPp1e_&`@T9md=G4#exZ zc>AW(QXx`@12&H10Ilpwg|{N!mx{OT!WmjE4)Wct18to=%f#PJ@$f2|m)$fZ&F53C zTS3+GlZFqbDi*qd?j+Ces-I(3*?W81JNkC*>D?di=qd<6Xk9!`P zbF{L&nQj1!yLwZcX^WMyyg6_%ZOu6g-JCv{y6T+TYda6F4Y1KMz?~MYoF(a%_ITUwezbYb7DO-da7gHQvHjpqG)e;nMR0K? z847J8R&@!B3`^IO;|gyDmablC6~8p7a8|~ZE8+-GrHW^p?R+fXMd4YK2gX~qX$35b ziijpN6w6|*l3~H1m5XY8Ptm(UH^lX8@drA=bzXVJ(iyx{K`$Kd+uPn1?`p>o!4)H` zT{NNE4y44jH=4{yucswnU97>Ycsv9iqQgxJYjhhIN_7|(ojoWG!oWju1e4Y|m1{9U z?C|eXnm_h*U+W&6o3wL+qDR3|rAJEAZM{9ax^|1SnPBj4-7{-4iD|$1VFhuAXsPng<{`@DGf;d%(yqdnM*B7iX@)vF3R-a3b=kdfN#uHNqae{Qp20B%x)}38@x&{u!+xGTh zXHlM&*Gh2f#@v;(Q&p5-@ja#_4jyg&Jbu)36<=H(Q_XG5hCB-Va%esUIi1fRcGclE zQTa9Qkg4Z1q2n^Dk6m56dU58_+OC{_bTQHLt2Hp}iQ;16Rc(w}&Bfugw08pT)#}+x zT>tPN0CO>CfhqzpwY)mwg+@s8X~$oKmP_}~V(=i2|5iop0hia$x=GdLTaMq4u|bYr zLUAn|;ar(K1VvO={rT=B?-wY(~GP|a;jYK=8lpl$U2boU=`Fx$>2rGHrLHlvipiz%(3! zH{{q&K!nzEP)A1-XN zQp8(6;bO-wR3;pR+E`njc9RmHq$wfU6MYAzd&FonS-Q&6rHMTVBbX^?%E8bwTLFD458KVwHak1RVQ~hFO`gSo@H5+K0 zkTTFbyUhQzAu_yr{+&=Yu+bV3xARd%(YLiS1-q@Mf1n=$Jn5vW-YeYg4C*xP9!#sW z!H!;$%wJ-vtQQz~?-)}_Eiwu(dRR+P^APXviEoZa5Z`~4R-j4REzTpo+XFV2h~%#r zGO<}qyuUldd*j|=vyAug0j>8E4Sp>-?%zzcm^_K7zI`Duv)Klriz0mcXH6_5QS{E7 z#T4ZfpO&#OImFIsHW`yOFl=IR$ec`;XtjtcE>V1a=D4WD*KKB@Nxt4OlQ#~WJ_P&@cL_10SjQKQwFChadlO zBX&NA(Zycy^(Mh}@orXQY$o&Wov|>P#4mCzOpfV)05zCJsQlAxpeEt!Z(*(*3aRi!2OH&yS&`R81B(bvLf6 zi*O?Nu4yzm;M#EIu!+UUpVN_~1K{KPEb)=akOg1fH6gGTa#G=ry_{4lFsZzMCNPI_ zzqJRm4Yt>|NL#r98$Jhn>i=w3SpD5l5YHs&&H<74uT(f3PR_>DT6@5FifIb3eZp(; zH4|WhEkAA-EGSGr+>!r7bEmnQ%E28In85_Tze*9@0KSKVp zfQ?^Eetyix=c9GSSEN-wy2ur(_^LT0hnRdmW#j-i??(s0@vh@<_YrNa{clW@0=n8)bXPz- z{6DWMl?V{Vnp-s;$z-Q$0s*rofi3;!5SX0%24Ix~ZRyV@oMm{3Bz)_z*%^@weQlLS+YO_4RS`#-8VWCsjOe?00e!=`cR_=K|z=$3we+*yX+ zm40i|S%xN+-sfV6CX`OiIoshe;GEL?U5dcWD1E}~V#rK?<>r+kf9ocs+h4i~F@XFZ zWtS{-2`w$Xd&D^x+I$Eis||qm7mnNcTxR-b!RMUQht(P3dY)tQY_a(5LAzO)YsbH1 zb^%wAw?cM4n&S6P+xdXbpOdun(F=b;qn*zt`HP$c^i<{~KM_f&IcrZvDswN=eD=^Ym;tqRw0h}x(PS2IJX#fwH8OaA+MV?myP^- z_TxzQchA}JFrO9k{<7K4BFx1hKR4kf7l%J_9C1XAt4RJ4EpFCfj;Q>KVOP0G_=7Q5 zxmesg-RSjyR@a|EFc^cJ*hbGQep8)Ca z-P_mJfjcZ;O+aj3BE#HK@8u4J$96p6hKyf#&6tyU>7pTLH+a$oXe>R->ncW*mLBU0Rv2Ac`q7N5HBwu8 z3`d7U35bn8Ej?nwRm@hr8*~)|pQTxiu41%m$y+(DVzi}vc*I#ubXi*YmpE@7a;E}^ z?=NSZ<^88bLl+(+4b^EgU;!R>QP4Kp6A>KTSBxFdF?&<~qxOiT@92XBmdM z|K*gkjElAZ^>HB_Xzd#?Ja`Pj-!sluJdgB0pKuYf_7{g;ge?9gcE(|JaJBLOC*vaI zxO!pEMM!L(b-_lQd_FhnVo7wKaX}}H>6>57gmMf=CKx;xbM{6we>deUBW6!?I5|~L z!~fZ`zypS~`tOX@N(a;p9;0~onDqVL9O&~N6TzoMs&iQ#KNzs;4@kpKVH? z&p!gys;6cY5zC4v`*7cC;RIM&&{kOToyqE*Lsm90ev{Z|%a=~Od)vj+pl}{~HOdS`l5flEwPpki`oB zYFrG{qKP?pKU~j8zNf0CXm~Gn@ker)2u{xU0IIk_f%Fz{=D0O+F_9~7%{6dwG8g53 zPu)N0AsZg#wBWYrjTy4~TldF%dphDxYd7Md=;Gl)FtdzIo-x$@gMbQiSk`~jOC>t% z=2K04dzFI;aVq9!6_N6&tQ;(X&yN|{?Re-Fs!y|i`V>Whw~BBDZY5i-O1za&@m|oX z3B8Yv81w`tSg9&L-)QBE`(NVS3r^WtBRawgcs|8~7NJ98mz-Ax?O<0=4JsZayLaz^(&dMT6(?uQ(GWOE zt%MAe5V%1#)dn(B3fvVk*dapT)f@u@P}Tf|c7#L=8Lnf8YBDP3MgdwBDw===LD2+a zZ}dk)4vvsn^@|jk^s(YRngH`~)d{p-)-vUN1Az$AtNu?KdU|>Uij7$a?t&v!^LX1p z8+^)p_F$?=OYllw_d=NoV9blT6zC^<8V5;M{Y}$RrW}G~k3fq}QvD%vI6Y-x0?^i= z(G?(Ge(k7<6F(WeFQ$yV2zk~2Yt(t_2q^tbier?ZD<7Ey zi$L)zlLH6yqxw}cl{!TTR1o^4!J%XdpRcQJq66ZL;GwJ176&4J=^Y^@SUUmb6>aIz zjDb}P*QsB;kL|tc4!=AMZ37GOt$yCKlRN`i+=@CAM`=Y1klAE)#c- z)nsaU_$#~1h+-`-L`yGY>vS#TS5_G^vAEJ-KW<{7{KZEGO)P*^)@Do@4}^i$++xz= z;QL9lffZqQ{SOYCSV*G$Rbvtn-f=B`q|u~>i2mIpCKd`RJ1%Wvq3r6nqhN7niK7DN z8@b|=#Kh&z4Wv{4rZJr``(OS}!r&DTEMN{S$ThK;;ZVxJ67#A2-Ejje%!yw9c8-aK zq|09$GO>VM`Rf@I3&@qf!8+7lg+&pM+e%{*$R+&SX()37@)j#6CQ`1TPg}{zsb*2o zDuIvczl5w@dM9{)WbrmnKq_=(+DU>ULm!-SlAzX5?u?TJCD&vTD^namAF67!a#t{` zP_V_$r+%I-+ZDtpR54-KXAQ|&JD+);Ys+Q@*V7tt@G)fxOsn5ZS-k*->UV6lB4Xif zG3avNQ4CRWioxkw`2Dn<&(6F#3ce{K^SCK#hkn@a&v+k&0WxZOtxH-b3*0Ot?sSiy+WB2Pr4EeoGAR z0%BL8q%5OIaBCfhUWp_3{!12kA@Qms1_xc`#_00j(V3X|JjaGWobi1$r8**4oSJdU z)D(={`Dm_ZCx?2D>RxXmOnjYo6O73k&xoCmF5Z@gz>5KKZrrZ`+JZx68WX9@8Ec7-0Av>S`OGoW|=3nBq z^9gm)oSl#Smp@6qsbN5~^u<|lwOOb3H^>`w%dcUkCJXpq{-liy)Rv29&`i3(e)*## zRu9O0xj4d_beZ22RL#*)ed%&Wv**WI7Iv@`Dyf8RuVMHtHzj>?>L5EaU7d z3r#xOiFxu!!coR~xBN=YPRuSI6DppM8T9paD=c=8wR(YfI67?5H+i;?Q+|=_!6|T zQZGDM^XJqo^DsUI5Cdlkioq}o^@Azb=D?q z>)`RE<^ehsBTFCJk+00COdb**|%`Dk*d1xTq=2F*6BV=%|#L$=*~yX3-@0 z)$c~lnnbrY!K}F4we6E9$f0a4PZ^pcyQXx`Y)kxW#Hq9x)(RkXnFQ2$;=x01`+=U; z?yk1@=_siFn+&c>xS=WcKOw67C6Q1>SOAa6fOP6AFby0-H%>y}9}v&+Itg+6q2kVI znk&`&p*gE^?{_V>57g z(8V!^RiLuPMHpsIdChK8+J1E0P0FyxvQ17o@dkY$tJ6&ip|ws5&Iiy-yXWkDV7at6Vdn$>rR@%WSa!##U7tvul?LB3Rm1#9XyIkkkYx4oW1dj- zJxm8?MZ+_dfioRI68lF>Z*LTSOs5f;c4D~hbm)^@nL37S;c&gmfxMd)niGM9gR(8- zBq1ty2O$y1K)vbA0sfZWpW`fJw;q^rma${^x%gz)?rL95UzDq@53UMW>E|Z-!cNC!Q64mK8aQdA(C~BfUC`dD>p|1$##n=R7U< zbWFke7@jk$&k7f%y>1S9GG4UAKAaSXVV;*4X?KV9(=Aobs{`L%&2H{_MNu>qa1-;2 z!S~~!n>fsRd|#Y%mD9ecc+gcY!tZ6z9nlPn>MwMc!+l_1%xo?`riie^>|uZ~Yb&e- z1;gU^UdRlKn*0DGr{}{nknjduTW@!=qo==hpsN?3nd6;=z?%_??9d$gfyEF$(69RmtuKwrJROogA4xlTzdc?>9P6hc%0|#Xlh?hat^w67vvRs1((_NA> zFqmz4(7<4_AB!0n%;e+7nwiLTQKJSESvO(efKl^_3>evc{O%$?YlBTHFg;hyN-cik z3r5FqWXLJ5eQmv5aSavqYwJY{zzU1-eaNd>DnI{F_?7~NqP2>n1e(P|CQV{gF=k>B zgJbnf=#MKxL4CrcMle^5n^**E^@NE`L2$A( zE#-Jp{ZDX}dhu0CRuoHuV;tUOo|pzx#*jbpft9S4F%*x8YN&F}sO|zc&czI=Ible1 z!LLEVX+y}!VVI_j#gNQjQ%y;T*R?eLgDEzjs-WgNaup;bw#{;MiB2F#VJp4>bC^Uz zpjFW{2Rln8aQAa&yih1AziWa(0Q~o32KCcJr_*cU=b0sc^F=&?fSFwP$6=`!?~dR= zQ}?$K&8oG%H8~L99qEp@?%5NM;^!Oc{uZ!EVWdgx?Uzy(i;A*j~O^j{Z9chlI=;n-;a-q zi2twM(!fjhg6$Gsz;6C}JQ6E-I;}dAN8m7-H%W-qpFG&lp9u2YDk3PqFT|Q|QW0fV zh~v4@m^;_iTRK(e&>&QcGb%$yBgDnSW*%BtSeP>N5Wlcw(#+!-aAm^GV}pW0Gmq$0 zH=22D|6+?Rf6Sm@R;x)S$TwjN-kCOAM;N-m;xfXa_mqZ!V$K3fteQN|J)N}pB=Ch* zR(p=7Ff?WN6{plxo(j`jM0mpiizaw&=IBf)F=A39;43Yb3{e*~sqrMLFmBdkUz8PD z&4k!=PMR!PM2ERDHmW^s(qf->n^9q#&N4@25}(eP42hgi+<@ZLwTyAbK09U7XKnAP zwOQ2Zeoka>ol2`kgIvo(=zn3GTZtWj{?6sgS<6NnFdPHO3 zO1&E&gQ>0?GP9^x_^&}Q9Rd=-X9CVL_V|CZ&N8C>JVZ`D8SjM_XBk^Dm+LGeXm>dJ zY@o}>r=83inC0&Sjv|i8Cmj=M;D~!%AZu+x14rKP2&)aQ2BLN6preR@jK&;Atobj) zjw0>?7s|t@EsroO%Q&accPk5@nsN5YRQ~K@hg>SY(g?e3{C-wnD$F&ga&VN6dXpVE zW@4L%U*N|{2Y#+CEWiC#v&l;fzWc2IP)6aS8Cu!W=Ct_3n4?Gx{b`r1+5M@6vmMT7 zA7dblt=^~pUz^d7r7KZYBhBZTsZ&Q>%oyTp!icL9Cu%$1W1!wz{?&jjz zg-a)(klo8@0*$LUP;#t^iFjCE*3UtjC5B35C7&X#*&dYk`19+HiYpGP&C>==9J4z~ zFBD%z-nDlRUUn+#og}BbFTN)kZ^i2b%14Wp9a?VC7JZ*aheHLw03qJ&Y~^nPer5#R zY!g@c8H2#(A{(0s{aA8j2v%9PaPr=g{~9p}>{4+yj(Yr`@j9DR0TZ+C!8s+V?p8b? zDSxqoZ@dIP8+8!KA6@wV3`9pDXtEW*cqn!!caX&_jc)iT54Qw&Y(OD_D~TJ+H>*J8 zzhzjlHbctGLEb5>YZ!%mk;xR?hZxi9knX;mc6W!h)PLJN;joVQKRX|&0L}lkqG@Q6t99vXvyLjOI3l*C=nkQ&##;3|d5`@VOJv~2@i)e)x_>GAnO zu>|k)>G@Q|J>Xa8?X|cM>~F}K&rMj|3%+^YP~yW_Mc(;!h>q{Ml##{NIoyv37?KXOf6Jg)PDL09KI z@A#z)pyJ{u@NmM}SUiRncr@cCWt$(*b(6BqPmH=r+2$t`Zc?`Sv6P#XZT{7qo0M(- zjSE`x5xKuixY>#}XIx7XZGPIdCeh}87B#CS_hpZ2($EUr_2cPnZr&d zlx%du1=#yW9DEth4SW|5*qJN zD~PAcu8g@Wh_kBQo$d5z6jVN7Q^9yga+SBwxw+>;?7u~f1Seyzd;U8Jn`7lXxcI*|?JDNs_Rqc3cs|H4T-Caz;RRgW9 z`!);Awt7?oO71JZ2h34 zh>s$K{}ywWF_n`uklE{wpt}5~7H2!)6@I}v6+R>p{+mmAm^QvIaJ1P==SmZPjcD3s zToA*rxU`&Yy&>1x4rA+MBaR~8d-YxGY{nDPqAKUod4R3!V=9(~3X`qw#FOI@%G)|! zG%*%%!8<-I|N{IWTr{PV9HKxQe-GcP8D%tZdJuyPSuyE&}FU8fRMF z+~q9)f*E%?%fE8UUCz<-xv0CG?YTPbE+>5bv+i=j*D+6g z!gpZI)t>O2=XDixYezgZA4o<${tM)A!kazH55@7OG=K;` zJ0e`^f_8j-H7f2!1;0M(D1%wx8TvB@>F?~t$A9I{bKoB_Hz}|QKHuo*mb*8>chb%> z^tAlgjI#{WDfpc1m#qx+YMFde%m9ce5k~(EI6DNyfoD4*GZsiA0C`@H#fCs41AnT; zLBM8~p6F!4YD>2e#VkW+bjJDNSEj#S4<#7*r5mk<3KJwyy4LID3;>jF2slZ2NZC8$ zBw_upFll4`?D}hs7A8_H-8$jm19b=fH*V2JmVuX37A86y_!m<*2E#B}_Enl2!NKo) zLV3v%0UIBsEPij=#zxAE-?4&U$8IhAteuTomK_+eIYFP6HAQV~WU_3)o*@(OYqn`~ z7~W6t%=PemXxX)C8((~^|2?~R4yR@Pqjr6SUHq>xJD;6=aT0tZxJV}OQj3KN2$x|; z!Y zi&`uqfcfwwc`BF~V+Fqs7&#bU1&=lwIT)P<-|94SIL8VeV^1|l7*qw13s6t(x{rr_lq#pYQ8fDUXH2 zQa9NNMm9B+x1{(CXWh?(7HSRoc3fY=q~)kcrg>hylo=l!@EVVO4W#2+V9b(GZ~K z^0a~G3Z4JDZpK#)-Y|!wZ}HNTZ$Z-JzHJZC$e*(?g*H;mziYM6j6Z#1zmDDrO` zG_kN&N)aJQO&1@&2ly5i?ULNwA%He zY|rjN*vY4-@e{cNU3es4K1ChQ9x{8BkJ<3m{F*lijAJtN*aD$M%@C1-QCp~v?&QD$ zjH+iT%G$QQVf(uHrZsW=W?A!&?c3tU-=F_whAQ~U5IiG}x9`!PQqP3K!aZ7Wfdt-| zv?U|>TD@1kiNy|?B-MM8IP`eB;7-9=DLRsy7A!Rc+Yvd2 z?icOSc?=qUp4@D3v4OW@#||n!GXYkXQ4s^EwsF$LB~BbzwI_{P`Qj(VBS(@?$D&F^ z5+~FPRfZ@V!T!={H;3EsPz-!z3zaK#R8KfkE*PS|sFQCNdAb6i7xJ_H+)59>8UvY4 z5(mjBFV!P!#rmMIxMEcQFbJhAl_Qq3@Em!%A?8K+voi)3=>NtHbd-Z3eAN(Gi|C0T z7$%;dpA?)Pjd8Vf+#`QEq2@X-!S=Ku?y>9N+(;Q3sLvzUsA%~?~^#?nNr)%5VP zmMv63Kbxb9>q8t#r+8Htphe7kf~rOx&i`5Bx51Du1xN694eC6o{7H)n6^{KOh_l4& z&bxNW?|t$?itz2D;4jiX#4g^E3E$8ueDRyTJbwg+;SuU(3q7(}$wv}kNta~t3=8#E zzdLASqjNPIn2=eUe!r9hw(b{`u=?#On|z zXJk>r!bFyl0a9yUiN>)IfU^|awHeBGpp1#jWI*lQ!WfGs?lwlKLk+`|w?O#l(T zlaLvisHITu8YzurAHwOVMUB~f6+DwI@+o|E6ik`*u3h4j&0ik2sG+#R{}C=t4e1rW zm}}&~f8k4GMh-ezI17eu#Z>>DFmjN9=jz?x9KPL`hdo z21r%>P)XAwLaQos64H@bga}74r!1{{akctZj69t2=qE8a!NHnReN-BfY?Gvyr#^^Y z^?1f+)mz6QSM?6@H2Z@D{zAFALV_;}ixbQp2vH>xatI-UyqC1OYQ@zbWz{PNZ89bY zNp#vKffXf7Ah4u{ysF+1xSNs?r+74xh*@Pah4O&S9rhKfKiLen88-1f$?8fmQcS+M z9yT=E++a>t2c~Rn-lwd3Zq(?WoJTW84$dQC{UNJ0fdjvI(&80-jLB+m%;-a$%F1)x zQahU5lc+vn&f-YKt@?vgTwa-0`!W^-M8;sP{tW9eju)nLMW=;Hpe{^Um>i^^v*y7T zh)YkSPXa2xYhi$&=jzqxXDm*c({R$lB=XfMD-^W9EM-+CI(wTfTrjI%90F4t7)Yt= zr5PiK<%DvKhCJpnawK8pV*Ra}^%|{Fch$egjU3L#7wAumNvnTFjU0eoH8XAGp#H^s zTEHQG>LpJvPVphANOqb8nAjms?W%tUjV@U1%Z)}3hfLLfM@%fBSM|!IiN(?UY|6w! z(0&z6nGJ%9-xH}A%|KJnQm!%;-Gf#x`@Hy4M$(nL;v#qUwcuVD!%+^|Jsh)JMVMV> zwu3)d1TrIb3*;tlt5#@J*${|#d@9be0*wsBTNxEM2b}z|Ij4@=C8GV`8Mh1g1sRm; z6GvZTM-d1TPPwzEoXm(%yDgHypr}mETCBT7nt26=;73O@#5bTzX9rEr5f#m^JRxM_ zc8NqPKiX(=(1l(gi^|5Bg)P2LTzMF^jTLdECuS{74yZ?GEKIBnm7b){D}xnuTG+Dd zOUEp1G!`?ia#aj`V-f`7Mr$2VW*+jkQJX&8#3-!n8nyd|n~J|?Ec_79S1Lal0NWUn z3ti>D94nXU-OM6Qx*Wov&RDtZ$?6s>m-Fg?*UDvur%zeA$oHosVCwzn{*YLM|6{FB z9H>j*Xg2x4$Y91R5>_sj>&nf{O?NFm!yVW;WK|XO4PErVIAImZ75JiDD<4CQBF68XomLA5VNSJCs|06Rv{_z|GD&z4E1Wd3(1og^MiUFIU7l}F4|r7NnGFGc zRYA;Ti0)TanhgniRb6nMPx>gh1eB!NuA~p2`6+Kz*VdY>a;j6m$ODCSx(^PqdE<&DymtaB1bnW zDg!!=j#Zox)oH#gQ1Qt|0|O9M#8`{sK^#9mK4DB4&loJgV51Rlj+|w zY2?XDV;Lha#Iu*8Rzj%x=h!T2H&xCBqUe4zi)q|2WHQ9)@cn8+X8~Xu-bVLYYV6s| z<0cMU;QOuFkoX;8sFKZsTK>pu}NHZ%p}Chpf?T<;OuW3v6%{= zWff_g5%h~b+o-VH#Wpf~_Z7on;#d@SIka%13UPi``YcRMdB_Uk^>ZyIuS~2p02XT! zyAef~sv}UwMVz9`2^ix@7N?}>xttZq%qMR5N)j%8a;H@oKsi$66%oWI2iy7%;1q>Q z-wrBqImrCIV@eF%NNWsjkX`ha z;23x)ts0Vg(5q4yGU0oJpt4{j@7wuq83Rp23hyI4*%T_b{UX0k3XT#LIYu6tFmjM* z7t~mhKsoG8tKY242!gKF?eMEnFV zwiZ94^abDAcvjcWdR}YJR47#w8zhG$CGjxhdAcpECwere+vp_RD(Ov$f%%BflC~k3JRyC zFLC-*aP*j@#CEc8*@Q}QeJM()6c?CU#f#YT_N~(FP@k_jAT?{bDNyi*3Dpki6f}EP z3Ro9Bpn8Foa#@Eh8?HX(#1bfo4He(V6g{y;Q?M)}WhfDvC5oo_G5CU;A(D2CcBYaS zE}211&MGok)eosY7;Sm8O0m)t5-P=N7B@;t{9IMRt)r@p{?8g$Df<6SN}*u25`Que zalrD`#8is@KR&He@Lv$im6SaCEgexQVkb^#g%?KKH=)`w+EiMh;4#`F|CZ}RD4xfTwn=-2UxXM?oP8oRv{K1#-bW+&heM*kM z)}44pvcGq4AAUwsdkjZh3=}NP5sG3QVpzWE)k!f3n= zOet$VC2?eVYj%FMR?HO+k=jokiXxD!d8iQ{vmF9sDa~OiPBQhOoyhO!=G9Ohm#RH& z`k-oD&>tIhRl|nDCDMt~NpwwJA5ccceL-Pr7XpmR>suhqQpbR93AaxtQ`JcxY7T1fQ)H_(SQzw+}5qX~G531Sq^*hJW+61SwajAaa#`ORFTb3<&T zTUnNI5sFj)sxLGeBN=SrxN>O7S%?hlnr$K&9Gf(9&u&*slBW(88!UV#RF5ZpUV1JrQn6ZfbqlLXTcOgl1) z`?nSML#pR&v<9wA0uoEankE8!|e;y74T zoHS|CKnE`y1xktb+fU5{^tm2AT5GD)>`~5Y#5a0lM6i zbe7=+Ao!w-3~NvDrI527Mn>?3X=fQak$;Tg10!y?jBXtbv9zr-cn< zx@QFs$(1B#@MpG$-dT^_OS>NJ%9D$;L%qPw)Oc z9qst~wU8s}FNYve_g@LY%^3rOFx})eFffqwzcgfE09)VTxhi8%pM>Ho#+s49vR7h4 z#hL)mN=mA7AY*cdH-BjJs&r!Fi+%rPZ%U*s5@J(5V)q69vN>t7vujTm9!u82k^cTV zF0ylw(r1`?Xn5!FP7(q8E=crtsC5b` zcaJ)X*p!`|BU%$RE9Q5lV#Qx+plWwOs>boVU(9lI(#e!KiMom-4Gj7`f5O0^$$?=5gP2`Ctun-ZOUdwzPP6>ZPL&qRSIIRA zl@<@emVB;Rr&;CoS_(MdWeS()>I%%@3atpS-Ba?}fG#I2HwJZDz%VjqU{K@csDVLT zZb%y#j3KtK1@vN5tmKl6uE3%{Go;hZ@!F(;rovt0DnslNm55Dt#UXnwHvScwDBV7) z>ocP}Lpn`V#ElX~pC#Pdsmqywym!E{f@@R`@&~mV!Jx-4&*~N|QQkLDEa>vSIbA^j z|BXQdgC_TCRl+B#%zt7S8d=yY*~T1h$>{o&{w`OMa*G`Fff>>*Tee2x15C+tJW|R& z_jLT#Hz-sQB>$Oa`Da|QdKOBE5fL#w`=k`%@?T>QvRcEc;u|>%&1CZ5O9?8ZNDH#P z3Qei!+(t=3@w5#8lvx3W{P>7Yqf_~n!= zK^+O^{dS0qQ@1v4U$<$?+I4Y6EgF_VHZ^UJuW4-9ykT8@>$(l`RCgC{yL7hp;GD2y zAAT?v0X&DN&E^fbg!?pIW}mWV4fhK2+5{x0uA}74n2UtE8sbO9Djcp z7Wlh2jlK6B+fQp=hnoqz<{-%0-hzR&d41Cck;j1X2eQK}vFCyN!q{C|buvpX`BCnn znV`;NgH*M>HMy_13r`Wm_x9ks1AK!LcXPyDaNoNlx;_!Z07)xARdPSI_dgOg9Fd^9<~Lt~m4=)V7sI_j%0gJO*NUQN%df^q44 zkv*}4qk2K5zWJGQP1^SNC4_8Z>P-HqL2aciQe+8GJu6B%qQZ_D8M5TLwN z3^m(ePzC^BIKj^>vcIRemjs7Y+}SN|n*1b&{9O=S8BY?yOv+saTN#)?zJJUQGA4D= z_u#}OkQlq-_p*zANSvM1QM3@QXv^??T1s^cT0VOSip1+Q_kpC~1z<7aiZ)Cif=A}K z?VvfrBSv4*@`Lu239ii?EG~aw6N(!<4?&UGoOn==bhp)eFn91(+9BJvMy!3d>vAr_ zzMnfI>~tsBvwR3a|Fo?c2h)$rET!kYJ+*P}t7@ND*u0K4m;S}5q|Y*WZHwTgf0X0E z#f!KJA5U>%{#6>0v$jb^!v{ksdm~8MA$a1JlflE1;P|#~*%V&Uf;>G-gSf@J z{$%`h6ekySr8NeaXF~>@?B*R?7v!v{n4uJZ$D1~9+YVtl9W^ws#h*KyAv(ReX>)w_ zj%`hATfl0Csm9veunD1ys=TmR*t~wnCTf(j*rS`*pbAgvu>2bdEfLpIS)1dv_4rN) ztbX1I8EEllc+uRPr0Q#N2*=Lde`AtfSt}os3qDO(P+x_in}2yH332_y&)#}pn?gO_ zEnC+#Y}~OOjHHi14Qsg1?Kocyv&z)gyHAy9tG;!yqkwGo?}(=8JC$Dil_Y zqIYK$q824X^{`QuMnOeyWmHP+4i>*WDe1Z>(k%WD2!d13%aY>r5(covt$kU~Yp&s0|RD>>5` zNK_p;t;)q`(U!j#Rp=GMd6j=op;t=#V%2`7lrJ4r<)T@Ub2WPr{=*ZBxDIGmjV2VT z9-(U|R7wixc}$b7;1*NmU*{C*O7yJ`7 zhb2E8Q)yAz@((3cT8zad6KRE(Gj7R`wA=(Te);$oa;rm+mi#0~)fSZ$-!~4Lnb(PE z{v)PT`3hc#6+g&qg}V`X4GFM^?y1`if>nUMm9C{wAr?B9Ud@ghGczqKkiBl z6{*&kvY5iv;~7;BZ*~3|)tl&gb(^YPC(si65F7>JI@A;Tx9U40CP1k=ox`+%n$RT|h-ys1_tI~96qP?ZW~!$+##<)J$y-o<9@u;^syOQVXu9FdWy$5fhy zh5pp3l41treMgkiw7F^fDGeLr5$;NUaE>ZGZQ}aiS)2p%=*{BnEpHZouj8Y>o)6G3 zw{O;M03{9#P(ldrOTvEBx=rzo&1>T8n>O-f)JIF{6d2`~rZo~p=jS1-Y%fB_*YDW8 zW_#0?&0zW`H61iR-xJVCjQIR~Jxd%f^FN}K7!CQgQ<^fj!}G-rLK&XFc$B|sRFjKe zN!Zq+({y+0j7~G(=0TmNzY}%;Vk`NR&6-^71FsHhwAd(K2U00t>_s1`r^|F!r8O~M z=gU7KrPHi^g`O_oAkGgO!U6L9>VU3~p5=#h_q^iDuWZ!ijCX`V4swYh9L9V8q83dZ zWNDd<*0lMg`1Ynv>$b+%Zo&2ew=)gjua+MVNAjg&4e> ztbMi|*_5Vb#byITb#>w;;F>`Pw*LF@M6gK7~ohBSffJ}h|JT>AOkL)Ryc&&xrp_hcUb#Nfryq5H?AD*b}@ z(Dm7|t8xxqANZ6N%pR&fuI@iCl2_N^S~M$fP{h+%>oGC2r|Gh3^C`R(&A(C*yw3zoEbIs5T_VQ1mLpdByvrB}IVy&@>63S5#>B#kpZ8fMcSQ?(5P6>)GHIbj zdAE!iSrI^xcfCMWbB}?N_k}^DRxNs!cZ~v+;vT~z@47~l7M8`lk(h}EnDV|jVqyW< zyqjiBEQ0f3#>k2giHj2^7LoYYpov8!{%6W7#5QM45qX0-PrQkxK^SJ)KQkjitsk0@ z;OTGP_tK__1bTeV#3Io0`b32=LZE+~FliCOADQyvkK*M0G{>Yx2q(eOyUk-;-Y;5A zEJFA&)wF`Ru;u-6+Q{NjFYocFiNzuJsL3!)pdSgCv;o$uVkiUCjG?%)}yI{~R;1 zh}R3FMplSOJP(eJYKTa@XhI@HBwp?`X%UJ4Oqf_i;+0$z3rKht44YU?;;od4#ZfpH zG_i=+Yl9{h@p@y*#3Ekr&X`z4;+>d@1tdy-J1tne1-q$X`X}QHvs;+Gsmd2Ve?w9&z`I(sC^r@ZN;W)rRW0wRyS35(cQ67h2lkn z`1|Pf+jgwx33yFk2&6RIyW;GvId9ZK z0E^Hf_RHc*UW(T2W0RyvzsJjw(4T-HYweZ>E^FTUVN&bY$GK18J%<30;$D*XfuKTh zH`n`<7M0>a>>L4Qbo^N zyJISa%Dq1tR4J@%-X9F96effB+k{Klp{d@7KuC%h$zvIOa`)N$)hR_5g%{7yn2NB2 z=o?yaD&E_oiU{VNqpBI;^UBRuAlRW{IV$QqNyjIZV zrzcbyV<$8_=6vd`Dq~AdpHV61yu+(fMCB7|aBfU{n?@8_JtJ)CR4GQ^8dE7EwsBac znCBWbLOr9epHO8iwjo!gm}gY;$><-8sWKw=T`f9@d(||d=Xppa=;FAjVpPktf~pbs z*}XMWij4ao-iVqcw?@6oXH^-CD@v&pAu3Y?@J@(#$+RkCIe`|H0z@8d%1~4=u8LTV zXHKDNiO|ui6P^ZoKb%r!OzcA=D#cV5X%u@Pw^cAnY8l~(7FCmpWsR#8@p^YorHIi# zRf?;K=Vh-V_zR!ze*GfV2cB!{^6!J$vH`faKni0@P3tH&+ zPJ%vieZ$(dJQv985n#YKdvo77Wc~6259bZu*)-^^wawubCsDT-l*j`(<@HP}1W?NB z73snYK*{S3DiT1F*PBuZ0Frmkpd=a)EH9Z+B;q7hJRr>)+4{WRSyjeRB4x?|TVB$u zis(K$tWv-xFWIS5jFx0I!X@p_38@r`9F+jrdFQk!6p6kGNi>K{hQ5G8F)MjSfwK)J zbT6U8X4E&L5KO2)S0O~jeKRUW7yVI{qS^VvtYNLFe}6!T zngoV>W0K&=$Qx)@2%)OeK{&60<@?U?e7=NOr(&ctP!=cBVQi>wvi`DfOeZ5(x;rSNdr znY@-b&MP$F*89q^)L6T2jq>cT=LWKlUb6!>-dCv!2a1?if#=2~Yc*3mSCOw~v~v|- zV!WQ)Db*TS*SX^g0hoz9mR@#SU`j~C_J?p{CV_h=2J_ZqgRWE=sl|kk-Qhz%${{aU@u&a8xkN| zb3s(B-neDWN#d!O&Fh)uaT#zE#Kx1yBooBUvu+B1F61*OxW2qqB)cac|`H1H%W z?}BNCVm=o{C9yh8#q(!Wii+apBSs>Cc^BlWGT@PS!H`1H?1F?UA~7Zjad5jZr4TIR zLZ$?N4MgQa{4EGpdttLeu)qr^6@ocjm{tg;aN(>%h=eX0S13_prz#RuOr@CXMZ+ou zT>PvaxWKumct-vW-{Q_8`7rS0wSb>!fTz-968JN#VRh5SrtPP>Z7(U$opXbU`{-ra zF=2$Yz`P%2er;838I>NzSXm7=U2X5m>in=lX9KHqW?vw69kVw-B`e+_Md~?I!uz3F z$X&0pqcZQ$2AO&CLa<5jNa1OX(mZ;6(`Ni))$w@1So=knTJd8qsN+DRRFS`GC3M6$ zo)o$F*a^rNMvqtIct3y`dSCNdVBDLY51caZ(u* z9a1xJa1sVSMY)6^FSs@kTob_Z*ic@M_0jtZ+mIdF846(xmVGh?${$Ka>v&=Adk)ls zh2a%SZQXtG*7kksHwn%N*NYmxr?JUdn%4jG_9gI96xsg?=L4^ZLVC^&hZ+uHI3lAW z4B!#b)p+iB4=5TuAmBBq=%@%I9>ja_Vno!aC{fWJuXR@4HR`U$d&GkgudHXhM+Nr( zebrrE-IH#9MDzLg=Tk}7t5@%R->X;E)m=5+XiD{~6Uj7aEQ?|$=?Nz;|Js6`%Tbp9 zlLWXJmLUtcPRBdgIzkI%qJ})PCv}82WL%t?!ike2VGOooc1$9>bvQ9|9J^%9j%-~w zk)4jMrsFufjbKKpXX_NQs5?5$_r{+7oYlgK-FDv{Bl?iT^2qiMC&rIqQJ!8Aof(4R zUC(x+Rl|w!IKI*ho)ktYd>@`3J`r`r6CmhCmIwODbtsJ@+rcB_wvbM#6@d+Cj#bE3PUa0)m1pa#h6QO)$Jpl}_%-{_J=@C8oQ z4F=OxA(R`D4PXKKf(Zoh=%YGq;Bp;2(`|ttSi}}|6BPu%A!ztvInc{>I>)P2kWQF% z9ht5;G&^dcTf5eVT|g0gO+nMcIP5s7CvHUaDCy2QG2za zyeF4WHXJ2GO~*9+FD!s zR?v5;*Gd>lvh=8jAgX3fPGWM3R$XZv#pL9#$97ZSQ zqeqF@fPkqCeRUHG`{+K^hanD|!Q~Na9pMN^mkw%b1Y?C!-)s|`d&X2WI0}>9TLkLJ zVay~g5eDedZuI@p8_hQ0UaQBS0Z9!`BdayL6pku`OYbW;#5yvtAFhppE<2iKbQ;yl zL1p67he1Q4KK2hDY(uX6TXIPW+*jx*iQ8~Y1?YPF2(zSBdIpym*Z_oK1%!RVT*47X zY~L8QNCz^bTnwPX!-Lj=!LX#G9#&CxK{GgXB%&{KC$l+QcRRpDnN#-)I8}2)E61h( znUtm6+WQClxgBLqV?fd^=8Q244ENVsxy-nNbM>e(y2UMNE1M;@2a4d%7Olm)Q}~(2 z@Et<70#iPV*WFz;9ULZ3!{62cZpiWNHU141x}II_fDrIYWy)Y;}bNuX*7f^+KbQ6vOFy6YvGsXmlfvA$rh86?xJF zy0vC=jVwU4HE?9VvtB}mEw%YV`N1$@-22v`;fok7leiQtzG4XP0@}!mR=Z7XxG~4A znuQ|Of@(;y^qRpv5_aHvePck;+sMeUBfgA)duuV+Nk_2nHL?5(^Yxy<5f&(8U?3S6 zY`q(n#E9%#OqLb}#o|?LJ)Ioc*b3PwvKLpK#Sx)j zP<4A)7=w|X7bh@q+vbj-Ox>u2mUxvtDK5V32YrAxS&Z=-ep$(}RAQda1|g$fMq#Oq z!aNB%ut%MZLyzv#h8m*PcjST=;VMQu=r_AF^W%5Wd{a+9NYIqIru z*6<@Uj+}az9igF+tT6&Q(0O<v7=m<~KJq~HE-A3~mSk?oK_jCeAu0?`sWDI$ zlXOv=J2CTz`!to(x#y2U%Jt%D*bpv%M1PlCi3?tIjpj~y{ zfmxcBD4-9!JZGWl*rn6MTeGF2Ep&}yv_P9~WV=MWnE|Y8(8i@vg3hjE)QQ8Zb0F## z062)&AQ=6Pa;K$~dj#67ERU+f3{#UR@EjUPK`#Ld7k|h^Kpe?71J)FDJGkJ{9I`^K z?Fj=)h9yw~yM$w4&uc~Gt5}#2p+s#>vHTrpB2Z&FvbXz)CdF;1S6x}KK0o{_r#Aq751 z2J`b$*S}&0rKQX`d9lSfdAY$jc_n0=yef-clSOYtjG{LS#>v|$<0Kz8PTtKMC+}s9 zlMiZ*lMmaClY)f0K59@tA>-uJX5-{@3H85a2IY$;PS1g;6Ted&>B0^ zc&A4xKHl(AO5+`l9cT>>v|7-7OCVK0xG!7~V%p_Eu4uf6hJ1^gY_wLUErJ9KA2`Uj zu+2tGGVRiomBu?=$ae|ZXcbILLV|t>ERaOLi)wAO9Mcv+yM8d=`C-sJZS_{#c?IU{ zo3YYnv@>5x+(#W~T1VP^hq|-l;4A41XH|pdd$URE?FM{jAw#~mOw3H1$8F?$hpc?_ z8km-cRQ(WqwM=^#+!k7hX=`or<`$XuzD?d-aFFkVs8O|yjM{TJHx zL)Z~x+LtzYbHhygs?N&CyPe7Rb;d?Rj(p#=+i1{8zVGrj8YGeLhguu0nrY&uT#y;d z9GsEwr#34eZ|El9FA*E9nQ28EzPZG-UsG1Th62-mv&n17GHpZ1#@EQSjWHXoo@tv< zq92T}A+2v`V`O8B(7iKwZM?2HHS>)l)YIwG+C#FQ0bzzGpPJE5LWdJ7wT9Ddt zqBR*OUgBL0hfFwQHKd|oyDW|QwLxkqFWVY?5KiMfP_7^7zG6crjSJOUY5lVu`TC<4 zjlHvA<>Spu9qNLkR7Za}gvOOuTkGz~=9b9gO{*R1MwvFTRn~>8#A^&`Tr^~(RWM(f zXMXZnMMbrSAtO@4F!| zh=bt_V%6R&pv*#RWZL-=3vECYO3C|{CTZ-tA;h$`2`i0XNJ8HC+7%72Ia`!9A+FL6 zz3`3;P}&Ri+iBbsQ(`$gacB62YMzD={a}c^Et$rBnzqpd-#=qk+RoKn_pYdJce$k9{+1r3pA=uWhx_7|z(A>Z~;3iLvdClE$9!U#6LGmZn#H z^6aT7?L(C#W8|MqlCzvcN5BcRBoxtr6Ra;-X#!5L+Quim6Pz8f@(DOWp2O>h2;1wD z5)OWbyW)xMKSWtysvM0wH|q@=941B@`@~mlbu0~A-VRUtNNo;61X?^25w_1B}4w=ruo<-V9{%AA&AiGHV{bStW?$vc~3pSKvM*yi>6Kw84r zzrYY}d}4=xsVV)V%=c~xAjF|e`5?!KucOc{0gCD;1DmwC*PxSo0>&t*YGTA(em{#qI4UooY3f^W`o%<=o-2j z{|-edlDo?u?F^?-kTi}l-VSdJjo3>5#M)<

$iSoLDk6N^AUnS(|Sr4K-fasUM~q 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 literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_pcs_eval.tar b/gbe_ecp2m/ipcores/sgmii_gbe_pcs32/sgmii_pcs_eval.tar new file mode 100644 index 0000000000000000000000000000000000000000..afc70d609219cf7d51e134b4d87cbb1e2fd95e96 GIT binary patch literal 1116160 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ΠZv z;^PhqJ+nf9ZXbH%TZDcC)R{FB=xOE6x0;VJDD*8B0s7?cE_e;0-vsrRqyd~R_)XE~ zL-X+jg}yZ+KGsI&YM=<@pJ zTg}G_6#Djh0ea}fORhlZ&7j_%)RF3f-|TKaG#?XC=sWZg4mPAC!}Av-bRDR7luN9> zrKYW)9=-c4%po4xfp4MOUzMewQ2?@~tw|mV&=q;em z2}_`79cGha2F?3=3OzSlfL7|tzDDSGL7nT8K+lPa*2q2F44U`#6#8y)s1Tdh`z3^a z57fJ5Lxs5pA=88AeLaPqrwCRL9Np1^(C>pf&m*xq1kJaa_w^KdeprBhX+tM$Co?|) zb$*=$dR`04n)me-dV$zqmn@%iEkb_?>H=AReNPJn=Y2hezPCZJ`k|FY(-68I)O+I+ ztM6@r;JmM=(D(TS=oL$6--gg1fqGw10==*Wg7dzfLRZ8D=mWb~=OOgRpxzG>=n8N1 z-HiA36narWfF3z!DE1DSpMbikLIQn%tohKqucy%XY6X8(Fyp(47bEnipe~m6*AKKn zaNgHb=m)C==rg|i>2ZYK3hILqiPaCbKycpIQ|O0m0`#)FyU#}G&p>_1D}i3p0>OD- zPoXPo1ZdBJ@24X4Hc%_;CD4_j=9e|^>nZe7w*Y-~ba@1!8$exJCV^gRYd$pZ>nZdj zVt?)U^yV-^e-7$0Nq=3~8x9Zpk(d}y>#uoVPoW?63s!F&arR>f{ROCxhRm%lYvi4#88q+fDYW4^+({R7AYZB24r*1U z1ez~Rl)lxxucy$uSE$ysxLwPm2BZv1k2AdakcQeNxh2 z7ao6@gJCnld0$VVSGWYLpT7AS@_hX_pspyDSk0FvN?&l^*Hh?~wE}dP*xB6?ItuE_ z1_|`w7E~_Y*Hh@QM}T$)j{FRvzXesgW*lFdD1EDWUr(V8j{xr*GW7$5{tnbtF^Sbf zd^p*R2A@uj4J}c?33-xL(ePxHfykawRGv3!z=+$vS@UQb0lWCkC zpgw1jSk0FvN?&l^*Hh>_;P^*58pLVo~tO_c=tv}p4M=Y2het^oo1Kc892)yI#Z z*4QM_-p1xb^S+)!KVKn0j~VBzMd+VEeZEEleP#=+t_(5S6#50RzkX}_J!FnN2I>ov z{<@GaO_Y9F^S+)!zZfQ8k?e6p6{vue?q#}6`IqoqDKAIYGX3IpZa)D$04a zK(E3-A|kI|pZZdGsdesC4t%l#dHn|J=A?l%_Jp_iT?EypcYDZH?q zxa@-)u0vjppuUsT8|%FIJDEB!;bqCRc@=J{V|G$r?>D6I>V1_hdh3N9k=O5_zAw{j zbBN`m^Af&tk~S~fGi5A4%Bwz=SFg8S-w&}{k=Gxf)+^@qG5<7lKyBl^UWp1}>9t?N z7Y!+|kIGZ@LSESuc?})?#cbsDH>f|$cnvY}ua=bK3L~#yZD!?oe&y2Vk=Gtj zcgc7Ss%7@Ij$Zt$hg7ddQ(iFSxNPLL7u4SZ62BkN%Ko*clG#al{b|Z8KUT98dBs8f zL&mFL8Ox`2^m@LWdj~fnuYI8YE#p;O!SZPxUh9m!_L=f>1h))FUi(3f z%Xk$wv@S3HDMG5(0k4_g58qic6nXsv>OV4GILn*ZT1PMbO+w1+kSVXH=RZ@3ybgeR zutMVZinn!ny&7cs5nk3zQ(mJ+Od5r}{sn6r8LwWg>|YVTfmb_IUbSD(^B}K-U~Mbo zWvONPv`#tl&lOU=pe)6|a6B<=SJySj>kwEwRGF8f+4!q)s#vz^_1m`97G@{q)hU%1 zj=$oobMSUi7MAl7L33UOyXsgzx?Tm_-9lKJyq?qRH|5pYm!cQ)y7s?c#*kMVupTA3 zPBZ28jj#E!FtP+x&x%lvh_%UXOYK zulcjGzlB^6FvA>*o!hS0b;rVC^pB)fqc>ZPWcLuO)gti-6ij zdG!pY`qxMC?`luNM`E+uf%P~EFXLFg<$BqwBL-f*OH+Bh?V9G@iPOPZ?ZMisQsQ5$ z8d*NNUWK2EWt(PwT<2l=QN0v*3NO5VylBGG{>ZBXSaW3U#Ge+HkIt)rf9n#%(&bgd z@}sXyA2rmGuRiannk|4`R=T%r47sAry^s71gM|lI~L_wGv*hw=yrjtQ_U#PW3P3b$-Puw;-=BU>#f|;k8L`Z(2t$ zzUCa|h3`5i&qrgs+HcvbSUs|`!8$}TE)*6J(s>E%p0N7J%7*+WVbc0&dqZ#gD6e6u zeviC*kDH0t9a%?%^(2Ykn~lF()Nd~~wiBng%=DU`w|+J9ItHwsa`SRDn~!dZUcx7v zs9qy1X1wkgbLDr)>sYX!>NDqMdn>@oNH52vHZ-mK3WblCv-~KpQHmL_#UrlnfxNnc zb);9qYqN#r(>lDC2U&iU*BM~O>rpq{i@dsl_4HB+ueu1!r*(L(2(kPqud^D>c%5^^ zpZL^AR(G(T<(BaJ!o~7w9bVPhEI-QYoCY&q%Og7{q4SVpbG>!t>lAJyx^SPC!eMdfRsS~&uF9S7D6UFN(B z_QhE~IxpMTVqc!#xKLQzgz~y1wLT)R9t-TdkylT!mif(j8T;tO`0G%Gz%@Nyc^ey9 zTFUFP`V_r#0%b=IfAoIj^&hZaW|8n(Ud8g!^-B6^HEF*SY-7E z>)3!fue@3lyC9UN*ig zQQEwOHHj#%>uOSYO)mTOtVMR@rGRy!q~A9BxaMENDw;a4!tDkP<$CSZb)~#+NNraw z11p!zy6Q&crGoVaNxPb7xR;&qdqW*f_}7*wD<8sD$}9gYy*;G7rqreCbz|hL&w6}? zysTiIl5Jj&X7$ljFXNmA;RQ(=(&st~-}5m3l-Kl(6kgbVy>Z^RJ&{)~SZ}hK^D-Mp z8#UDQGV+(}B`k$XdEvvm$$sCvQ}C9*eD@%)Jg}Ba+SLM&!tCRI|GiHLOO&Ir50I8) zAzy8d^13CS%IjGF&nvg!TgF-WV7s1ga6T%X_E-n?rG+uKJbyVZ^qp?2D zPW7+e$NFDfa^gPZRS4EQyb@mLMg+WsUi`%Yy`3nS%}mQ*H2*)jH)3Rj6`mS|U3m$S@uy$Wk=Vi@IB_*PI1(|GL+urR9EJ*NKkfPFV6&9Z}a zzQn%@P5izvSi$npi&SS>)vaYlWnLEaYE+;JlWZ@T$^D5N)(_ ze6o^p;ClV$Wnq-pVviZGnm=BC6L~qo`heeDuY&)GIwb02A0Nw`;L-6{fokBO`F&oa z7*EryF~-6uuZO&5yyn&9*CMaJU|mvS&MSYLZlA7KJ|7F~yz=>YkAzWP`QHNLK*BU$ ze}q^V<+ZfbjMuiF)Bi4u(3a>2*ZC7*FH%myLx{ zUXPZU@p|dI$@u(4mJ6)QswBKRoA5f?gjZLSa_nKk>+d=Puc}mD*2hb~xV|kZ$K%2J zxP+H&pO58(+Gu(iuiZ5NN}A)LdL=ziO7#-HJwx?+vLZz<SB6TD2u(Mc~F(Q>r?8)qE!`k4QGfQ3lIVKzp`%--7sqiSYK(W-y2_x(s;G2Oy#xFSRY?A_4|Laiw7gG6T$jwOZ|SZt^@b` z4vZEbf8|HwERgE;df2QSznHU{)W@M?YZy-~-)D6h?NGrc}qzo9$w8V1(Qo)+rmVQ~8WG$=X( zombm9ueV$*jPlxI%InMi^T>ULlfjz&T#(7%lDU}?Ov%NPglUwra{JE7tVjxEIF6lhdC9j zpGkNX{_YX-*2X!7zf=lg+IY3_{jeBDc!`_NtKg(k7EXD6-k72nz7KQi^4sui)(EhE z?l#xU_%)*hFaDJxf=8~?#EpbWc@-U9!QxV0+oLJGtY4KrWqW)M@;VKy+im8&g!y*F z(|8qZjk3HMFEBn=C+Ai0MTDiLyuLB<`)@K1wePW*UNO?H+7yIgm3l` zT`8|Z{;d$o>&J`~Ue+D)C%u~$O%6WD7uy~Z$ zZp{1tGp+ zM|rgirt)fAK51E5Kjd{Dffe+kcjbG@qd zymh^d_rVkWknuh^)yvkQ!Jt>CXezI^);Jo-8JmRp#YrdpgMSLA(Sn-pA>@l6;Q(R}ml6ka(KkE5`bm zSDwl%H!yR`mU+nQa>&hmXJjPDByYlXCl>yBR)7DoN6Al2`43&K-f z-u}qz3dk*po9iW9SLu2Q@8s#ciuyzt9top*8J{^y@cJRj;!$4qsuaC?mnx3ywx5l> z#z1aS%$%2zLt;E(c&AA7`@ARg8pwDteDa@!(Q+*O+Qz~Ouij6j_K(QRv;0(a!>lVI z*HLfIOL!g-^G^7eQ5&s3a=&Ss7ym#r)vI49MX%g`{!bz?^8ADka{GnNc@?QqW}nVW zSPO)3(8f8&F~3%h%d3R63BC9SW+|`!sd^!=HJ_b)1@amTx&0;mqbV=`?4r&qsja2F zlIo~dj{G~Ulvhb=zm3mhdL~Xnx5yd?xyfI}W9_Q(+D9wLq-!6lSJJf);U#W_zt&FV z8rxNOs^44xs@%P-+oQMJpFSVun*g~Z{l*qWm+$@Lv^4YNfv`v?<$bpPl7+zhT6G~IQCH;%qqkPvuZt@qzbouz2hFm_r*dQ(OT4L_` zD44do>vm5LvjST)vVZOUvaO6yag$edEI>@-@|U46-a7g7Qs- z+^dp$VZHL6pfCtRnaXE7Nr$Co5czCFJYqa5pKX{S9+fXi(w27}?otCTvVfu!qAZNd zccR-6M!e7Vy^n{Xe3L;gpYDA^&+GZ2PxXA1ZxZBAQp~;2=F}m$d@e78d?CF5jtf9)|MWQkSNDdpF!grdB6I?#!q} zJ|d2`arrEIsZq)p18m(RVmwX0;|%dM`Tm3AXd6u%C29Fb5NQ~duUCy2Pm?dFQVi=x z#9pY;}Q9iyDSfpk4wtsJ6(4JE+4)Pm)K~}JHJXUpMKTBd)|4TclyBP zDBlf`8>%(;z9f3I@+O7R%9|W!K{JxN3F>{x@uDUY5bsNhN99Wj)4cC=rhrg+&-SuF zT|VK3KQ7-ndJ$3i7THYXOZ2>^U5B!C#vYU}0J#+&bNLEhMgz5tlsJ{IU_(p{qw?kF zu^`P1Dxad8LDRZWmV%A-EF$%wC<)utUp=1 zCDr9CI#Gf}>2ko#QBT)xAeu)5jJsOa8jyQNADqu!Tn zZq!5qB41KG&HJhpF+a`wZnPP~Jeam9V3Z0A2a2XPvUs|D!aC|yzM3ZH`%JrzF19x= zLHTZi+!x&v`R>rpb4>6IRBzPc`|bW{df0-Z#@`2=f>v9CON#dt<9b8f_-yLOKDmLFYyOM`t&%2{SE}zL&$H}g|_0PPH^38S~+OXW+ZjE1I|VM&#lR^Fsnms>tzb!P*UfJ*8?+@iY#SrYd;Y%6I8my*HwKw?OXi=MAek~St~}cc@>Rwe<<^mJfiXW1k&jEN%O||)uFIFVzm##I-j^Lo)B7Ip^DHLJ zx*hU5OU8XkFBr7E@)}=GXnEVWFvujJ#X;rclIrs1LpF=2%a@-Kb>zFh#*m+f$j2q+^1T{n@pSp}J1IO2y{{nMabIu8 z?B`Iv*^rknneR(lF{kC;cc;-?qG)c5dfo?gui}-LOUmV2pDLfQ5;gU{zNzEBJV#^F z6INOuqCH_Xqix0aDBqos=a7v1l1!uWCB3|t)_k9FQKKF$Zu^q>X#*E7sV-m9;t2P& z#6_F!OCJxzQXE{CQhDXDXwNix$%gbMojm}x{(xqJ_W#CV$b zaY?y+$LW0*m#rpS}Czo%TBF59?>i3+1~T^3II4P(H)L zP_5v7M|+rQO?%&?dY3?p4O2l8mz2xLZ@Y8(y3{cYD&K{+RQb+tkhgt-8DqZNhw_CW z?|jLvBD2bCd(y{XDP`(?9m)-1X?dSn+h<$@OzwS;WBF?vmyb)z<-;4YiH*zG(apoK z?YlgjDqj;_$N3Fs{4w-Wly4s7T^c=n?-Q0#=JK@xMumo@BVTfH(8}A^BjzWUuc|?e zr&V4qsV-msp;{J?%a2)3FH|+X&#W0j_KIDx{qw7dE7m0!K>nG_|-sJp< zd`VwUk;}K-$0Xq1$0g&>UopLZdAU#A!aU-MK0fyF)^OzeOyv5-*?_S6&PowKFm2aDuQAxY)OU{papW&6qCcJN@?p0hqE-9DqLqRI$eV>;x z&eZ$v2&Q%&@{2aSAi1{doG(zmg^+i9t$EjxRI%u=IjJ{J>!K|=Z8UX!NQce&9~g>5 z>U~N4w93mR)#WP+*K?_ueD7gFX&aGm;P)Xa-`H&EH9Ugj75rhH>D7MZ9#8HWk&poy z_yfNTkI@}9XIoId`=F=>kB8&$Hu#Z^5H=@J{8TyEch!M?T^%`kx(te+@qx0^MUGaN zD+!e5o$|grI)ZtzU%1x*S6u*SAUb2AQOJlwgh2mFg zp!iikIrnM=_X@C+75AWcqYrl%*!$6#n*fSmZveZ4;=Sd9;b# zYSG>h{wjmwIL&3B4S&VKeg;kV59YAH5$tEyk#q+z%>h3Y|64(h4&weV+Hok1M|g>i zzv{u!#!HUcRN;*pYN5^6=$HbsdG)&HQ z#h6_~pqyDlj=DAC9sx%W4>{^liMt;h$7PeFJILLd-__qOfRQK#sa?}gMdjTl* z^jx1XIQo=>5^K4;n`YPaXHsTXs6v2h(`_+T;XBCOr--A0=pSuF& zXaL$Uz>Tj|_{mWT;+2#`-Vszmw*?%7V~|@~M$QdEWGxt!*O0bkWX zPKBGKyV3>yXE#EROKZuIuLcHMu#EB)ax~VBo~}Tj!7*|)4s93Zx+)BPXVrjX zJY_we{0f5o6BmhjjR*H^Q0)}KUk?3Wih_M$fSkJ)bGg5 zD4QIGN}>OYcy3HRIhuz&<^{nqpXPE8K>zJ#{I zaNkw<0%&F>Id{Js2KESmV^NqKEyDa3l|s%E3prYhd0wM{V+m!p1Z`M?HaJgT z)nkJnATb{uzX1SLB}j-K-3Zh@TbadNaGj(Z&_wEuEEjWJg?;xrgl zH(U>nF#2wLs?swSaIA{qbq+oEEOL1kxg4w`xvXx)Jp$HuDYG?I;8+s?rDG#GSB){N zE5W*frh6VOdfpG#t0>R45pb-<(fe~W-MSiZtPf*9R!-8rwgGaU zrZLwyfa5K!soko`xmW$TyCLVAN^-Oj({03bn@Y)1B!+t}V(r1bK7$;6>Vv*((X;L>BS%|NvmHTj+(*$Hs-W)+BqwUa z=k?HcbuBnPqvyUpmE^sTPInDpoy7xWEBz`mk^oQq=a z(NZY5vXLBpUydyYTKfn++ED|}>;M#u4Uls`mqWq$Y$&+eMUHlcpd2*z1Ra*%&gL9>vR{U``_x+*Lu+ z?F&J{-I#73<+;BS3g!o)U;$jvQLUPsRLQ1DkH*o$a7O9ePBK5+K*kaIneM^9w; z9~!fl4S&VK+1pFb;r%*iZ^Y~qCPz7#U!Mm2A16nO7k3Ld)lzbl>&9Q$hnLWEc{Sk7 z3xcyCNY3G+9nJz|HkcmS{NS`<>>`?{9nTk`#l_hqW^n*_57>v)kRu0%JF39xq;Uc_aGsM*j?TeY=eVKIPn74mm`f?_5?Si(KGbgv$ToBj+B7 z;9ddt-@@eRK?R(P8^L)$<+22sEkQ5%#zoFOgt@;!My^Cd-}=IqX5ojIFjpKN{${Y#a)47B}9%Muf!d%Ug&j)^9dU`tKv{xP(#iw zufjb5&L?TiC+qMR#$J(4&aJ@k6&`S|qmf051mVOHMDdyB zjm&AP8g?k3s+GGrYUa#BedNyOD z(7Phs26~Ju#WP(d)wo}VlKV@+@ehJ!kXPe-z;W0vQU$3-5y7fKe^fg@hdV&+$xpm#cY?c{?{a&IFz z_WD`Oo3xddjOa(q3!ZcW#|n38T@EGlvBPa-F)craO=7kmcV3Tspky8nfp*7Oo>&o5(c8Vh zbi-sQ2}Qy2YeOPtuXoJyY&&7jn^BAj;Mi5i@(d{^d1k#l?W~ibS!FTFGvkJ;q3=S;9JKv=7Srm8v6yOx zh52WPXXA5np#&R22Wb}QvNhISjV3YMzZJgbN+`K4P6mvLm`bDDBxbuV&wMipV`hM3 zJ633#r@EocBxc)oyHqUATT#z16&5qgEYGa7{r6o5CD@odKCe&2RQA=H_sYCNVSA18sId$qZEK6H=?O!b47=oW;yN zCZOwi_2qc^STZ#Lj(dQ_#QL6VwV1?gf86!Q?}3sjHGr3rET+XQ&vu>-xBm$xHzN97 z%$L+ndVLqr+wS>n|M3{pMJ{U-d0Kxoitg^+cXIlRYLpGkdLn^eia3 z0eRl)W<2xVCNbO8Jhk95jESW=vnml&#jYSx;{=`=Uv$5G8I)XKic_rUH)oZx(F$D~2TL+Hm^@%WTqNe1gY%*Cx z!cZ4&(x(J3$Q=IiM3^?cQ?lCwj>#1yjMRl^VkAGnI(Jn#5vEN-*|X}&L==lhr>RQt zVhyLNSiJGb00#c*1;=S#7B+!|mAsBzhT$)Yp-tA7+))oWVXK8@fO3nUI?WALVA)fj z1;=&AnU3o{w>#eX3Fo#eK%MU<^V=jk+1g~VMbU7ITMMFjYm1`cM7I#8Eh2~0-C|fl z0D0l0w-`njAH%6{7M6)olyRXHUe;H9`aM58-9)5lP{NA5*;KysG~ouSK9%S4wzo^s#(6uT3C? zC3wB%62mlJo8w}b#%qfnkMdgMN#TWh)m6G~M_vzr`Yb-uVOoyw)(d&JLOH(gWBJi? z?4&hxqJQCHrrUe&B;~jm)U`OHW6GerO-^dKgr^;xyF@Z$z{G_G@MM?S;r|DX2?oCA>O{zMCjVqu)^fa&+>FTq!TSEhdK1a&&a5 zWnomWSVl@Y=2`qDBQHK1c|8JZrN^9CqAw$P>3ZR9MwYi;AMy5^7$)a+te%$gdM=e$ zQFZLRSeGl1*D_G=wn=yyv}vL~8tZ~qj>bBw>DASsmvx_ZDJ0fM^!pcLzmzI5O!F^8T~4&Cyssd7 zsTsZ$Uf4gL^4?oLkXIF`w>3z3S#|q3ue@53gQi!3fvd*L77^oVR)^)GzBB8Ar? z&-ngtlq0X@pyCkUl$T?G?x$R@5`#7xFSmu^ab80Vx>CJ_@h|1I!k@y++Sl{$W2cNp zUQdELN!Cu7jVFw40_BAdQY7VC0fgC{Uj;bIGssxEhOQ3Qg<|?b7PRDrF0$)GCEij{&07>2RKS$^_pjx~}pU|zoIZD&wpY)-%=|Ga6Lcd@Wtp0HMJAlyDp!QBG ze;xX^%H~6BbCwL+`ivq#pV+wN4uq}&wO2@D^&NH1ht?)m8Fb$0dI9=s+Y?rVejd~u znc#DR&4<3LmZc?v=QL&u(D%msZAR#|pmvuDez%1sPrt0SDQc3QKr1I!3eevLhPFrO z7eGBGED?O3q3Mw~GiH@bn@887@fkzj!#V4&9)!^AKs`XG#lXl>@XSyto2aU>ntDD+KU!Rkl;8d8tYwV>cFU&A0- zZ&I|0aFRTI!TF$-LQfUlY<)(<&j|f8D07ppvvlZ1K>|y*rlHN;j9-^h=&@o$+Iw}k z$q2n3)E(IptCt*RYi0(`X%lF5uSF2tU)SXagnk8b*2~ITZ^D~lHK$FWt;hHT=)6sr zXCw3m$k`&ZTDuX_Ji$3_DtKvBfPQ}HvxgA+Rmj;agI=nqZ@R3t`!|fDHfVZ8FDwd; z&sy@p`Wp^v;>+w=gP|(_AI&%p*KO!2Q?DGpVeI@edyJVA~bo7mP2>*4cds%Z$Qo) zjS}cJRV;b>(A7F^Vl{b6mqYJaetj82zX>@J8T9j&&4*qaVQH!0_y9DAUNh#LP6+)L zB=|S^0fkJ=c z7ogkj>__VLX2{tXFo#aMo0%T;lZrv`?QsEm`o!0ML1=s-V3P#eVVtZ=51O|L#A@=m zIWKG2w75G$zXLgM$)H_~`2T1~&B~g$2^9Kj5&F}z8}C8rEucQ>HW%DsoH|U;YThOg zX!5W;xBAKb`^a6~ccEyfMFKs*&&+PRUYl9X+XM=|LA3h)r56rH==Tu1RswCDL`~0X z-X;*}T)auZtzOZyY7Rob4@JL}NuXbHAD-3g8^m~8z2<5W2w}8eiRLJ~VF=2sC*wj9dNto7rTP z@-Yl5Z{brFsZ>nrQG;b5A;KeQhdRFM$s}cHB zgszo9zu9~@6KS%%yye&A4wi69_bU zUyVa6HIug@^mYs`l|X+KYQELHO`y>DDlUh%uif)DLVtyC=*s5JJ}Ess=&g-nyaF4V zi7))JFbcglDnQ@8=Zh`~{WTQDQ4mu%`_#vhH{EHPLGw0&Lho}6(3YXMj6&#d@ZG>N z3AFaKGJ#JYnzsoQ8s9kNf}h|&_DF=r8n z_|~IrqEdVAyLr&OO`y>DE+vP~9rDa#g#Hd+u?$MA)*eo89yD(gDD**bsBr9}C*DBl z@A3U~S!?!Hgus$5{j%n50)Zy)jB=~*iJ#dPp?6@gOJcS5n1A!2d7D6>$xERLXuJWr z&K2H+&_95^jo%2Z-+<(EU&Lzd24plysF1B`CA8SGM*JNPm*cjb_$v^~=K1?-)YI%}N{ zpL1&+I=f>;8M0A2_%^mcr(x}%NM{$=lWzg(boe}6>(J3&_0s9g2nuvYzL)(W()kta zon`8nwL8D#XhGWuMfu3etliPxQPb(%5*6s&n|WnNq_Z3BUFs#SY}W3ygwEf(DYUTg z6?k4)3%b8O3F-U>_M>I$n6*1Cp|i)$l%;g=9ehq_O4qCvNC#hmJ*H8jj#<0Y5;}YR z20F7vI=?S@5Qmyszk|JNKtji?-DwG(xUtW=t3ps`jk}#4>HGn9Ttde%KGkcMS-aB` zI@$}Qx+~8UJBh(vha8V|{scR&Nn%dNtlen|o&A-D!df7<%B6jO8G&^E0=q?~j#<0Y z5<1!|yG$Lj^aFS0?`_*Ekj~$@B1F;vlNA;&CB>}a&ESEE7$$Fb%x=~mbg{IgW|7q< z5_Iqhr*GHi%tbnTz~0McEG+#J`VjKfwx*jrlc(MiufUPi6#7D43534XojU}f_kz85 zNCItql2~rF8FXfLg0%*1s}ZcebKL46LdU`0CuR06y;Xv)ZvU|ewZthKcW zy$@Fk^GcwxUrKCELz_H=Av`Zj1Sji{ap=vnSKW)y`!P7FCa|)`l|`Bl%^y9b(79y- zbmnWNWNPdmT%{yw;HX2l3mqP`iHAGe$5>hlou~J#=w_D(PbYU)4uCyB!(4D&C50t# zT5vPyj`b`pg)Z<5R*$v+JO`ow#WhwW9*&E!u;fibC*DIPaY;OS9fM1@u(TAquu+Gu z4ulu~Ivk-7g58!avAT03OD=;h3ZM^}LU+??Q|KbGNvYo5a}`1#!Zl%PCD1*T{{>wr zg|<|%v=q8n(XC!>Y5egCY|U_K96K)cV(5BwH|vSDPupZxOQCVyK$ez5JM>-;-K;wP zxPs7aaK*tob7)+)jwMeY`YjhrOQCVaLtd{}*8Fr7LTBPah@}!}{<=!~(7Yw2(EVx! z=+DpF6GiAOTy-(&a#gL2C7o8o}!2O4lzC`UqUKs$ODs zF*cLhmNqo5fyL5N=%H=_`d2u(9HBemnpkBL=)R>adHT@(A}lS1J}DwVkGXpEK!iRL z7Z8m~pa&={dD_sz3y~E1WUl}nD`>wDp^w5fpodkk`4=u<*0dD_spelkl-p}k^%z0EQIAA~*@?6@AB`2gwv zc>5CYD2lD^fC(H?F^a$-+Yq)mlgygIh=3!a#yu`qBW}Sp*Xt6!iV?Tbs~B;MsNATi z5f!5%L{W@@I^q@;G2j*#bigelVnoHb;s2hhuCDHxZY~3S|2$7as=BJ)w@#fpwO8+_ zV*ihsb*ItCqLhj(pbw5)ay{wbhqZZiw~?&p#`s_ zG5$}xMq$A6&Yr91z6o9)@*S1dv?^Y>1zM$J@+#7&D_CAx@v>YgAb8<=#B^Q*Pb-Y? z{$wtA^&{Uu(#p)_rT18AUiMvyS@9}9h*UlWFI-oh&TGJHp_d;j9tvK&ldmGJ2K`_0 z!j0KBUMI9<@_L`<%`WHxUj1m5!E|eNHkfc@=Q#)9iU2T4>{SR$T@!)WTOgaDT`*-H`A>eh&*H6C+UPH-uVZAdi z+}Nv9+9te;k0h0zkk{l=r*eF4`h6YXHH>^0C!BfNuY57=MCP>s3XA_|8M?RIM|o9P z!Ru0QCa?Etef}LEg4b~J)l|9g(jCEVBQHI{FL+(<*ls^F?v@w8YXtc&D|g|g`^K7A zYq`oZ%O)#(kDHEFT*2$A{0w=)ew9vmr2xD}lJCk27hbk9Gs z^pJj2yeO@`64%q<_HrAqI~?p+uc{fV7p?%W0QqjOc9xfA$w%|D^)ZZcv@e{pyqtNR zZ`ZH?X4)^5<3Bdc9}ZqY^38CuUz^LzZ|}ppmt%FOOT3(s`uXNeC^SaQkU-xFpYrtQ1wfT#G1+OsqW@aNVJs)f8SCL-2XFqpd7b$Ux z#csarK11&tYLicY!_%7)T!!yrSM6618unh#teCvgbljcS#Ysg>)W=yJ8NARwUa%D!9vGwgxk>1@Qc;TZZ>GJ9`zGiCsX>9LH@KF=*X7f_{<^Pqu(*0cJ zh3}@Qu!2`(DuWmFe!ze+h2RwIGhV zl5eh?ozUC=w+*k$@)du<>#0mTfotWKF1h#u@WQ7fo^-Jj_}-67NAuEq$hEwd*IL4f za^x>YS^Z=?bVXeG310Y6U%K9-9K-PoF-xDj7e3^d@1kEJl?>~+)UUMjsoam|Z>6b# z%+<9VEmtTDUe7jX@bWcR-aYOZUhy4GK71t0c^<&w+CuvnNw$ynai%-3;;X!hzu<)r zex%C_`gQxDV?O||z41X17kL%yO$(;HEV~JGIcB!o3ZMVyaIzc|_WI~_-Q9Pk4GYfZ zaqSpZ8N_ zszX1TET=vdFNM$lYhKrMDu2Q2<@$_rESTgSKI1NKhsKd_iHm+Y_6zj_7vl-Nw_i89 z3H`d(tfPY0Ynk>Q*VL|g;nv;2Yae_#rqHDvx3!&^s>CJx6K`~8$P0SESMG(a;1ws| z8*vw2n>S9wx6m^5%Oqec$Lq~-LS9RoGI;skYCN>ZZ_k0(zT|tW(}mY&j)xq^9aLoB z+AHcKz744O3SRHDXYyK>n%MF@?%K*7Pri3T&b*xLgk@udsb7}$6{Yv;dVA)f^MwO1qt60x{upDGNWNQ~>`|(6pb_A806q;> z>decso}+n%RMJ9kq`U%N<;h%SIodyIAbH(v=1K7SEYp7ZR<=zDy)YiU4#Y>QT`OCMKxJJ8uYlHF= zyuQlRdt4hGnp%ugwz&t9?@Kqm*XsZ#FUuMamzgX_y_HOtqkS$#mSdf%hl1BPney^| z-SNiSmmdPJgYgM5H+kv#1e2GOyd3&p&h~4%shon>ca@p-k*cqqbM}MabqM*^G&<`& zzO|-)CNF$v)8c2yOP@+r@={^=fA*8|x;?4<1+O0(GkE#F_XMh5{}a3pCExcIF1+;m zm&wafUiLK*Ss(55!;;sXUK_9Vtr@(~|C%-Cm@eRT82Q$FTzKhmg2`*EobUQT+iw?T9HNWIUTH^DdhOb%u_7X6vD@#@U9tG-{`zu4_= z9Ky~$f_$AWcGa@}Wy;HLJKXDITKg`_vFMB@8!xC)`nbdQd*|OvgI@3|C*L0~{b;9o zIVb(Hub)bLpSFG~dFittLht`B%-}V!By>m4#5=+3Nb+s0b}2`_4q(a)Ul><;Hp?+h zHbU=)r^JdldP*xYb9!?yGs(`wmjSGRJBBeMQB= zSu6ImXPafAEP5xXrc{%awR;kk7w7hg%sCns~(SjFc+EuhePYs&L z`%R7^e|HzVY8khi@+#J2K$91~Xl~^y`#JXgGSYrgxe6zE?NFW}uYvO#3uZicA9($P z{5|Sj^h>XsXkNOnqIo%tYt!Z|B(J<$8?T=6OkVk+nzA!n!0TA@?^Nr|%W|#1=B3A` znwM={Zq!FRSIH~a);{{t%BNm%o?y)6vt<1g{G6_j1wuB9)40dyRQa2YYYdXCdWfnY&^BlGoj) z9tvK49pp8+X|DydM}pV!t0gf1h0Xa_0d0|EdR}G z(NE4jf&2qp>Z4=(=rB(6Kc7^1Ca<*pGE!dm+3f^ABbzQS|KP;bljnB_uM^2XxYb!+ z__D4A&zQ%wk70$qPa7-Ba&+o{-CwWL6Y?6G%HW0i*mlu34d8VWK6qQ`!b^|$%yP7^ zEgSs_yG@Yw(SCijl-C1=HeUF&Zic*uH^#dzng(7clYe-p3opG6VDc)~do#Gqq`c@t-4b&suVrM&c45CpGi=DdkNlJ9H(U=DblO8!Wt z3oj@A(tD*?4zBuzZ+k1*nDQ!q(Bvw3jmqrjpgw-xV`Vq+I*t4>w|>rVX8kecW!d{< z^1@f&tsI2B9Cs^lxkZ(g*Pbul+OINA#mFTC;90cvX>qf?NA&>jN6|zP3+P z8g@d@hv;&2YKLaGssa$a$};ude_-j4%ijD2y#7i41KsrAVLW8-`xv|$lL}AsvX9-Q ze(5=V!RwHkjB><$&J+1v>%r@6@*kXZ)~{l{f6~;iv_6frU-mgTX(x1_M(fw(m5RUM zb$F(J`41~U;_T>o;Po%^AJ*W^t7vS6N=Ngua}d0Wb^pbbS6bgk%4<%eN>A`QGLa!K ze<1bDeIq{yuXD&>-r~Y*=S(}X+3nCnWr~9-uc9d_4XuC}_^xmNz zN?Xg4<@iLWjn~B1OkT&g#HyF=243frf1<~kSFzJNjBSi$@Y3TiQ@@J!*vBl#;+}SU ze^M%g7wp$lpT6@RcvX}Cq(Wz2cGjaZ%ktS&EJPIHvk?8J>vg4c!QKg~s6#q-R5 ziOI|I$v?)Ec0!NuO^E8X=7&ds*T2bsW`#>RzFn!(F?ki~ z`*2NOMN8@};Y7Qw-2A`h)s#~HLSFxLsE<`mcO0|#`QUXC`K#ROqf>tZ=X#Bw$;+uf z;n@Fr%Cv`q*SVfdd3{%!ICHxscwJ2XbKLsTx}7!URcsqm%5qGTq3nOzWhnLjX|KwY z;8pEVj^C9ITpz0hugT;;-=!Rjop|XreN$d(Yo(HxeXUgTdZxz4>%vfmy!;pD9C7CK zmEd&=`7bPY)~{mSA2;P?Z!@L5{GXRAJmxBS+2^e#FMa)kkk@3&_Fm5)nY_~01EqdF>rwm#uj?}HYC&V&4?UZw zg4Y$~zt+vJI@tSS8&`vuwo4|jVr>)HPx8{oy9KY>O#Onq7S|2C3cRi)|Mjg|$V;zn zGM>~gCwci=m25OGeZ_#_bz^mAIqr~{diVLtE z)}Q9JZ>{ndyl$z?Qo9YiV}lb6%FLa~j%VOQ;3WjX5GAOx@5 zs+@Qo7P*`Ig;$fmuE~X$!?@PIH^wN(&E>V9%BHkmcVyZL^jDu<-yQvh+-t~xyPKVG zl9!!>)Gxj7nafPJLr(JA(=1^jum6^1$jd(?eqq6(2ZGms$UmdbSzeCg4*MLhB@15GABK!Q2)cYMwJ8sIWSaZ;N zudjCzyzZ^bkk>$}F7Gy}61=V>|I9XLdD+)oWPNnFPl4?BE{Jkea^e3qug0YE7rYv3 zGI{Ng7`f*DbHQsW`R`9U^Kv>5leW$;<)y#TtmLKe`G3tzkNX6#2OaFhGs&OF9r7D^ zT~Gd5Ztb>1Kga*9t<0o;jWzXVle{eRX@b}6Ogn*bM{3qlyMR|M`5$(%6ZSpFvK-U) zJqup;b?{A;qaI%|uaYlFl;fm)8X6ACgKF>_=o!Z2jvJ`>^(2*y=O*JG(CO zP{Hyl3LJo>$zR<`1+OCHO7X5DMFm#@;pa|%cV`6+9qXauFNAAQJr%#!PJyEt-M6}v z0>=;)e^<&OPftU+RY8LvXl2)~r4*fCN&N;1N#uAb zun>9wROA+^2hOafzGrYq-zjYrUD-s%pA@p|sWu9nTSt8-Hp4aK#!f2nv?K3T{O%?X z1(jq6u`IAi&G+%Tk|P! zNe%@{IHWH{6sW1D!0y8JS1AQ9t*60{wd388DulceaW58lmq2Eh!>6W=<4s4%E0E?p zamKr^o&p!Z=W3Co?JMwC2Ni$Q$f*=JP~bm>h|7`~G7_m=3wBe9Q@IEsr%ir-xT{x>6)?>VIZ9^l>5 z21&CjQz3(85H8>GO~M1iML6c|y?@17}yPbUR-Xkga@q_P01JS)(j?Z972 z3N)wq-E*aQhzc$hcncelk9rF1BT`xHp}-<=WRt%e6%@5gbCseYIi4=m_f!PR>HhcO zLuOO#N+kMdQU;}hwH*#2yAAyKy|XEHMJJ2V26n|W%(?Ah5lQ!1A5nU#}8jju_?&>93%5I zWSMN*?C4$gS-S9Iie2hu@f&Fl4YfF=nUk#h^+k$Z0x8W`d6y!OCE8)S8jRRd$zw0& zlP|whr6|-Zb``=s)?)ZcvoNYVv1u^;q){0~9yTm0oG@M`Ken&|Q+~p{jmm3d6KD8I zbLiWyl})1ICrxYY>Q?gSh;Us|jfC-yt&6h(R&j-yE%_cBsZVJ${G>ULJ&g)CsDk~t zy(@kvrLM;6w_W3siy}{>nVUw%t$6i%l0)&YOHNn9=}Ux1YbU)dT@JK)%1U`38II1+Aq@2VDuHX}5PTWYd0Bvn8DDYNP$M z`iU+rT2bXEc)gp-;Dsgd;p6Vu3A}Ei;&%&OcvYlSI-1v=6&61^H1Q9rxBAJh_UO3P zPw+x3t^5S9_oa4PjAZOLWQ!3Gljwia$hC;mE5u0?6N{dD-M@@UqKQ@Is$M zrN_Lu4j8w&;R_#k6^N4`w^H#(<>_>cB(-|7NQ!D%jrX$^-^eof88wBWINV4mwW?9d zZv=#q zM?j-%rJ+l2n)5lJZ$q!D(HR<@DHT0yXbWutjoz7t{&4lNX90RTI(se7(1xi~xp5V^ zW3DxA3EggizPha6FhJi<#h;NgG&+V`o@=e50{U~01^Tq|o}&SM2Ni#gj+kRv>l&4{ zz%4adK%*n81>R@F9SZ?{C;GQ8YUVqmX^V61yER|M70?(JXy_rYUAq^cXJD|CCDnY%&nA*`9~ zmoQD8Yu%s=Xp9aO^c>F<3-3K1(060dh@3lVIL1Vqm20C*WQW#mkbuU}NkezfUGY1h z@4<+w#RYo%iY}4 zXz#GoR|EQ9j1CK(p)q{iVrUFDRa^m$Spp6H#%s@^DaySMlLr;f&_ni1sp#3~TK821 zG={Vqx@O}g#{v3&jC32Fp)nNRVrUGURa^m$5wnIq|Jo;cLbCw_={6VW3s80BFZ*2I z)1cxCXiW8J=wYJ{JQL6lQ1K7s0{yRqik>~R?hp%TjQ%xr_w^4W<=k1A6ex9pKDA}b zq3ccB0vgj@8oF}Yza{|sLCk_xxj>&+yXDY&Xds|5lcAyKFTCVxKtF^Dj%F9=DpOUm z7x*QGinf5pl%IzFd*k~I{V-+%+nu2?!J?vP53L7D0vhv#8v2ig3oi!rY%2c6;|z`2 zoXvuE>YHIUQpFX}n0!lL_QbWE`2N({;P410=gRCH)L6zCMsr%ozA^UGX|qUp>}UP4 zpX+j&rTZgzVK-+6uh&Ac%j>w`+DOHn8G{Eo-nDdvG%wvL%$^sK%7ftbM?90)^3J_) z`T~|Z_fabTz1CS?nDJBTXkNO?XUz-qbSgc;>n}O8V;z&C9E+3VF;kfP7#05si)rl- zsB*OEgXXmr^1_Uvjo06q%TnOAAaV*SU+&{nyfLk2o4j;iL-W!tan|y}+@+OQpi6CL zIlfO#Z69#MHirT^tuFE!9argSUb;7!H80Gfs`R)V1K5_7uJ`?ps(hu#l>5Nz2?}&g zGe@SpY@<|JA1$NLta(`mVS-m)TL!NoEv2{KH+FmQnoEH^uZz5Nch!`arGd|$m!1d^ zyt>O-Qmftvx^@1z;cxDO&!a&1wDwZT%Q9NiyowuCStwpS-*5Gkb3}T~!{Ovy%&?>i zCwO7fIK3PP_NrQUN1r0_YNEjQF80gP(KUIcagcLry7giXl9z5)OkS9YxAEGkF@qPb zp*f&-!&LBkk^(z+xRj&KRvGqQH{OgVdD%I*+xyx!8?T)+=dQ5rf6<&r_}a0jDA2Rh zg_nbVS;nNAm))ibd8O44QI3}JktoMqGW9-?-#Y2d^SK?GPk~+B^xoDM8uHTpEX~U< zLs^b?u9BDT=?Gp}AW7G+z;2a;?wIrjcs-2;lnQ5g8OsJNdvK7vj70~-PnM&-eRprS zu|{JnM=ZId^TM{E3GKU=gV!@ylBsj%Wh@iedC5fvJ1@CJq5Oorj0FzmC**}yA9nLk z$P0@<>AV7-h5_R)`xCqtP@u0{yX{ntdTgZ2(Ozb*dXM!dK}zw$l4b_4e$~e;JaQ3u zJxhUpP0sT2>H1@qqkTT!sE_ux$(5I7Hbls4Kq`Y5w%_b{dfkEG)l7i_h0eS-*RH13 zQCGdUjNApUK`lRz@Yri=jCWu?Y7;WmmXUSUfxXmHL#$1Mca2H!D}G} zydGy>miFH)M@t_{>(^%5d&{sy@WR(8()A0x?mF~8=nmyBqCkO*{n~6^cAF;UWw&Y4 ze(6D?;DzFH;Puj#CvpF4F$IRX=+|cRvh}x(_R-dc$#xrS@3#7grQdX3IF7LK@FNF- z*Yj8!u68a*V@ZoBmt~w_^0KUFF`jIN@;d0E!fOkUWzq0-j8Y~v-N%4XkFs+ zmUiMXQb*XtA* z6W{!D#6BQ}Y04|Dj!Jpi#w&t^m2{-!#^x8|M2bCX#DXW8L#3M_ydy$C8^5g1uOOe z_csx-*4Qfg8ijhdBGu4tofOPZQ2(DR*wwEBPa)nx#1z`S8va!@pcf20g$8*jG_ajQ zL)+OkEFb63&P@jB$hs!zo|I$qTeLjs8FE$YvAvp{_C3fT~P;~B;JcO13Bb*3GjL?200lC|biW1nXEO?f!WJTRsJ|QJoYT)q<1+-d^RjJLV7rtLr%4=w>{% z6j&wj_D)e~?1j?Q7%xMmu3AGQZS1T~@%z8x5SsLI$l8mf>RM?=Ra z`Q7m;+P$`sLK6kv3GkWNO2HW-l@qHebYh$W-w2+kAb%&-QSgd3j#mkemG#C()zG94 zu~F6cwvgGmITSgtjsoo>N7eNds;;77Q$EMLpcM~tv?j!^3)}HvgRj_|6}qTJY>btg z5QD`!xbfQ47Aqrj6Mu8tiDm5wUzXCqJIyucL2|VS-M%BTDf&hY^3lNv z)7$Vg8k-qIca)0FjG-yS@9r$e<0bzUHSC(vNugJ9n|P~`=UvDVHag0Um7%-A-`rRk zx(DyDu`)DM$ZRI$GE;4{4Bc00*=8BKzea4cl-oK(4GGJ(&d>wU4s7cT?o!U^v+D3v zQvdm0c0GtRA8e-Jt}X0(2ztAqf%-o!cw&=k2-{YJyGd6Y^>0R9c~nTE(LiQ79B3=`u&{Rvo0ag4Cn@0P;NYsB(1G}DT#nV8+ft~D{-$MOc z5pr-XyPhe-jlJn0rC7oo-fu@=*23$YvFfEq>@A`MS{x`FNI#}pwP>O{O;uho^tX(DBisq zqR=?P9t5NUphG)Ie6KB}b9M^YQQ)p!~1@~*@ zcb_BV=k*jECsJ936jtR>@F3w@jgYGmGG5Igzr?#Q@oxVPc6|l@Up2sH5xc%=rv5#^ zY~K*O)&O}8B>$Fht&LM?Z9av*7kU4_3V)SSXkCIsu1n!*qTs_h?CLiUOd-4e1jj#8G`O;kU4PY4gm<4-*RyM5J4H@RQE)1! z67Eul$3wy6IDg@;aXk4H-poDIw`K}=tHt|Te%HN~2J~;mJ1)O4X1BxJ zdnw$5a~tkaMg#h`QSjtucI|*TJ5*5c0nT4|#|Au*Ze^TZJ9XemQgCG{yLR?cxMv3i zC$+FEA8F=$DfnY2yLM^C(?G$~%GtGRJ06tg*Tk;ffUp}7P8T72H&D1Y5Iz>30~ z463C8UkcY?NWOOs1uqjJhk*4EFXSS)6f{z}0Pku9`p^Uo2scr%x`9){2Kw-@Itt~s zvuk*g2KZWNa9t_8MwU_J8c5YPM4UvaY9t!*$<+Nu7hukwn;eEUmF0EtNUU>F} z^hd|pHM$A@trUE$kX>Uc@gVeA5pOJHHnxVs;{>yP$|-tBoWk)I4!JMTkItvC*y5S4=knNB9UfUGlk1)ssGx1j&~4J zISBDytYz0BIq>&V{|=GLpNl>Q;++5DC!*QtKHllF3hh0Z>P~?*a z3N90PM*`uq(=NzgEA7SoQzaXZpp!~OU@qTPc(`y zJhtKc4kL90q03W;PJe((et|*w71Qo_ff-{G$<{5tve zYc|tN6q+Hwc;Sr=6l+egiQ|yyz58BhHA6NhRLJfPsgf>K@^_L|L52J_?hvxuQEMJK zno2gdqHx<)$UU4w=DoRe#Tf_*p4k70AESpo4r%88vzi{GlD|;6$21!u{U@g!LT)$z zvAZ`=$)A<1dPc}0r&TzF?0Uwa4b4>YM;$A^O7lNjN;>adb~*KvRaEkO11p9K*-Z|Y zS@Jq$&at`MEv1s*kar9Z@k5SW4wO7{a`zp@ff97YI3&u*Z-ySE!E4wRq+XM}V) zQ1U(Pjl&;TKtt|_%84{x4wQtGFZjiQ5_A|w6oNPW~FM0`0hzchRMr;8z^YA+ML+Qw- zIrc2L{3ZN=Asgt}PiRm!DqWYIlGtzP7JSoeq$fLfF>dl-HFZsN`(u9=a@XGoCx;NR zMJ*J%O=tz{k2tf$2WT)PQC!5yIz9x0L5mSr8r4`1^m#&y;U|Yje5eLPB=+Ncn1@?1 zh%&;-!C0)bjY60m!wq>yoT4Pv{{B?#$>a3 zjc8PH1+RBYop=>B9#9TmZ&P3e#&er3uR@iyDBJ9K?O~VK2l-CC#^k2ZJOEA&2O%3ARHygGx|z+P2XbS>T)yp~hovu2la3@23vAseGUMjhnEHzmm* z%TU(GQJq#lSs(X;Ld&1vwW`vx*>b~0!%hXA6`0COQ+IVt0CQa`I>WHBS7wL(gVS>)FHzF z{T>CrOf!lm^zkV{8~N0n2*G~oYlUV&?hM5Er8a#BcL%~ zsB``K;p3s9xgTH}vCIYfM3kib>0Ha^iG6ih%VtdZ$+AAhtU3Z3Q;r&X>@lGMfc_9O zk!jZ6%yngp1hxu%bD?=4FMk3WGnyLusyCPa4d^yZbe6m1`hr#!J^Nf=*skIV=(V*L z=+hgo9}4J?DDYjo3$$*NHVrNN5)8%Rq`+mLgZ&tq=VNuQyH9(26rew*!1pyS&^(_i ze;QhLC)ii`xz_6%GNQ_Qjfr6mz3R*_&j$1-6!-zw*-^u5QYw1((3-XoIOd%-bWUAQ zHYuM{pu?qd8J#zV&mLOSme3s*Xy3vycK~`N1=i=gc^}ZJD`t zDr-45Q50oa%dr^y3FzOghV-fdBmN8M)fD)hTm*h+`IbY=0iy~1XQ?IE>jJZ90s0FH z{88@$t$RSatT#8;a#U+V|J81RK5${dn}Gh30)G{{K{vj5O~ITh7iir@&mQ{z8iwT`t68vXy#@NX z5nuiZ=x-?4rPBpkkMgpImNP9TbZ(&qdgn2V&>ZKsQ*gUl7ic|T${zZGT9IWV*SsL7 zn~!t6eO?Fjw-n6txIoXUQ_(f_<~EuSntH+l=k-1feM7gyt_SoQ3U+I7fqp2t<{6SPa#J>2T`hD z7rH<{Q?}*M4<%Jx0gX)q8hThobp+5qQLtCD3-kgrdiJ^2HbFpRPlARX_1LgDpns-d z?GE}_19}4m zJ+&^mUbGcut!;vU-o4oZooK7(&hW3;$Klp;E#8W<);2*vV5tn!NYNl<1fX3by4Lv$>&69xsoq~hf zU7+P+)|NqQn;@XEkw!x=Zk^Ew(0@?STjK&PSKPJ?TH6ExUC?NOZk&0|AAtT7n|a6u zS}qH28ML+u0(w}51v=I9W9}gRMZuxk8j^{Xl)Y&^d4k^{_&X5vYebeG-x0qwVT6(-Dm z{aQeG#YQu?9;wr$^yWfq+5#FI)>K)~tG;35Wyb@0I|>$ioCTh?+9v12?a+HvqYGlJ zf~ta%vkFVRN@4;!kT9X=c)ojO$lid?#l|?d(Z|aP66e*X98-UW1b>>4a}$@Q`}6+L@sleHY$mn1FF*LBl*7SPx+ zs&ifRaqI~|??}PDb6lW5ZrO5ZOTGR)3 z*W~R?!F^g?a=qGQuFKjEE!E6vIrU3BGs;Ff?yhE9MFsT14VGLFSp8jpK=;OJm!wOs*QGWu*G@KEcdi69 zc8e>4&+%-S`tfIg?nA*tD_o#E;+fF)T)V5;k4-ABfIeI|A9Fkpt-I_NK=-BK;ck7i zpS&u%7P!4~xvH75kCfvJXzYAfxt>?;op>9j;xQo|Jfg`Z*FT$e(+%2P&3-Y>k$^r5 zMpm8->pQP{@7>yK0o{*+N0zxj%e}J9eACbyO&AU*ZMdc_p|zUL@$CI^-F!grj?MjU zYS!7zu>8}|n_JeuB}GL1BcP8dG;=-2bNo?N+;a8D*#Wm)|K6#hXAk{nzKYAxymwj& ze2(X}%7-2V^Z*L}qr*kua&sgnp`o4B%t7GBW=oDMa*ZPn8hY_L-{Hcyyn#6R;L?2H zXaq;)pN8H{f#VnxHuvLjLo zI$jE%(CQ)yJ$TiUu$RA-gp+aAn>D2*bT4&|=kSu)GC&WZ;7JK*XdH3L%(Wd_=Gp-o z2VzuQk?WJ2ExBG>bLS<1F2DhqHW%m~4ytE|cFi@;+t{Eh<0kYRPu_X2{|xA%IDb>= z0=;8{imnB|xmv$dhl(q5J*mY4{nNSv7~8yIINsx;^*H~dqGu1CZx=X@38@M<$1}g@ z8q6x?4ae!BYL{H^;!xI`o9kWM6>X7goI=vje}#_w3(zAdc!os)Uxw5BZtj`Ls&dR}#S=_zLb+DE~E zRk%P8OemqbLCbpWl11dS_s@YPQp+ePIMK+h1E9bf2U07Ii9OeUvUkf zgE#@`b%EX^uA*z`&9!E}go-Q58Yc-=t}%J}**kXuIz+*XT-s}#KvdDQhb~H~xT35l zYm+jsn#yyJ19TYY7u`%su~|XfprwX8jJa_f(gt0V$k@w{TTIW$-|0ngh*0p7G}~gH zEz$Ed;9%@!*Ha11YkWc>$^Y4p_p)1m>?iiJhqe9+k>HGJ`fXJMUJETf_;|$5i&Ah( zhg~E7&v@x7EqGngmca|R_Js1Unh0JcxVfRzg_rK4X?b1Pu4Iw5yl^>$iYs_sU6;WN z^4f25@p$lxQ83Zw!b?x+uL~IJa>9ILS7#p`{)$#8in)TDHmS4bFX>n z5mxr{(t}DNuc-|gydbZGm%el)c;;ZT#xpXO!bnw`8XV=uvLT1_Ue<(&uL zQJw;?QVQPS!YgFsVARK0rG;yjyuwu~uHc1J*XiX5JMqnk%O`=?UKG43t-op3M?I;k z<)vpkvo1%A*%iESQapp#YoVqI7e57FqbYc6jdMAMwly!^5(!?ndop<8R^f|odHOK$ z+M9yYE1h}a*twFsme*F)$FLq?30^ZWPM6a_=2^nvos@j6Vk~%#q2Qfm&b;g^l!ks~ z+Amz+Qg7k!Ztp|-K#JgXSLT_j;9V{A&)k=nFUL}_zS)JBUV_x}ve`7D_k4}f=JDFi z-agJO&yd%^o^@kam%IgD<0yEKi++Vm@-29Vy!1+~()-QlrI%@iyzb9D;|N~8Uiiln z@Y;uh_a&U=<;Y8~rDo4dFQf`yxceeqzkCg~xu*~430`sBjZy2uOOLY5a>V5q78%NN z#AO*)KllEG9^DIGxT_?c7xaFj=byZ)vo8f7a?^V!yPDY!;ewLnX7R#xDJq=c)tG5l zVJG%jHUb;Y^2Sr}k+e>?X;<~6wkfaBDHSShRgTKd|FfUFyyTg14kviwzKV2t;Wq6h zlaJ@c*8Omwg^Rq5I{^$lsrSY$1%{tdj`B7H<>$_8OeKfmpWyXGro0Nyt$6r_ytUvp z0e8eyx#*XkozwENm94?6Yn-w8w@G>78X6hO;DwvF(&aU9hs5>XD|&<1{?iy8V;hy9;Dw3!40%nDk2~`>Y(vXC5O*PHymm+wEE|3cc$HD`IdbL|T98!v1D;{;^|m+WAj@&FHQXlZz(ndafyx*P=3upTSFS+cM=9s!3VHNqLnuD?cGG+$ED?&C-qBjSYbc5t9%8SHJspuOT3hy;Ds-!WR&CUb@z_AdI#`2jDoMH zT;!z}(lsyp61C)In=deU+2;!+FTHI=@Omqh$?L70^QSj`30{X&@C`Tnb$Ff1pUKOz z8f(f6S6o@bNnW@h%jze2t&J-`!E0Hjo$%*+KUn(jU%~4L+>YeN%c-B!yFsO`dD;6u zq8!uuK2pDqH2Di&%QMFv!PfSr>qB3IS2+cjmpYdtE-15bFzlB@`xvs1DW!gela{zr z??WdjFIgXPvs1c$4V)fddCrEH!0Sld{8Zt>%eL8i6ZZZXQw}UcDKB}S3lm{KDX(K| z6)_>N4?8k=1wUvx?%?}ZgV#|M{LtgV%SpfNx+L^IO_!v+^wPY^E2MXn2wu3;Ekj=O z8p|90BJesIcfM7-@Y4Myq;1Gcw{eUodD-M@$jdH6DKEWpB6zLLEXRWHN*`YK;S%sV z2KU>!m7{LYG%wwjn7nY|q$(fwlk(D==Gjm3+S#kZ30|qT40#pgwN4rIk5S$;)$g(_*GH&R}@eKC3Anlu$q^Ey6X`3YWMQUrpMe3j;i(9)~G>p0vuSm?|PSJ+wb z3|_iUnY_}@XUO_EzTFbnC`Y|0D0qFFpDC~W&}X~8dNX)cQ1DwfyK3WL@Y<)`iYLp_ zeu6^s+Diqq*olcLvLa9PN4|%W-qZk9xgZ@cN}WgIDn9w8_CN)Cnk8M z&5237s`r8jUVmiTRm=knEjy$JyiTUzA8vNlfmg_B{>wi1@j6bf#1vlBWUEiYRgHRR<`j!yClt%zHBg>cS4z1YiC2!E4F%J?{grQ*ooKOMS$}#ws1n%QmMk%29>k|2NG`uc-=N zJsL9P723YB^{J{;!Rs^%ZQt%JFZ;Mq+Am98XAZI)H+Mc--$5aG?UZTnLp!$YTzN3` zHScr^?c`=xo%%U;UCNG^z6V9{%Fom<@Or-fxqR?CgF^Xk_0ee_U~72kOHu@{UYYF> zcx`vgj&Fe1nYhp1&3>Ki&@bE?UQ-fE7nxVdN98%WScjREPvLV*?*3ENTim+zr@*9(u5~L;q}5b zDn*e|@aYAsO_99{DN>4?b7z4OMMgK^sisJ7CA-Fy;vot*l(K6q-i^h(NCmt0@la%3 zJB9D7V^=(ZryOxbynQ<;5a`{CVwcsD`d;lAR?gnEkX-^}k0ApF%vgJ*cy zbzqVrXJK39951`d5V8z+{eBT=*Fmj#8jK4yBe<_Py0VFaOFQ}9aW#0#jPET(Dw?Ro z17_cdG*76c$O+iGacB;QJSm?dGqLjUn_zuP1>p;=`1*oKrLu}5mAK?{7s!|*r{OuZ zm4ZDx*mXMipYEkdmvVNU(S#>~O)zEbIt%YE&8J{6$*!|K6!~X64j?7ibxtWB!YyzD z{ahfN3!i^g^1JFrioRZM+>Rc(Fkjq`E^k1OT-YgZK<_5-E&}U+r;OX*BNrD^urGC6^#+_=*{a!HaRm(&^8wni?Ei~F=AQ%X7Hlv+IKH6Pr-uFD$n)Ievv?7E@` zPZ@<1;@uTqid!5?n zMJm^YC~{p6g|8Dlr&d#BYMdh1iyU2_#9z2%b!s!Gc>_|Z?V!jsV%IcqnFcPkadzDZ z^c!o93s)mI7m6=dgwJW@cXg1+w|4 zP~Krgk-Jie+eVSQYuSbGLWIU4e~0F?YbJO$A>I3u?7BanM*Lce|3#V&We5$qJs@)Q zKpjG*DEzR<(X0-N%t}(^ArHrUsEQ&D9tzLyWY@zjc)(zG2fH4LBLzseQAnvVL6OFC ziagrL?;h<$+)@fZR>iKzf&4fjj|q0oX+_+8D*AUbyPoKz=%@H5#-(NKn#VpZxOZQ$ zZi-XnCA_;#pwGv!F7!Y`3zk1@r8`*YWUp(xSocqHlJP3!u1SX z(^}Zo4A%nWc8+j87ox~>ITU=*%kLJJQRG%gex`W0r~>&wj-SurcZ=KbG*WnO6}w)j z#Dlmm3T7`RDU$Spbt}Jn2_bLlr0_f;rB}QZdAWlkuU7E8SKIM4Q}{{2^VK?vyk1C= z7V)kH?^^I~zTnb=cW>g|Th$zIDIR>)A^dbByWVP~$lGy>EE9QOR*S#dDZC)W?^+Xh z$|J>6O;ioR$jUsSy@QCuk!$4zPU0>n(5oJS`Odp_N_VcHl{ZVJEx3tHc97t83V` z7P4O3h~rdM?E1bz+~OYjQpn{y;Qdfdk)9$)9Z0jIg(5$8aLD!Lc)Z|~&#s?Z@gQzT zExUg1z>}oNFDZ6yD8+-6ekx_xufY4Y5#mF~tB3|y*N6@k?)@IRYqfbh`if(R7f|fq zfNnj{!XzAKy85vIb?}k4zQ!=PCn;} zR)h>e=~c*rubo0}H|yl@JQS-2&!<($!RN*ucy_&N(5sCUJ0CpfGfnPw4jo?V5VFgt zx>s=T_xTXmJQZ@t(3C^SoM*m#s)J(Zm9q&j(hN>(Rw0AFlqt_|cAdGJVxwxq?yf_5i+!cDS1oC++FF5 z6vd+LYz$SJ8=cU%o3;Bpvk=k)vsh<@4EA?I?>e*N;cALS%3xf}RLFu(hrD@$CRK&m0n^8LX{x z2$>VEyB(GNrw(r9RY+0Q_@W&OIB7sie#>VgVuX_h zCw6fwMLtZbaKa?T(4B)>QsIPgjr~y123Ca=W;?c53!82;ToM&E##Oy3uEL2XG4^8{ zH;aa!Y(irfgUekh6;2rb*q$htMHTFae8@&Qc2PM+ZX+X{Y_?;ih1_%-;be1N@@oe- z*+w{hOFX(1DxBzkl>E@hT@V${yoDVd1H(_6SH5)~Cf4xNH_W5MqT<$-a(;2MJ-SJT zpX|`ZHb7Qql`B8dag42R=gy2-xOurcApYv0=W--FjbDTqF9k^&&<&`%JI@W-gpGO{)HorAs1fp zgi2@I@Y=Uir6+hjU+5&S>#$84yw0KEvFOP-%4@%E%uBDhiE_lKPVcF|e8xEgK<8Wx zN7BTk?x(=mP-P2Zk~fkY)rkFtpHOXC-ISj=Nr17ViYuToOw`azPuwm9=<_gUO4ub~ zLLbzsqHh{nS_C`vaWyKgfc{ON{F~$Hy`*6!pwGup&f@}oLZynHJ@hFRDlS9wKvw5^ z;^iaX1~mGu@wD%_h`@*091@r~DcP7Jx z$VDoQuT^|bvZ$8L(-}=xzma9^XJ2?5S{yO4r0^s22j z!IZ?=o-Kzyr&Pri(3lm_l9)yBehlb;Q!s)dkri4UM2(zlD}=3=gwBf4iS-SNPTx76 z34y{C=v+j>+%!6-BxL`EbCkVK$UY6n6_UVQhAxC_X5P30&==!Q&>XuYOlaB3+A`>i z@;M&=1T-dbG<1)Po-P9PWZY6;>H>Xnp^UsGxz?)8&^+^_p$AVJ0MEQjDDY8@3-si~ zmP2dZ5xE{yYk@w|H)&Tu19pnn1^WAj&4ZTxB@V0Wzm}MQ#@v+7^*if+hy(gk3SZvg z0)0u6ljGl})yxT6OH4rTZ!PN~%?DivXv~scnbxZ^)l93(rlJ4i75of}(&}m20{Y+v zGuQK~o4=mD1kjgJ_^L{mTu-UBCh271_7E1%shPo^dchUv= ziW(Jt)46tnzQU{G3TVs{YUo`*+y6vBUxCTPDi`QaT2=H-L(48bhvjfm;8!)PxD3tX z1Pxs}w{RAqucYvQ+|*2t98{7{0+&t7f4mAtL(7o}`-@y(XVvhpN8j!P^i`PbEO*H@ z!W+L$=h{i&Q=tX&C!jHDs&id_-r1diPGBz8tu?zosiJ2OeS=rU70|VD3-ql^4*U$z zS7WNyO~Y}5$@pateWR_c!#A`mXmlxVnjL-<(AQ9S8rcPIHl(`u$PCc*bDRxek-@?JjiWRKm8Sqq8UI)KyvN9F@2{ z0y}W=kiQCcUlYU-ZdLHg3b*TzSFI+^fbn{q4Pi;Q{kV` zo&SQnAxCdP z!jH7O(2?te+m4R5V}cIW>$P+~x^gPdZQe=YN1@J+HA^mVZaX^KjtM%C7h33~E}z%{ zIx{Hzc$o{G=WK(Mt?!)5RVB`zpo2XFS~?{y&%XpZ|HW1Ux5Cn$$?Pk-Q`cQ*Ptd_u z1cMIdz#eZ}0lSiiS~a)UE**1*U~wDggnvxOebgw|*Hk!ZfnTU(H~$1Q_BLqf#V;Ii zAfWG}a8teu^ovOm7yo1r{fbw`70}o^p`rJfdg@hxz8gC#((H+u>sQ-V^z5NuwRfTB zdo9q%fBFoMmF}VN{50EPLbq%Mbc-Dt8$Wce`wx2R9YD{-evlRyfiG2=-U5NY)uz-&d|Z&1-0dh1P(T=?cRg(McC=9qnqg=-$U z2Xq>+lgDc>1e4B(Nsh|DZA7O*B!+*OPVnh6MF*y5#hUlIw+_5a`1W(n+cQupLppRI>GCGxvRyxOyBRQ z%5m=%u;F}&!tc59(rZszUV3>fdwHcyyC8VA$-OC7UbuW`L;c{R!0TZOf7t9IFKv`H zFFlK#J+IYdE5}db8RZCGR}At`0Ag+I4ZYW^Y1#AA>)E0lv4t*O@4;*1Zg;&4UX2vS2EeqwW1sP;IoL&O z)+{YAJtdz#FFidhczuysjyU9VzGvj!;PoiBV^_NHa*~&=E*RTW>@sw>6M7L|@cPD+ zAun8V^XE}5zkt_c6#n}E7q1g4ZTj_XD1#UDer0uE6jR>g6#h1?y*Kq<&u{B;+?x9M zm7*o>J+_Oc>le!LvR5j2AUOxyN%LLG(Z<2hd%dYa=@)j+S13UCb1%nlI#oDPj@X=< z&MUmGrPs1^Uj(lwuzA(v!t0WxN=M6Ua>C+g=$Bpv-88Rn(HhC0;I%$e?{VnPKVe_q zu`w5iC*1T)4+S+ZJsx8Y+&=OibcLsQ@fioJpKKpTrIerGg(Dp4^1|g6+kf_T2)yRu zh=&_5J^7<~jcrhAYhI&meq4@xn#3AT^3vPN1TP#kN$2GmQ1@-kr^r%X6Aq%3xs>B9 zQ|_9V9^GqRdWD1iBrp5OQ1a4S-~_KfIx=_-r0RvOBPN2^lNA1=)P;SrPoo( zYi*kf$GrGROL{p*x_D=Nuwf7InveHx?c?_iDjm&BZv$WsQt$PK2+d2^J@%8l^nM@a z6?C{9C6XH&arn*WgV)nIqLgqc#~ZwvyzFg`xm{ z^5A*k^$bP2H@ooC{UxMrl%p;S#*@6Xz0|z4E@@tRY#?~`XmaA!+`9f&@LE8T9<5pM z`i@kdH_dA`lvn;VFTLg~c=Zfr^4h6z>9_@GukxOy$WApbyqxsjsXk`vz2e0GYhE3; zb|{kHkjX2*`leI&t^luQisUC$&n}kTIx^GiUB!Ou%dHr_oOR zrTDZ+wfOYBniij)@DkcLtSU?KH4IDa3h^zXNJ0HpYM-sbZv*YK4S4&yi*G||ruei- zwfOX8tQMc1B^BcHXI9>!`-I#pZ(_Gm^M8i;7E@#ox5_JzfiOi~dF>TiR$hC!t=B$V ze`pipOT&$GrPLzT;`_BtiCK$JPpz}~N{}4g*JTk5lyaeCihq0WCTm=QpOuDZHVY zUH3Q9@OyBq_P08A&1%3?Z5%0%K9~|miseD!=tFUe&Q=G7qm6A8ZNyPJaZot=cs)fQ zMY`x!A(c5zcoN3Z;OJa0MW5)P0cQ)mc^y=^bE$DqIQk?Gwl;Md2Zf_gg(&(|4)q%g zk>S8=9Sw@3Mfz7IyPn3u&)3zl;pl>ViawLVA>w>~_pC=88xF7OWLLA7q91iou$$nr zFiFvcb;cp$=%RLtE^0Oo5l5d#$i)abfvs`$g)%%I<4AGz#RNrPET?EvpeK<^5~&>A zz#*5!@t}+_w+PqEVEr;$&4hUON-ITQX}~_fGJf}J3Qv=9h&cLsLL4F zvlbe3RVBYm6;k16HO8U(=qj*Yl|$jrMgCToQuG%u4U#hZvJ-KdjHCI{uMzjFRvI)_ z9%lO^z9IB0? zf7G+QKi(lt&c zU7?Xbu>?!DYe$`j_K4%gCEZ|0y2WwGnA0pFJl$KdI99{1?v3#2z#(Jtu1APUdZ5JS zd->fCh_?gciQ~p4J9(&NN1$WX3Ga4HQb|vA(Uv9IwKKTvTx%RRF3E4AlKcb?3U~0k zU4gJGbOP%(>?)^{UeL(pB9-2CRMNYW!e*ui? zA}$$FK_vr#IWWZU2G-)KFb)xy3@)XT!Gx!s-+9aMKyJskv1@2Oo+_Lm>}1z)a2f8! z=u{w#Kq@0D&^K=2cOwh&pnTE8=Xh}{DQu(Y1;XVEQHd|dI5u3eH}bG|CEk~E$T2_| z1B8xRc8zVt(_kDME*S^cxCXp0 zvu<2UF=}F!Rp|H2sS!K+c3&Pka|*?}C!xw!D&)O&4rzA1dP9$UDAuimtB4UYva1~4 z+0*Q@NBe&-K*&5%4jB|Y~UL$OnuDf+F)2Z(AKg zcKInZas@&{o?n6<2!Ph)-zBo3F z=9xow!Q_VXvEi13fBHil8%85tp!IE>!G$_|2~~{A33#hAu#qjlb+yPXsG*q!*n%!%ub$ zV=3h0elQT>WY@9et9tG}NjtCtfr&0BIwx87v2@{tpuGV z6u!f)5axO}586o*PZp}U0@`-I@RA-wgMfY+ebfqjA()bQDx{)s8%gM_2%SLVqSf)? z5&4gS&MWAmm)Yrufnkn@-fQ~A7C^sB;r~>+Kuc?^ zlFSZzVUpwVPe5brr=e?G+8zb;YZT3GbAeveE+cPAuC*#NwEcYHZVPxoo%cFL^W31H z_ij0~)*X@SF}0Rl_x-Ca2yZOh^_M?r{sAX?J zzfI8{Q!dai+bo=Wy_Rh{!)WMNTG`D%0gZ9EuGiBJ-yU!CmQl2)i%BuMA{>3w0(XLb zHO2Ax$I$kpjiWF8c>$o`q3F&@mt4!95l7!NwCq)>a8ls1_r-o9*O+V3x!&QXXAb~0 z`e?g&U7+7=;HdoDG_+H$--6MQKLKq!+IRy!v>4FKDY|RI1$t?dik?06GE+|kG-ir) zu2&Ds=>_N&6z!FAfqo~x<M3`j^GT~Dv#sdJ@eijd=-kp`q4V*G4SY=G1B&*;M2NMoZx)su zQgQTcBORSRL8q?DLg(0%*Y5~AA5ye`+=b3(olJ#)+0&6DMip1;jvW26pP)0{T3GvE zbHWv%(?-z&Zo0F|tc2T!jvTg|bZkc(|MD*G2|6E9bda0we9bY%Z`;uMhE#e&I(J$N ztNp|u_XM4fDLU9qciQt+^ld{&PLyz(f{yKI<52?&o&cRsC_2PVchUp>I&x0Uq%)H& z75%H9ho1mCpHXzATO-j?w{7Xj$v~6NedfFa8i}HrKVAbmpHsBZO*(Sck)vm?%5wHf z#g%qP+cBZawxf-oHaznX=%gs>t8ytUIbEuf%&yIHqNDAYpfd~E#Ioi2;%MWHaWA|I zI;$w^cax5s=iPR6v>g+4Y)2cPX+GHpI;$yKT0gdS|-6i*beENle{)VEl1{dhAaTPs#=x)_2u7JkMpN8J0t?*Akw^MY_92aO) zCAJ{f-5YJtSXk81-o)>t0R1gROVbR!DexX46+Qc0?_kfh?X=wPkqhqy^csrpm2}DV zPFqpdJ0=xvA@Bv(LFa(guXDHhJBscdcY)s7RF&*=o!?}G#;U6p_~FU!484}3V;Wqb zcQwl^d+1%utt!(xapR|9-q2nJVyd%}Gu@#9e{i%Fa@sFv0N;bSj zo^(jqNJ37(-iZFoFUbdU7WS?ezkWbKB1QgjqxFBuujFG5`qgnh*r&UmP`_R+2ps;e zA5-m@gbOA5Cw-2OSMqg+8iy{8m%P|d*i(K5ivFGFA^9iuSKX{0z5giX|2UQs`6m+A zkg${V>)CLMtc!kSS0?JxuVeHJ>vqT28?BaTe>FwOE(DHl?PNbDe+1h6l2D3-?XHhk zPGO=h_hZL-R}<}vjuO9qLg3h@j{TD0qlBF{zXHkUg5~bX>WFpQZT!KYSmTx9QQZj`OY_Hcxm^{Q4Pz6RSHJudPif z?foC{EBWSH-lT|DmXMTxq~FBL`e z&wL8WyV^W(*?95mS1Gr5;#WH#;^UQk*_$}NRA^$NJtgb(yefe_2|fCCM$5nalDrtS ze4uWXS`j#-uw%bcF3Q@*OTwNKw%h!Yu%%R4=YBcb^tc~8&Wow29HcJ8e?wrBxf8#V zS8PeY{(YX1Fss^s`t{E-+3x(+N&d;P;oE15U%w+TrL+B*e6HN)*FU~{>U<9g z`TUn(Dd%=IuKM>e7E9=<@$z?&e-b#m@$2tz>mh#qfxuLwlkrOSug$NNV??z_za&&F z(Vmj2{iwpgQe}F)lGh^itIxmB_u|*xp|7Lj*B%5)|8;j4|J`<_j)Ok#|Fd7ob9-{U zUJoaHrC3=+f902o-}|RufimMG zXKR!A^)~`#`4&0hS3*a9CdX@tFCpi6b&#hPm>YR$ z+FF^uC0+cU+sS^EaOQ-aq+eT_Q)F?!k}uX1en|*pn-6V%rNoWUFA2WyTE0%zifs^= zyCJZkqWw@N5>6x{Gu1uj>%_yqlw7&OkpF+2+72+Q{dZSWySmZ=72%mGJ3us4v}ik7 zm6EkTjP`H&w>{?TNIYk|x?xp!WXjJ?JYPp*UK4r}J~m*#47O2|l*#F=%lSGF6@M>R zw&~pwSX}nMIehKE&Hwwu*Z$Y1^WhuSkQf5)N)BIgNI6s`YN(QT_Q~N(-g5Kk8{E}= zoucty%bU&g9tbS`$Aw#$kG^&%NS&|qzjgHWYCAI2uyj6rhjcJ}$stV+Uw0W;{g)g* zBt*Ok_N^{A_0j1i=6z!SNI1zI9M+P5ti?Au16e!Dby3z%lR&pZcxF}ffaA^<*g}mW zk-MG)7FDl*(b`kSIt{_GW`r`M^40AgPd-r*gev)Dz=`4zf?rF>{vDO^)$P=RA!>EI zK%`8SecyzTS5hw8q9E1!YuT|@Rn{V@ACqJ7zDUg<>)}7TL1G7_B?Na#ERM``q|-*! zVl+B!Btw<`Y|`t?G0j0mWvVoXWL&8VF;6bc5_r2ZzJ`@rf+l!i1@hG{K=3z-3b-MR z{P8ih^}GCFsYyPD@!0*N3i+e$$Pd@6vON*xpD5`VCl#r!KYgNQLVjVD+WJdq43N*+ zErNeZ*!@XjWq4SX{T&mn26$hO$X0<#Y>usy)CtvkK{v5EyaM^JHL9)dV)HPG%8dBb zRu8)@sZ%eSO=>Hx2)jRtX9^C4n*5Z7B(i)&5Cr{;s@cjCWf~ z0%OD5QW6+b-j9f z!Tu4r&ZrbgOl=)d1lO4@@{jEuC>AD_z%{W-l?^C_E7BzY%xcRl7N&^yr{@G1%{=zML4P5(Gznru{w5t|8cDVY9X9mZ`n*mqR^l2i0r7N1fp5b8At)uL6&H3tj)a^&1v6JK+%AYc|P87ZzZ z$i=myB3VbTgLPb2P_HD&#k^!CLH~OCq80(WCnLT>9~Wx6SH2xHYm{e&hG<3O>)90) zw#L`9WB(4WhyPkhEE*M4n!}}qcO?<%Q1)nqc(qy1TZcEPvXSMYC8xilDz!CA(u@u* zgYB4z+B!tEj>v%RxD2&58ln}0t(f&jSBaMVJ5kjOej=L3g<<}LElARv?Su@Nd(+C8 z3ek$m*)6QB$YVg;2V&)7mYrF_q$-^_rQ-Kh;*?I6QgQz(RZ1sEseA#I9HrBtRGxuK zhtdg9DnCIbKPR0kFU(gh2b_NR%Yaaa+?w>GjbuihY~9@asj)xl^MD4oh1F~l^MBU z-lI*a3vN9o>*^V0%9r^WT}vqHA+t45}+NtIpFfV|CRuno4WtxIFb zZLq^OjO|@k3(sW0IjKdJEfqhe6v8=~RxX#cLfJFUvwf;;nS76?m5HQAZ7uh~Ijda$ z(U(fGFgph4c@b4sDc?rhrgD=Of;ioRS| z4CghK$Tn(~=1K$3>mtaWz_OK1aDHEl>?5jG+4bV*7q!UgL9cHR3!fLk_BTDdu>?8$ z$dUYASZUtmLyp-%4$9Ql&48^%j_p5u+>+H>`;|*M{j9D-j!DM4nPs;~Ql_m4Io3L* zd26ZIt4Ge>CbhLHjGTiCk+Z*{wr(>cXFpk`bs$@~tpz!mHL&feP-VAE9ap1lMby?E zQRM6;5(~%dPHDNDe5VI-D_V@4oEqe0b8EGMoFR4bRJVdPCb3=JEmvFjN8pAT!N;R&Ykei$>2hTvp^>unfLM{0+H|68fgJDdG&_P1(U*-i zaCev1w;D>bwgK*La@DfUuC^YOEmKiEwY6YVJ&eDBg1c)}nS9q(Dqq1Sv)X#NMexMYB+qJ=OxX=5B$Sc^YadLEoPdX^DPHW{pav4Zcdv z%}sD^i($xuTBW%~t`1)+N5K>9-xD$Tt}8*olWgHh`Gq;ZNy;*m=F@igm&)(oOB|(G zG4kd%q%2dY)-6pgh!-?BBUk@AJuh)zvJP&+)(T~1YY8kr$li{a)Yi)pnOLF%Ig=XI z)@vpht7K2#$o96$Rz)GQN?TRg>#}vWyqYR)P+JYMRTPe=P#3&mX9{)J_0_6O5_tm~ zV@PHYsifkps&ZBKcA4Z8iIuCRc@(@O-?5)dq;-zOyJc{dH_KL~Dtk}1#y7|oH5+9s zM~=@)g{tiRGB|h2aX5*7ejrHF^{s53Rv%AESNT*bB|T?#gDR8bFYr(#zK$=Kn!Kttz7{bTlzc|g zR;ydBgyvV_4m8uhD1Q4YgvK|^4O>G()7_C~Ps4)wqFJbJ?Gl>#Z3($4t*0HdZR;|G zPLR{{pT4+e?!=}JTJQ1G*-yTKP;s5Qm5gg1bXHqBaEi_D=REaEPti0G{G%#i^Rl`Q zY<9b5#i%TVj+egw9!+SbqXSLT?p>E(h|qCzD*Y|d_fC?LGsk}S7D5NhiM6jiZnKkQ zRpU)}% zzgBhNr^!gaQT!}`x*3maX02#DmanWOh9q{UvlM$LLKd+gI9%Wq+?Lf0%L%4T7LUU@=4RFGyTr$Q- zKE-C=qx{4FMo9f=n(YZqc~SIl%|1Ir?>!-!W_81z(45y%-+Px^K5`>eCj0%swo$sI zvICnqGj!dV2%T4|ZtxQ}m)JYd?Df)~n=A;;j;aR(3C-%_4m8t`A76ATLbDoCuwQvx zGkb)NHE2KbJ#SBo-6EP9>On+YbHKvZ4s51968Uy4LNg8Z03%`3+R-TWul`ZeSFQ+1qelIP~cA3%v{{jD52kR znQIZ66hnbw#BC1PmfS~4KYL9$?)23N$t`<BhC;_Lp|_HXzoaU-;;itK3@0v z7KBbMMuDB*BRT3iSp)t@yfX@+F>-{2%HuXWSp$CBn|^sn9hOllNc6pvHQ;aG|0g+z zjF!F!>*6*$Sp)uw)9(CMGy!>371zxBt1!{`l-1&UOslrZdH#?R(KILg?05}$%O{V9 z5gJv40)J6Lv*R`3KfcQ4MQCIz3i3-5es=eD(7NgM9sZ9+Q~K^Jjcb~ZZ96{A`?r1H zdtJIM|8sRFBjWny$8QM~Y?-OVJC95IUk!J&H?c=CmEjDVp8w)m8Gl zd4!=J;UzRP!yUBVt=qeQ9fHu|W4q zhmy$|UBCPY9owj0fFxv78`S0T2)Qczj-HEN{6)w;t?Fe+Trd7QWL~+N7$PoEIzh)%#CN(Rc{S6{(iR%r0UwVX4pi!^(rG_FWR8=CdhHpEs~JE z)<~I*pB%69$1xB>=;TuMawDO~*BhZz0cL({6%qx!g>epnwWHLC~qiMn5kWrR*?K|xNFlBr)kKG+VGh|fb4 zvZ1$$WjXsuyTgj&ditSrXl$i=@En&7jTS4tLuKp>TNARo?378}gT)Hl(2s>f`d)=?zW{zqRN?X+6ECh-Gh#H7hOk*UcoCnT&xL(xX9( zR5Mb2Vr^UXNri)3%c`V$x`<^5cT~OLnT&STN; z_kFpiiOJpwPHyhlOL^j+sGc+oa>)4F9-LO!h%=N^2KPzLv14cg5M& zDPE3Ww#6HCPH#)j zl8%4Zz2FEjxfg=ds=Hva?GV%*FD*;)a^A$yVPdjBg44UQd)|=I(tq4NGa6G&9^C(! zo5keb2+ol6<$vz@o9&Owb0aAxr|o;bj;^oZx6qEbzyX<~3 zxetOf-YPF}WXt=Sk=P zvzPC-_wsx>CF$4!If&BhOU@RP`y*IZ-UXBIwKqAZGR0(ITkbPr@&E+q$T{vmd)e6D zypG8@6gT{#6e)wbI`7Z<0PG;J%5h)ElQOX|De<)`gUR-~RUzrAhRr(!Y(!HVK8 znEb50$xFj2UT%5xuZ?2Tj^HJAT`>81dy|*dq?r8fsypSEKm8yCFB7x>`8&R&y~)cn zQcUi9)13KYav*|BE4yIwOSIcP%gR$swiaiq-7^Tm%Uil)QqJ4@k3VOXsprd=8$CH< zaxj9+%e!E5XM2-Zl%{xjxcz#$7)f^^C@+Zr`&c%&H@TuA#bjRb_@J0{BDkWc3nss6 zZ}O_b6qB%=GU2BTTvAcf$ zTTJF6cwJc+O#V>a&gAux6q7@D&pBL7dJtUM*aed=wbcUE5ir~$@E|~nOwVlaZ z>?tNMExue`ZHT$*>Mof4*=T1{Vy=>xS)suZZ%;j6ZYX-TLQDn_ysf1RCR^L@ae3{T^zyVDewraBg9zSH(gl;h zwcq2>q7;)SA6NN>m@Gi>&R7>r{@#9%udYoodH8M5T`49*2ud_a$7iCBzTl-n7 zFoJhibiw4`CGAY!Qh-R{arX;%Den_CLi#n zc)54g+cK3<`XLCeujzu9Y4z<)Zm3Q%x!O|LhXAN|fg()3saABlC+bo-|Zx@r9sInlJM)28o_ zv}^jY=9H%QoA%~*Y5GtJ@hs}3>16d}um5Y)$x|46{dn8CMHY#zUo_(pY5Fh;=lI9B zwr#*W>a~8J{{PEt6y)oT^j zo7~sl@X=0b`UnJ{uy-=x@-8L*mu$NIVb=M+PL7yry8R53o7PQvTbe!+!6*OmrD^N+ zgAM=dO>by7;Q5!f{ea4V$7V+D(zG06Pc?SZ>otj%`92YB>Rli3q}!_L_LEySTy^q&()7^?K2z6m)A2Vvs`;)ropf6@ zts*#+y}sw!xuc}%V-S4K+;P(qrTM?!>j!ERbyd?UBsAIdXVp7A()2h4pReqs=_g`| z>Rs=3ZQCKrrX?0O*>uawU2bXmSP7Bstk?IndEWJ=*HtInX44XQn{2vnc$&H!Iu5}X zYdY!mT6>~;*PBkd&88(fIN9{lKKooKO&>2o!zG%7oKX+lH;Xc$i`(|+>i6yjth?0 zry2k9OIDBGzU1fL;@3$CzT48teoUT|l71zBle)eipKMb7QGd#>;0LAu@+)VP`Q!!t zV&c~XS>da;6TjMh_u|J_@;jCAOGWUrG5Md8spB36$uo|U>Ek|m@>G6>CN!C#;w2@U z=zk;8Q_?!c(&)V2>bLS_ozh8nrliCusASD#)PYLKOvWmtq;5)-f=b}YjTw)6%or-n)b-g zsYD`(%|DCcDUm8JL9Mwppe^!4CBN#_I2DtVOpQ~qJjv9!&?rejyH)eZJCsa~ zQ!z*Ws5zb*r(%`-t0m>&-WsJTF;4!qh4Iul6&saIjZ?7-{$p`v+hQ#>_J#kwR@<5Y}{f3rEB8mD4wlBsbjCMTI1r($`Msc|X>D480kVuzBc zaVq90nHr~JAd;zZD*8dC#wFuvR5Gzn(p6E*$s}DB?VL=~RZ-H(BwZC^*Wj{#Tl}^%CQ7kG+ zSEqxj*b5@7*RK>j|lS5U!TrxRS#n~m3LsfiUGC5Sm^(B)-RXkuaIaI|F zCX+)|{9!UVRK+bOlS5U!V=_5Z#YrZULsfibGC5SmWhRqDRXk@hIaI}gCX+)|{HRI} zO~&7-G}&Z?j!L0T#^I=>S)D$tB2<&BA~g*mXu_JbhS27$?(*Rb+B9eON^_C)0;jBy=);SVd4L(}z{$buxWeMQkV2 zhgGDvs}%8sqR{+ixMs*HUY+baO^Z11hQC)S6_pyHRXa#7o(x0mn- zt9>ASuT^ym<-$XK%?~b*YjzUG@7i;yTvjU0Lf$FJFHk38{NJVbxhbwGhd+P6hRO@y zc!+pv7{9CL<6E@mFkVZG&HOu!4m5l0iEaNpuBkrMZ({!KRUK${|MZiJm$hc7D6ZK_ z82^tGhyJcL3u+UZ9f$Gf-f?0qu8Fv2Ct;|+MDD*-YmO;YpAxv$Nf_!&mDkE6MKzw` z(zs?PVW>Yf-OE;0C~91@lQ7h!8;+K^6lJq5z_ODt)JN){lLtLY^N9X4E4l$ z4tc$yG)L7WG&>GMeQwd7OY5E_#Yg@qj+XSOlQ2~GVK2*LQq`lPMBmLFhoO$KIMcM|k(KIGY?@v6M2}K} zOMBc`I52)J9nqN3%!ziO*?rx%RT7S*T0g=_Xm%WiI)3+?@*G=f9$uc%lm~${X;6#5uak$b%I1mH>QlZ)L%s?pY^J0ar8oY5KF>0e;MAPZba$lL zb8_>U@?1mN9AB8w>^KeT3Fm=d8JvSX4XqpZST^c_t9@nC3h|R2y(;~*t{PGKJb85Z% zlp~~*w1_W{zK~}bl^PM(>?AGX!Qn2sNmYKHjksp^t?AGX%bMy> zwC1E(T(gt3h&vB^`Yx?GF)>P=q($`E&@C^n>5JRU?l>(Xd)y1}Xw5U*`rdI`gt_Su zd5@rabVgKts_*+(9gR|tcgrTo+Z&~MdR<&IJKA>CrR<~bgFg5ye$<`DV@Ygwk`{5r z`qB(-^E4xFGiyhOX%SPGeUzy+Pc2Spt_ZgsAt`BP$L&7mO|3cKu0GX~yu9t4oRZkp z|CD-@ymMAPn#W^FX?C1eHn;G%#aeT2nfg?k7bHh1*?Paz*F72keV@Z4L}{KE>A=sv zV@>1ZXNL2e5;o=J7eCjf_}S;QZ_kL2{Q2gD=Dd#j-uvJK$K0eeRBBm5^OEFvCjG?E zuQr~pHP7P_qWoN9@1XTw-G-auS3$F*37gf$9cZS%zrwa$+nm)H*X$&%?8V|;=fpL+ z|E2W-3tKy|nRe#H+hbaDCXW!&%(iwkNXC%!|9d>US1ft6m$rFM zbwab_w6d>?zU-+rXEY=r8E+EO<|AT*ik7TDFMZiXI;!XxY5- zxE|9Tv}{&!T*gNRl*wa*xQq`DD3kOC^(o&qK0csK(i_yLw87K{E%S36m7Yp%h|3ba zV`_tz1sc_-=<%_FmIceyr`TgEf|d<0YLitfQb*r#S{6Ot_-ok+ma6`$)B!CULp^DO zsRLRzwo-j6|Dx=QnTXI-q6a)CXm~BSg^~R~47>7FsbREk%8b zFHGCevXhG9GR{GzWfPE)y~Y}Qj8? z&99b~(4NS6i>PJO=(DQ3!>lCA-t=PiDKg$JYFQ~uyQvK+LS_T)n`9=kH+_`J#}X}trG`MYlI zKxF=*tqefspSskH%)cV6k%`Q|t4S7EOid&!EZwy)S+MkoP?il#S|iB@OS+kq14}R6 zh8>pPcFGQdrB4NEAT0f~SA$^buiG6A%ig+%1D1WX%n8fB^{nB7<$zL>0m}f8+^}R; zk%quxZ6)Qxl3h&lz+$T*d10{=OnI;zq-8^48RVnT2aBVcln;xc_5857ONaqjhBT0Z zuy}NF0W98H%0jRVEhG(tB|l0kge9o;4u++mg0kVTgc?aBU@6q?j)djlI?6`DG9p4c z1eQ_tq|va1wO$yOF_n~!fn{tHX)G*gFl2g^y?gJWTtpglMamQz|-dOR$rm63{JIWvQF z0xT07NaJCN=rK4EmdO>AodnC2M$!aWriMu;!!lj>_Y_!W6jLU1ot&ffPK9NrkFwKX znWa5A9hUPbGMxd-`K81&VVSGjoe0bP63QmQvY?3+fu&r_Cc`2@qzIqa<#5I6P9Zul+A*rO8Yz; zmg|}*I}euYOGss~+}J`oAC{ZVq&cuu>l$-mxuu4(d9bX~rSoCAO?$ckmfP!DdI2nV z+DYZGM9WDFVOgy$FM{Q+BFZj=Wo?vn5iEDNk`}{qkM743SZcJri($FX&e954?$`D% zfn|LIWtYOTAxydqmW>sprLff2k}ijZms=*&GFTq2rffMZkHkoou)L`4T>(pc9mN%} zsCjYZ?@Cx+36rjZM zz-rZ&?}9Z;TV4yRP1m>^Ry(M-4%UO3N%z1yC`_t>)j=@b3#(4SHr)rSQAFYWu)1TU z^|0nvkRE{5(@5F?YhEd7BdkMXq*_?@m5Av=9TC z>qw8nI^0Zp4Av3lq&iqfX`dg5b#$1r&9IKKleWM*R_i?h>tThIJqhdKRivk2J+hee zG^|DSq!_G6*O8uqbzBDNSy+#4AUy}`@doL6Sc@A;TVWmVBfS9YiB+T*VLeHERS)aQ zHI%&s>#5rE%dnnaMA<8_>U%BItFTU_$n+YllfuMputs!^*I}KaeQAL8tWuV~0qfZ@ z(wneOGn3web-MQ8ZCFdS2k*doPMD?d!g_8s={;CywvZZOovrP?59@g`%07Tq-(8qK zgmq3CWgo#hx1RJdtn=`U=)%X42QNE-xp218Zd?>04M=l#srIHGZ!9 z9@eW`Df8$Hm zqgyvv?_mv@P1ah|qUuVRgY`aLng;9rm6Y{_l@AF`-O^#*P(oQRSU1*^0PBMw^@ep* zgwzMthv;*+zOX)`?Hvf~+vO}B0P8zZk{Q-_wO%HyjattF>-(iFwZi&=*2{wRL#>w$ z>&F=^wZZy{*2{r)yVkSA+NAXkg7q`4HxSm(i&$e2tUI*cU|7GU9I(|Bl~%diy;CmE#q$ll&W zT7c}&v@aJR`|~hm^2+UtLefHH@3fN^A-h?(dm*yFj#73JvcJ{dFGlwF+R74S{}5*B z#mL^(NUA{gZZqi;WXt;$`RjHmvRms(mm&N2a?(;{|4~c29NB+Xkd`6)uR79l*i5A) zd2!q=O1c8J9!;bbu=Q*vT?rd>yH~;1yMeN+Ve6-@Tm#!aVal$BZC~xnjj)ZZrtD_e zMjNDCVLMFAZiDT}BFgT7?PxP83fs7P(i+%~FDI>qZM@c72it@U%I<;f-0H#oF9j6uC}}xw)sBlZGmlpw)_Na7c@}zBy01(hJvQzdtY}eP28eqH8M|uOc zo2p4~3Kf&yg6$S<UjujB4%wija5`vJCk zGpPl(mvqm6gzc3mWxHT|wT1K(Y_BUYb=wVFLzwh4Y;PBneu3?sDCt+&;^%`_*xuK& z-(mZ(nWcZgwmm}H16%y}=ug-_(^me1ZAT$X|Ay@g_D!D0*mhPaS@&+ReNDaY-C_GS zgR(T(e$bQ-+mDTu^@8oEauQ(Mt?TxN?HBg4dmo_&miC41w<1zM*nZ~-b?*<`U%JLV zGV5zGOZP=iS_^4EyR?-2;=^Z5nkg&5;MHML2!q#@k%nP#O$(_IgYVP!4#waIB9sls z;0@ZB5g7b%DP<#t3Q40d_^~MI5Dea|Wuq~8OD$z#41TtiGzNp8*Lq_y_ysLH6ocy< zS$Y@-zpQHf1PVer?w#!(pjZ3$&ZWAJy?q+>AnXYJoO4E`g7vSTs$ zPu<_+;pnbw6vNTe%+eF!NUtP~hoe^$=|nhsYkMcb(Wiy732^k&dMCrNm)1K4j=gJG zS^~#DwWL$w*k6~P28TrV%U}1?;V|pEXTYJaH@cq*M^=QT6XCGgNt58PYp)`39MnkJ zWH<&jkfy-l&~2OrhfBA6HXQC!mQIBuH$s{Qhu2P;4#!Y~R0@Yr_hSYeer@?2ID%1@ zo(o5)k~9;J!ZOk!^16{HK`I5t9B49BK0X$c$;X;}pvk4GuH1dc7b-AmzkLi=|a98cmV+jZS)p+c74 z0>@|dq+5l`Nvq)aqM3A?P&MgxIDRuocfirwNV*e_J*A|mkeRd^j=w8OYlI3(cfr}c zp0rk|oOCywJsU{tgrcN-;Oq^O%$=>TZo1zKXTJz#_X+7Sy&ulKt0`MAq&;{5&V5@b z+aMGpZG`hcgH#LW0j;D5;mnMXHVJ8a55XBf|2-^J$z7@UKONHR0` zAT#N4IGx&;%|gYLJppI@xPKDPfYy5o&QW%jJ`Lv~^`sb_qjek4!Fjl@`#hXS)UtFd zoJVS(Ux4$d8p>pr@#0d_OK_f0MS2;|6LlM}zfh zr?ybm0O#o?q&MI^qmJ|@oD;RZw`3Ofa?0L@Gtx+U2hJ%aq<7&wtB&*$oMi^-V>r*( zHDo69`MUH|nOhw!{S40XYSNc*F3BM6l=;*nq_5$;EK2$o&SfQ}?_~~kA4$Ugu52d# z2q@Uod(pG+kb7ehczrcCDreEQ_rHC>KD!o2Pk+)C%*XidniBoKI@%59d=HgC2Xs8Pk*j=QDQd?E~j? zVbZ>EzRmILu^*i8YJ2;``JR>?0O$L<#({8tpxYe)=SN^&Gn^mSkursJT??E|G0LoP zex|_GBOA^gWh6VCU+EeL!TD`9WrN^sQDEvZ7|tJKBnOk8yAfts)%@S3XF`!KI&B_BbA{KnrEXaOrm^Jx+itqCelf8jnMv0fNP}g<;idzqCGtYF8y29qXe!o#jJ5ETw`OT)8INROgbH| z!)r-rz@>lHdYlPYQH-*QvW`rcGzl(QnpOUKNJ!|o7Sd$6j;kQeg=?m!1#q2TL)isz z={uz!<#5f{vW0NzZ*7l7a4pnhbrD<@5!P4?*QMIiB|>(}E{5y!DpG||gmej9mD-m} z;aZ_-9o!1ZE1Wp~0=Urvg`^>T!? z8m?C}NNeDFO_#2P>-8qe?uP3PJ82zUZ)u$ zq(|WTT7jv@qi}tr?L7w9w=I;_!S!7e>2bJzh>|wL^zzE`1uVUmGcl!S$P#Jp3F!kEj%Lz_FkE5MM=*>A(#J4{ z7^F{Ncu0_jT_!>UO;VHCEI znqdr&lD>j5s*3bAjL~+|H!#BGq;Fx2X(oLKalF>s1>*!Q z`w7N)E!z#_q!QNs8HT>j>G2DUQwk~j6-G%tsTIa)TJ{@^(`zXE9mbhv(jPD;R+9F> zh-lfLF!Xb&9)H0&OBI^ZWJQY7CQ>&T=MH)^QB2sS{^J__cU|c{C()z+Ek5bkT#v+jRf^lIPsXvU18cBP@SW-^f z2gXuuWnUP}3MtzU#&WH*`1r7}x7k zD~ua;X%>u|bZIt>>JsYNVBFG5lJz>G+S7wztd3DO5XN0T(jXXX4bos3_tcOaF!cR? zniIx-y3_^ZeqF;5YNnnW#)c?q2#g2INx3i{swa7bw9E_R(HLcUFdoxh4TbS|1!X=M z`nf<_K8z=I4L^*h!O{SXXEX(2JgaMjU~CPubQp{mv@eA)>Z>R_7{&(*OliYmd{{{u z0pnwBWfY9p%6-@-6>RiU>9IN&ZihkHOt_s|HVbZ-wlW)Tw=O*o?jbSimBH;%U`jh5 zZf}@02kyK&(p?r@fc;h>p`^a0T4QN2s>~?&28fO1Q^Yk*>9XFF_W%^yQG*@1^217r0d{5H%eLw_e|~8^>EMD?cM(Vx(n{hYDjD0zFf=hhI^Ur(K@&*eJs5P?klthvVzl`>J}< zeQ;k>Ou8TLYqfvt;l8edvIpS49;6L$-%v%`2=|SRq*}Od)~!7V_pQ2g6Wps>So#p$ zx0jP1hWkzhrnE=kj%uGDg?o*Uvd7@QOZ!&`_uXO29*29K_HQ%XHBrj8V92*x_5^b8 zi%|9?a@QA;oZev|FCzCv-EKW{Usi>tw3m?kN|f|6a$nPRUqSA+2FhMT?mIQ4ZODC3)9c9n zu$i(3rey%-z3%T)g)7!{xZDr{@$o;*A^e%Ga=d1US`=@TL5xIYB zdLN!{+TI87bk}u1geTp{x*x&QOY40M5410zz|+^v((Ul<6(z~)czaipK80tWFzGXR z_SH2$hi89Xx&xjAVl4dvo&lw#FX727B<+O9QbTHnCkv#n;IWmHzJ|xHJ^corfm-id zcm`Lp^gDQ*TJL*!j4H~0fM-aQB^T&kd$oT)c<$Gh^Wj+^V+}t%8_Gxl zcsA zy7YW_57eH{f!7>i>0Ed%m85y_TD5=k;mt0mYyrHsM$!fF+RdbLcn>NgErfS)1!)ny z&U(^?@EV1ri{N!PkQT$68zwD**ApdO3~!#DQ~|Gk7S!_+c>UVHOW_ShSb7<}1u@c6 zc!z~am&04AWy|0lp}k)Y?RAczAraCQ@Q!XJt$=q-3F%6B$7-*xg7+}(>DBNa z9%bn@@E&Q9u7$U#kt9Gf4&Gz5y_N7D8>Z}fc#qdsZh*H~*SHbh6Lddrg7>U) z>fH?Q*-fNsc&BN-Ti`9NqU=_9&rx9NxeDHMBc$8lovGWs9p2ey%I<*oJY9Mxyk+&2 z$$DsWwBBlX=jy(#fp@;Pd>6bI6jE<3ybCKycf-4=iL?%0eJ#-Q9(b2%pKIW)&^7Lb z_mT?g-3RZby0!b^T^gZmJ-nCe)*gU&xvsGR-pX>8ZiM#=ZBJHjyRwL~2jRUMq)qT% zV~`$#_u4Yj!|+zsksg6}r2rduJ&r25+>L^bEXf%1F<`dsj8-Ie7JzLeJ;nT^FTn zE4($@@(b|B&rL7FtM90K*2BBLoO&<8`#?SEWq3D+Nw2_LTT6Ns-c8!m*Wi7qg|cn% zK2k(_9o|QqNe%EmuE5mu4Ges=nDizFei19@dR_M& z3t9RZ@+NC5pCj+A63V_r-ZWi9)~B6SMcLQL(^t7YzeC=s(twldCRnazawvXIZOXQ z-W6K52YD+hDf<(7SJspMLf+N7^l#){Q=??*vMTSjO{8wfyUs`Ij=YuhFTDryuGe~L z$h*J4#9yY9RGO-Z}+pnTWh~5mFzaDpFse7^$C73u!Op-D4;97b+(0EmT3u z5Ym?SN1lFaDif;b)v}i|4|?8%+HyAX9&Tj~8}c62r8&rZEJm5ERQxzd1Ch6-nKTGP zGb%`f;mb5g5;3^Dl;ngjTkE-ywO>7DvNEKjh~$R#SCEFl=hFV=!uoR^Wghs36q3BK z{$wWQ!RLvQhQj*2CYj7)s6kmitlyQ9{P5-L9tGeFXg$fu*j~ZX0{BApB+1Cw6D19U zPhWk>+@ih_wUiwUpZ=|o2`w#^HIy9!-)Y*@(eRxSrYsEKnYy(x@I|UAI}Ex2H$PEjY;sWiBJ}SPv6g^Plol;C}mUNiyv!e!CI#+pAFwV%`BY?>*J-Q zY4F`=CryWSvo4j1V%8T@HUritib&_cr?0Ql&xQ5L8p>wES6fM%1*^VpN}mnirYL3S z!P=lp%iw#&OxgMHJ*r1?4t#O1=EC=Q1xx3_w?*sChwllkw*bDUz|srgd%BcV4qr^y zSP0)UEtD;S@3~^qMex0-tt^JGzLBye@Vy)+T@0VTk4mqA@3jodE`e`b4e3(&UT+{> z2H%^ybSZpq6;gINeD7#l2H(47lr4u(-*2T?!uP(9vMb>GpqjJ-z7JbSSHkyk9qB6g zw(HWX;rmpHOzGFa_n9ue7QP)?Rt4V|QHAL%;rm+m{CfDl)n45I-*<&9y%E0eYe_f3 z*P=^rhVRD;%5H%#{$0HlzW6uqHuzdAS$aEszg3a$fbaKu(w*@A(L`E<{BCB_UC8gQ zEw4p>k1%C-BR^eRS%)lZ17-Ihzqg%KgRB9Kq(x*NNPlWQ6=eplH7uC?W7NpKTd%uU2+TJ$HsQ#pP*}ehWwLD zSo%5gPpKzK&cN4=q%V+vn)d!nVamRS->)ry1AnlB zvTxxJX)E8sU)W07_wWxdBmDsXNRVWbqETA*Bm9RnQ??8Ka53p8_{ZqhcEf+Dmi-L> zVcM%-;6J>PdadvmY1wb^9~GtS5BN_hBK-;f=|0lm@J})n^^)A$2wUsb4gM(&ly!&y zY&)q3{QADTS5Nq7XuWj!XM&}@;Gb1U>I?teCQ?86=e3gdf`0)$?bRRt3#ur~fPYa5 zX&?A6EGO*?|KcLje(*1ekoJfF;!2Vk{>v4ZdS$}DEKIV%zg*k1!e7}!Sr+^&w3Tf5 zuhex1!e3p=QaAi-Vx(O7@2)0!;jhvD4Tb-HP&OQXeT~^`6#P%rP<9CXPx(lr;g8u# zW8i;Iw>uX8t#yCU)HiC;D4oorANa5T9{M>|F&k*QSditUyg?V zO-;wZ|5l8pD2-N7hGZDDAfwEZ$tgj%=M&N-KQW*lZ zt)%l2*rdSJYaRlRG?6YqU~?5oCWqTnM_P!$6T0pq1fDWeb|C^!7n3eRAf{_9M&Q{D z%9bGTT#R%v0?$WD6$ostB`rnZ5%{8kbPEDIn@Fn=_*&b$9RYn_>vbmr-}_j) z8iAGwX*~jeH0#1?2=>x#Y(fw%ls$xC9|fjf4+Kk|S)ub&59uOftjbN5RiXoU?LV5N#&85a()LEc|3E!UN5a3Mfh6agO`7DK^H39I za?W{JQy6}Iv_sB5k7}8meIC;!XP>G@){wK$Ewv;$`@C00Is%^ai%CZ!Z&MSg2zd|b z8b={-z3#`+$a^5l(qoXfp^`KXc^kErW06-AqwF~3-K%BCBkw-l-(uu#E@SBl$ZfEb z#=|oiq!ZzpQb;-p&Z!xs32^FrVw?=;ta8dufpd0@R08LmdeW(I&MPLJ2IoRudODmJ zhABG(&WmbDXTn)gOPUDhrMk6Aa4v13ECT0ptv4CY6%~|Cf%BS5(phj`7a^Sur@o%V zR5*3a38umMc@ayeBWIsxl1!>;Hb^sIYpEiggPeZ4ALk;+WT$K%D40{;Vf0M{qzHsS=*+bmvJMj!2f-i zrEqZiBJ6E|s(L#u#OHz&Tcr zft;V~b&V*TKbNpnBCN`_2NGd5zJap4;L6c;*TT6|iA=a#rerK9t%Gxwt|9Tt(;F$1 zc;%yY-Fx9^(53gm@o*hW?}uYmD@lG0?yMlmuR#x8x&eWo?UZdq;4_eF5qMvZ?t=(C zrb#lOR%t!SfV$hDo@78>T1k=&sM*@yqp+P;PnqOGg|(~>frlcLJr4g>+Lz7nKT|{5 z7Wiv3NKe3jTbT4D{AVR*@uEx=$JDIrw&Jubzi* zs}h;86~3FaSMpRcL+iZ=&yEU~*2D8ojPw#bTboHQ!?RiY_X<1@S5WpUJa^QRUV~>r zl(Y?b=NFP*N8S=$+5nlPm$Ek?6ZDcKu6azD^p={Km-IGdQeM(KYC>MpyJ|9C(tD7J zcu8_Ulcn2uUroSE*#~O!UDAgL9#}#82>z8}(#LATUD79NvR%@4$V9uOCN;?}=~Feq zF6lEhxi0B*HL)&fhniHE^o5#Gm-MBYOqaA1GLbH+Sxur#`btfpOOpGZTXnl~-*ZP3 zWpdvWHIwANXLW=m_dRQM4Y}{RCxbG%@42_0B=)_~HE}IT?xSWmkt7y-w~y3cO;$_VTTN6;l346N3Q7B@32I6Es>x|d z`>Ba(N&BlwX-NmD328|Os>x_c1Jp#cB(s`?mXxU`pe0$<YS;w&zd@P?!wt+GiOX&IJ9im zj7igGOgnGV*=LPAeDdsJ`2k;ki2wQWeR;E|pO@;qPyU7lgC_aN9~SbdPhY;?7Vs7L z3kpp6`GJrxRN(U$3^V!sq8&8Zxqng({ommEbLUN-W4D{8&zU;?f3iP+?$kMR|0jk2 zf0q3}?0pG%9L2S+Wn3s<2*M(Eu_O$HV6h9xqC6lG2{$OY2~h}(*x&!3>UE}D*tx#<``&#K z^tkGrQ>Xqqr>eTTs=7MW+do(`B2+5q$6#Z15}~YN-HRi{qH#!#tc}mztm}x5XYCz% z%#lk=R+Q*VM`(rLrt3x?vux3tg=>x}OD5&T>3^CBypL*nWB{77wnsNrw=_ioO8?G4xZM3$X2Pi6n>pW%GwStA`c}kUMZq$ zl_I6NiIhiUmOu#6pR)K$7m$Qj_ej)`XWq;DoD`zHwn8Y;O*K_5Re~?z%!O*EXFC#6 zOHq-7Kp2Gy2LV9z?2^@4<^Fb)ApU5gp1Zr;v=S2UkEapg4gIIeg2+InMoIK1`rU$% z3kH=FEx8h+dq|ndCL(okOgfPuA8K{0B<+!Okf7a~a>-HbHaBbnynVnW#d37I@e$oE zbuKA7I^1iJN;X7W8{wG-bW*jdR-fHYUUT)<4OP)?b@kEuEzK<>w5bz19OQ;ZgB-dd z;37k}G&nmwD0fMro7gOf`lbYvNEC=e_akOR3GH6pilWq^uCNtlg?y!3qP5Mnz!cKN zBu#b$yuDJ`tVfMoTbSVHgp)ECl=hU9QVxntl4Ld2NK5>N*pv}A+R)_@r}P3)ZVEUl z^FX;lfiiN%7au}D4m)K~=+G_wP72HY6IUvh_0C+U42^M4hfq`jx3fIwg`E^?-qGo# zFjaQ8gF?k$PdNzGazLMhKqdPI90clk!!WJ1;^S2os`arhUSBEVMvEooM$Ji~o0DBm z3UbwtEjK83XK)=TaK5AIpQsG3@*>s|ZLU<%b5F{om_4t)Q+JWJmk_}Vy>23D$Mu^u zqZ5}WL?SSZ4A8TDkjk(+rcF{<>YtThv%B~6*iKV^Mt&Dlf3{O_m8aC=sQ`|_B*$=4u^vEx{Plq0< zq=tA^Q%ikSLv-WTh6bp8tjI~M-5hV(ft=szB(>hSUlPlEbxsNaf0*l}&=>#Ac2Zc* z?6}?o z`lPlD-2hndMv)>r05Z$j@eDGH6Ku^O(^DJ8Saff+dUG6i@+fZQp<<1~7FBi1x)?-= zHPLEF&FQtIY7m`nM@3ab6ZF?hww5Mld1}~7Mmf4;lRGK>ae22$@j)TJacfkUf!P&Z zX+-L~vOSGRQywVErG`quR1xwM6jfA0o|JOLStk9Ya+~5X$oNDWSqc{u@7kFV&4##J zlEpi@&rL)5#vdOh?YO3;93{S(V#K)5KuhSEq=Uel+fy+Ifp@D1dWBG1tw%A`q~o6+ zbcpa~^$US#XyyH|M+#>Uc!PUhcO;>XX9pYv*1Z>69RwQo-K0sV-@;7(Zl$Q-LR`H? zCLgVs74IJrlTg2fAchcCWv$=BEZ>jWahCMGY&%YjA9UGqBKkOG$7!mM9Qq0HQ%8DM zr1wR>x{={e6HHs(NJkCDRhVfG6-!k&mdNmVbA`d-s3x>`%#1O&BLodJ$a6v5&=HCf zX`29{SKhR4KiAs~l93pLIj5+LY zpw^`fQ#(u^bJ(lPj4_9OdL$;z9nlJvy=whL*BY?-VuFHP2Z6SedCn}=eMQZurgOrS zauDUQAasf#advgYaBj>NR-G$xZY)oy(&LGtbShEq(9)^&@C8YmD#$3hMvCu32GR4= zMOm`A5|uvHELrG?m?(90v=sfe1Az1~%>NQcX@$uAo7$bAXlQmHp$mJ{$kIva7geT_ zRi~_9+?__J9oHz;4rsLFr72q!(aRhLl%Bgxp>(98omUr0DhCzdb(xRJQuidWh;r-6 zs`MfpRriBs<>~2Rk9s&eu)=v8F=!P#ru~>7jO@ohpi5kV9^V#5Y@fAK9?`p|M((ID zOW{#C4u{8gi=9`WxZn`|q@uE7P#z)hEQ3-GN>KKRjap+AB?&eoEXo?D-fzvS6`^^R zH0;b=gDFKDG$MrkND>iK>jLKUaJhprPbggu%6w9~Qx3{pQXZ6|80d6T9&%DjgwpFs zRVu0K9F!0#R}6r%d^Ip1q9HVPbrCE;##KFtj)^RxW*x!tk!35Ri`K7QwxklI2a^uc z%7rW7oZvo1pzRY`OatsgFbK2!MipFu-Dol;_34~QLYT4LrMKQhzHdI(qwwP^V1<}a{(nORhEpz-gpPSM==muyvJjh(GV1dxjTl(^g0K;x zA1-b+az3NuFcT*aa>Yko~Lcm)wkjM;T0 z%otsBUA7sc;cttWF`DkyHZw+GH>J!Nf!&d7#OAU*N0>3Hyc-Q3VW{jYJt(!3dd#&G$5!jn?Ge#(j z6J`u7*=;}vl@i#W2MkszfxR6tV+8isE;B}8?}p77veOS}H)16KrjL%8F>3iNU`o=l zAIHrYi|}E}j1lG+y+*8rj$PVi@(>xBG+BV6XX|DRCD+HAf+Z+|PESe|C;?1;T+ECS z=KlR=4B6?+D~%X2Pc!poucl8NG+9KF8#a^Cd=(XD3=uUe5A*SBqPlwYWQ-`M1Ps9t zk?1{UjM>eMm@$^1C}GBkat!+_+~311#S7C97C9XND0TwPY1Na`~WyBWo}`C|gKo zono?{&ZHU$vIfthDMl?>#_-I36&9Ip6=u_%rK>P98Gj|i%V8gVbpWA#7O#i&_)AF5 zT||NJQQ>k9#KvFDJoj0=YW+GW85d9y1T_YyE?!1yCS0;5IW9{Lftt0jVRK`1i@LpxPsTyQceu3iPXuhHabFsLNdmOog|y8gD$iQD zatVe3a^qVSbc8rar~RA~*9b=|vQOU%3bG(Ve5h7%wC6m_+1x6Gz@-98HUrteky5 zTJhhpM%7^_2AC0JV5$U+5|ZarNtVV zq3_V(@`s66EeQ7;5aIdCo6kB75C^s3SHf3mN1aVQ)Y5xBSTs(w1wuEKcN*d8<%yYX=$O& zou(X4J`Qs5if?l1E}9uJ{uPLL95f-Ws{F&qBOU_8cagr+4N)_l<;q&>dKw(*3^HiG z&axdt%SxBwfQh2W;}qr#0w$R>c`P#t_*aU8J1)Kz$9jib2LiVy*{eUe{Dt)>(?9Xn zAwIY6H2Y}Po#E4JP7}*>9_B|Z?Zm}i4Xe%FCXqBguV|rH!BKyt@!>`b$*n|)f(til z6IVgZ!gXSN+1G*VJuSF@oewVCebmk8&t1XAKGhqSU6lkEhMp#_19~l77hIfp0=VAS zf(PJp>P~y@W!mc`t6JH%c_XE)!1`?1M*m}nlcsEwvTP_AaKkq-?28Q%hR>FVzg`av zA85gxULOp0eXudO{o`+k$Kxh0V&GGc(FE|2b8e*eZDjqS7M$4X&U&QT8T>qECTG^t z@Ex6jQrTmw#KY)iPfmOVDu=XSe$1^B1y=owyB10R5_&n6nT>5x$>y9s(|VW?7^UHH zi}!_7V%Hps{65lxlRMq{jmGD%0Y1G`;r$LT>p5$3@Ss-G)N6&rfuhP?4qHp=9Jpiz z;_RBmt62UpJC(}^x3zw_5^z4&f`x5vIQy%y1?I;SPL&*!XrWJ>l}yGam{(6Z z<4#Mnh92#9$pHoS?m(*}ErQsUGvuUkV24F|XjOmg(>ZR_Lh|@1M4{D@cDt2_(88qM zR&FF!o#WY-OE9T+*q^3Uz$Kq(!P&WPmteb+x|2m=4E0Bkaz}>YQOuPc(RR#1NdBo7 zoYUo#+`dgnMU8Zt$uU28N_d|xB>zkc>gDd_R(m)Q@YElhm}(E&kdvmG-HnwdjoEM+ zc@%U!fcxt_vvKn@kEtbItk@yV0=yv0HCNu-amCbbA^c*C z?$zCDH<6}ygmGo7Jx=)Tz*VRACgFDwS4wTaVoSk=m&3X70KXAj0kxk2zn!@7+A()7 zX!;GflD%qY1AZ%U6{*cD_yzr@q}p18-)>xOYSRv0zRpIdU+u)fFY@a|e%!r--xRKP zwQ)z&e**eXG_|~sU(oM}sWp524&Z{`y9Sx=?l3Os%6i zO1!9Dr1nVRMeSUK2GlkxysRC^g|yr&rRh)VxQx9LcvZU%7t%h}LEckH^HjIm9iiz@ zBhAyuZ)bwMoycovQf;Tu^k*t?A(v;n$$L&is1JOdvFBsBkjo3bjJ+5@Xb^g(M8EGq z?^uVItTpoffSmtOq&7U@7rZ}$_qPane@o(ut1Sum9m3V4Hksj->H&nH_n+C6{AUao z@_Vn2vG=-hwW-BIP5&Spp?jl5qC_kc8?M%Qg=pzGazXN_j#{t8#Xs3lnqkGv4uM=~h1AZ%U z6{$r@{C43=sO?ht9m3V4mJ{)t!qu)8`|!GUE77I zYHJZ*+RjF(U+pWxqIv}`XyRffeiOJNkfEnT69#dm)WW+K%8TO)V_8Rd`Mn4w)p9#t z;m$^=UkhX76X3M~}s#g$Y$ zC-91Q99LK^RB53y;3(@EQs0Fup%!wr(1Kiq2B0%SorkpJim3%> zydsVg9ZF47zQdvAa8QouqU1Ml9RUQ~w#H{2T-j=^7Qa2XI@DfJEwo(6MVVeo9*s0d zC&4RcY()ZB1e(Mys{+`OGN=}g@e3^xXj$Du$u;1u25+sDeQgS%cC{p^h1MrW_8;yxeXa8Z+3X$vH`fWqZ`{HAcVt6jc)20*A+EsEo}16Q5eo2P|N z2X6;>O_J`6q!v0Ot`?@X(3uFG83qFJ?b+E{=&XJ$WmhtX1hgceGPidzhgPwdc@r!hCARTvnlkt`TZm4%sH^`!3Bxp&UW zPhX^j7UJ+hNn(PU&(m(nG5ekM!uOTrdkIUj$U}1UvxN=sD9QJGO-W3wXX@PRz`Iu6 zsU$xPSd!{#-ktlXzugrxbgE}HmI#yHnL0;S9~h@9lt?}4iDbY-GVAGI4)!TY^_(b@ z*&dQ3E`9||BBJxt1plSv{rwCvA2nq_nyl#yO-*Hxc6^vplzSZ=g-ZK?gh+eMvibu$ zxumHFdC`YTtY|N%_%CUX*xorrv+73M{#i#W$)~#bFP`DJ7r?ZSEs4XzpE7FEFNRFX zhi&iJl6z0RV$(RKb7$C+w7p|Xj@d8&JHJ$tJ#D5WR{t||AKm=e;$|iJ%%CM%;UT%# z%$hsjRg%w@o01RpdPt6Xam$fnJ9a3RWTl7X$VB&l{7mV5p~sYbu+Bp=YtiRd%vX{x zWm}S7I!D}BISvo9^jmMMDQP~hvlF#w?F>=wN%1N@^hAIZ($tg|X({mvX=;i|o_(?Q zU_3fwuKA0p&yK+(=oeaWVTI!{6tx4bR?P*esz%kUGV<(;r&GrHN18nQI%X&(8?4sb zvsmAJ@vpza^gJdF7HjTotXV8o5|>IxHlh++flTB_C1$+$_*+n!h3yq-(>NCLKtI*- z&q9vzvZ6SU<9XVoNjBKGWM}iuU;g76WHS=mnRGXDD;u{;H90UnW~#Idga>t#CfO|4 z9ocj}_V$mF4d%?2wfkh_R;jWn>M&K>*<5SUB%7lxKVYh(@bmJQkj-A$CWZM0=VYo? z8n;U2Zr4w3L$VV1?zW8uQ=ii_3? z4Ekf0E?SZ_dlsB&6|SRuO*z4Z-9@|)q~ZEyIM4%JW3}LMFr>3moAyf2FOr#`%rB=c zWN{UhBYYEsjcaYnqzNwUg7UyM?wxfX0oPZx;0c{RxYBGRxYBGR_Hx_CAJ>|I3)jhE zFI;0TjQkb2_R)eT#eHzymoW9%eoXVN;7Y@vq`hq0*!DtSXZ(r1u#3#YUT^CU{|>mu zX~9_9Jgnu%r^BWm8`m=xE}GzaKIWn&>2LSifvR6;fTR8d7q+8$;5vDqKdlF@eX(5) z71OhRrR67nbmzBw_3ONL7cT7Y^T2i9TaUa3Twl|IwLLz#(rhER(y)rX(y%7|>is!` zE?o5qFI=zAxa+sTm8}Kqx_of`yv@{O`!UV8f-4Qb;IeIF*RRt}b+Wj?4Uif3Y8X2G zXTdLkYdfn|e(}7B0*gx@dxHSKDJ=+)OL=3%ffra5WAjZ=87saAEanOWpqv zt_f~GHWg*!YU<0m_2)MN*Vnb+X_Y>>+-q+KMcB?W#OFE{n#`j*H2@yyu1fhQgSt^>8;8U6o5xK2P#aNs)IV?2?F#6P{A^*%=np4IDv zYfGQ0$FkS1)-TU>;Y&J9ePXZkEk8PUXbg<}Is5xuEqGoAF4=H~^^>Hj2e@{5C&X3o zmib7|^h~REA=pnUf(tu`jeg<)#}19A^2Zhf*90wiVTKy zoa4mxR(_%gxF%}BZ)c2i3|#+=?O9y*vykArEbL{k{SN!fO~93>1uu=K*DnLtd)<2$ zm;LZ0xUh@d!;deIA8G)ud@Xo+#yH2o^nG(dT*)CXTM*!+?9 zJf!LuR-X5)z3dH2Vz1jGUbv3!&{hD~G%eVf@WEyG&wIvR_9iL8bw{oju6<%VuL7>= zTJR?s<5i&87>zp(qzWiPy;=wYw- zCeHc`aOqlbXQekT_neY3&iSwS@m}|M^*PV+*VgXy*8*2a3qBk0!DaW)d&G~94b9?5 zyr}76uj${qhy6qeUgXq#aM}Iyp21~rsuoq1D>h-~8_s@F#ydJo&+3U3waLv<#eHc@?=kJa2s=cv&kKi(v?`bo^^;*9du21hc=#cGxT#fT&p6L)Rh)ves_3PHKsb|mNQrlRlQ*gZ< z@WPcpqnOL%hibt;;a=of?{Dtkv$)ho919oTfA{d?K<^Wm0M}u7KR(w7*G-8%i%V@K zvT*&i%L~_&9bc;juEVw9fA;&}y3xAN?ioMs44dT?KmNVd3s+=d+%>>;gcf|K(+Agg z1E!umgG+7aqE5l}ZrBUgxI>oi1zg|Ig8zv7;JQ4uXK|?wX%?>c?QxFdZM{Ph=VG_l z=&%-i4}F-k-kWa>I_4c|FW)h<*V~kMuf!~q*al}Vn04HN;hD-9*BTe%Oop^EjfKIU zW88fV54roxkL~`_fuT%a6a|oCw?mmW}S@%cr#TUI^zS!@&+wpuddI?U%Nb7Gb4E8+X?qhgTHw{4yJX*t} zK9t8gZw3Z@Ni(a*#~1c9qK)Bg*L~LiIqs>aL@Hgo%HM{?L9=|i~ak(Fr1M;=W}2<8i&ag`Czd7y4}ZM?^zNI2ef-(82j|$ z4*~i5+krk4GPM z^f5>O2pCr4yq$%i|wbdpNwdFLAMVEyRX}Q3{Si3!<2v*hCe+&G6f8)HNCLT2ZP<$?LLNQDqMAP zTCW#|I}WSc4h(B>np3V12D`7@eGJdXTo{THUKmRHe)<|Ptkv{`dwek1eckS3u=l-5 zeV7@sFgQ-2_G_HGOu44~AgC)MI1tXcu06wecDO(~BK&xR!~*u`ZLW2z?zGj>Xr?huj#flS@J_ zJN(zzWmY82G6}BIb}w9k>(0FmxQ^5Gl9Ugw(zvOIw)wB)S`{$$39fmSUbrs3ZbcVx zRciX&HXmH`_V9eg`h*MDg0O|lvF`WF@GH*)*YTQO9`V67AHdb$?%2z}jvr^0Q|yJ) z4?XJF)qh=e5^&-B?}wKA;5wxJU%}-&Zg%X)6I|hLFI-vA-f$mqov7*G81TVW-I0l_ z$t1}>FZGPMtL^bjtG)`Z#dhE5XpfieA4X>}`kR`*sLKaeZMF%*_TzsA*V&dn!G*K? zJpA}sOG2Qc0kmoFZmP@V>pnn*KKVJqMeNm(Y0a3fauz+VL<%Uf-P_W7)MmZY&a%Fdt;wK zTo-ddJSqSF8bGYl^tEaA(}HMcV?lK6p%WTvT>85q%8ElN7aW23VV#R+MvQ+2;<4ox z#8s7dHeLQcAa2m~^#QjP|0nA#j^HqnvVOLO&6xVvx6U5dZxv;Apy`Ozr6@`@K7o@q zYA~(s$i}iZ&fhRIv#p&SbJE1xIQzr=vnzzXYei@f;MpR!9HPft2LS1-1E1)9j{{Q4nVBc z^b_iQAllj35MAqS21HlqWI)`z%g)+_Xz$H1A(}G$SL!Uj1Y-BIUwP&9TL5vRrhjvH z>TEb{ss-#}`dOEpe?N<3Tugm{z3X)r-yboH63w1mcy$~_*@VxMq}?*CLn2-E(>Qm~ zRX>fQ*l#{b@ig`t_FHZAl=RyU*re?}NV)yH?V_MU;8Q9##GZBUZU97_yMr@9T$9`u zL|6SZAiCn}Pu{`V^kz+OF7mOW zosA9A{e~dFDB}5)fpgJZaIz_Ph}CPD5KS5WD-gG3TaI2;dDEx+*8*Y-zBiOMG#|Fk zhQp>>z#gW~y5xqbvlTt2KEU4fTgLX3Rg`G<0SDgs5{j}_)3^1dTiY0Gxaz0TAG_+O zQIuUBvDvWcJvCyBIEsQgyCd#^c-h!eRH4z^aO!%S4@6h}G$6X_rvY(SM{G768)9X@ zZEZk2BjA9z^Dxu`IQ;<(|~wF#LPzIP+QaMvAV0-aBPStL#z6e zI(wEq?p;+m?fZA00f?4~%+V%Va%ZUw^>#U(dP^V`_!guTlT`R5K=MOhulJ@(fBbFDDoQl_;|C*rx9ChwZwt7KVh!P4&Nn(cm-CIH z?CKEShE1=i{y5<%3Oc)syB!e!@Z_cY1L9fuN@2!KrE$w}Ip2Wja=rm^SBLO692;U= zmu+o8yxfL(`QUq>&n^VSvo-y)F1Hn}qssr0GLuuKI;wmy=A_N+&+L0=c4yN5cO6y! z-GFHWw!N9{Ebrwh7p=~WseeT-oKAyFuIRFA&Ey+`c?^HUs$qNLfD;k zBkoDa1AC-yN=gVjm2PR15cUh*+AksO+UZpKuy^J*g$g@ZexeB%`$+DHNeH_+?o{}& zr{Zpf4?7#W6h7=PxTjy_u*!d5L_%0=zrRaDSlxb5>BD;RLmfiH3hu*73)V~@=@lAQ zDIY765Y`2MIv^pe#62FC5Ej9nWMIVJSVQ`GrG#QUnp{Fy5qVna!@|SPq|h*L|4gog zFg^ZkpM)?A{k$$AO!mGoC?U+1{$7;>Q<8sB2r%>aM@7Q~+u!0Mhxw^@dL)GDoxy;F zFpKg}r4N%8@3jdHa{}-8O9+qDAC^l9PozWb62gPuM+ys`uRcu*4UaLO4M_-30bfKU zw2eoIOK3Zf50?;*e;w5-p&dLnTtcVw$Z!dr!Q;Xu^erA0E}=7dOt^&3;t}BzI-AFX zODMsk!6kGKj|G>|xjYhFLg(=~a0#8yqrfF}0gnNf(1kn#TtXM|_-_f}7}-hv68bie z{g%+hJn~yYm+-i630=ygz9n=SkNK9+cQhRFEuqVKytjmKOzbSh{VtF77TOg&(py4T z@;Gk^eUC?ZOXw;d<1L}9d4#uwuHo_B66)a5-4eQ%$97BT`#iE+LOc@zxUR<dYQ*sOXw9IX)U2wd7QO`e#xV(CG;yEV=bXy^9XAR{f5U^OQ?@W zS4-%(Jhoaw|A$9bOXxKoS1qB}c~rH8-rzCS68asFsFu+0c|5g*`gt_9gx=(_)Drpw zkEE8+A9)Lw-+8>Wga&!Ew1ob_W2GhZE{~L!&_8*cw1nQ{QPL86pT|f` z=mQ=hEujy2e6)mycyzRcKH{;_68hLYGFqbl{@GI&Xx_BBzCIeSZjRP&t7-_U=%x*| zB$bu~>o><6f=#s>Yny7fRM!TZcWj9_)NkAoY-x-~>o&}3saD;{@M!S)J$-&z*$Dg- znmh zaiR;%ZmF%V+tLUd?FhggE%nv4v&AHCspfcXZB2AjQ&kO&I@itHhQ!h4mYTpee5n%F zcWSSxZ?4+VP#djpgk@1K$y0aBY;3AMZ7Z7kjsVg-+zuOVZD>)BG|E(4v(YKAbxWYS zadRA=PNSmFXsN4hu5U(8Rol?97&XpN6K^_Y+}Qs&+s^+6)VtFES2s4*MjN*@>+|rL)xg|;ExX-I_5XSQzkB|-?*F@GV>)>E{9jTwFZ6H! z@0OAOMd5$Z|LnYZPqey*;f8|ZfB*5HKEI?it^LoNAJYFl{`(hQx?9Q2yYc_T_-_}+ zO71%Kzi!y%F5aFPLAf>V{$T1~Z2u~m^_*z;1M(O-ry;)4Q47DU{g;M9?)DGD{Q3WG z{|*!Ww*@yeG*+J)ShIBP(shxA>nheBI&Q2YEnIv2%Ecz>$Tdq>uV1=y@$rGksx|8Z zg)Obo>V{LJp^~|U0sPF-11l;{4@4HOi7s5SJWw(hTGEp=?S2yV?1ksIYCLB);h6_{ z`sVlFW}*MxivN4sKgNj;vwd0nFUxHIC8htq|2r)B-xplIWS7NX(y8qL&25jg72XwS4K~b%Eh~{c&TLEM2?osFfLF8H2^Z%EqS6RSisV z?9t2C1&%p#X~_z#@+_S__s9jhzIfc&r7PF1IX@i;<4` zjmo0<(Fg6*G>Uqd*C@&{m%m-u0`Yx1w4AHMOxG0MRNc}PEgPZboGv-EwAOH*I22v8 za#eKx2raL)n{wMB*SK{{OSGwE!3b^QnwSu)L1^B(AqrCNvqd0{YTaDla$@KZ{iLE$ z@d$0gg{*QTNsLz4Rc+Z+i{WhTmJwP&zILb>H5)cXOQJAB;Rh*d6=_9WvvS$7tINyC z45Z2}Rf-t`@iv;xRudA*8|u=CkeocW!qV+P5-mZ&FKe^pL#IU{TyR>yB}_9Q`^obM zKpHLBATgnG$eD%$Qv;R&qIt;(qFLMHFz#GLzpt#wD2$cUlLB{)Wh|JlF9C|fd^*fG z=gk<1Beyq2rNqegSCq=yj>V&BJ@|iUcklr#??-XrGaLHuhuK!N9MS6rt>`>Nuhp$6 zW(Tyqn{4S)L~rP_*r*4D(Oxo#Td^y5=b8l?0Sx||fqgl5Jq zij@)QbN)z=j@-^XkZ{g_P)tRsIcV!KQ=u3KNG;lKGzHjn;^-ujWtkKf^&nO!ivmMW zEYEgQpnW2D?b$N0_C(pHVWon>Cobr4%E0Cmmy|mxwDXpJ2Zd@jbUO$z^ThRa4g%`L z#N&D$1eTyS;2;q0Y0g3t$>{?Q3Bo@!;vf*2Y-2LfvocMrFn}06#OCG=AYS4u5~Omj zOejT=VxrY?D>^s2Xw~|4pfwoAGZe8*F~fQWiKVKFSt;2ev0R&tk{ePi**do_0orO9 z)exf*ceJ~d(F7OiE)vUpL7$66yR^HdSi;M@EGZ<)xg=#pp*H8+whk05=dvD)3miG$ zHOvKQ)P8x`;_A`0wAZ~!p{PE5Zgk~hh~?d_&__4bRJByGXV1H%-w+cDoBr+DP73>m zPKDD*g?gO#6JCQ$mmZYxuwD-$&BY&#xic`()mx$b_q6>FrNi|X+(lNEDcZzOL%Z= znj}qeWLj}BEYUjE2_Lu(ojswVC`;LQV?skyo2ZQT-zHq>u9HQG|Y znF^!TO*^7<*?H&pCY3-*8E)9PkHctFE;eZMqMWYUxG5Sc#Z7*5RZDdpN0|sOi-s03 z`IKwhRPy0O%jQwE_~`a86P1pxWpkY4yE$*OR3o=;sln!lhQ{sD+NLH9C$0uDjY`PH z6=LD7Tl{fY%Hhi52-UzW{^HA`ge^T|aU}3%(w1@-bY=3(#7*UtUQ+kv(l9nW26HFH z)x+a1DHn6E)xKOWMWrt;Ue~s((x{Ea>pH(&8l!rp`nWIkJ8F|*>M5OdyQCSWIHG(P zBvDBfh=uW8m1g;t_V1$fVj1mBic=nSwS@Uqp*|k;3&Z-Q(W))c+AXr<#CU?yA=8Q) zJ}IkDRSn!o zgv~m594wyDqX3p-uMM{t83kOqlofDJR-4J))Yynw>rKsY^Ws&=eNqmqgl#XnAJkNZ zN?=$KR6I%Q`U={rESAPY*Y)degEkLcS0kh*zmqU1^P|QSaS4Y~lLsT2bada7LW3?1 z%x}Spc}Ov760J#u(k+%62qz}esVGhU8`SQQ)!Bbd{Yo9E-aW5$okh18)(b_Ow${`~ z>uazn2~UhH?OrJ}EtVMg>iTunDl}Hd`~xSrCp%K%65MOIle^1=wA zXlv3}1#Yc!=a`zE@|6J;|(Zdm6w&Vd7Q!2_$nW_!Z8s4eZ?FE(?nQgK% zN)VDZH|4E%e+gAhAJF_IOluazePw`Wgf?xoe>Mcn=a1rxD}9xqMHb1sG~Vq=R3Mw8 zA9VVvFz+zMm-PF}p!yfR*X7IRkVm<7`hdTXG?RP%%d51|_h)`dR_f+b^kl$4Gt+oQ zk3z<$w+WfGvFNcje<8DF6g_1%;mkTCLiE+Q;{KY@Hm3aNFa}Z;e@C~!2Gsm1{|x){ zW#n4a6&Y4S-4zqV6dAQ@%Eul4N~G!*J>D~{gk)1BuLF8lPBt`E!Os~+6Ym(m?Dfw{ zl(4n8)R{t68|oYCTXsaNw>DvBQH{z=m2u0gnw2SJ4OLP68IKT>+&r+02{(he?8T?f z37dIjQ~`At*x5FmfGX{`+I?mCOjLY%wlCit)945En=%{gH#TDAQB`9MKk5mz_%h2F znLzQd@V-^Y(v!>Ww6HM+^=9eWl<@q+9~kBwwgQs{!<6#rhz}aNrE?h5vg>{-3=L8x z(giUGTs(Ksk85_{s{S5I2YG7Iqn0OW&iV0O5Jbs}=STbn&F2!@_R!AZ#Q z!^s)XeuoU3sZz#L9F%P$}e}c;t)OOW3gpXdE!wWYw_&UU)Jabiss2$c|##33ie7HQ#R$hEWYFII|ffR>xzg!N^oN~r6)d){t(yEK6IIuYf z5>mXPPvUk~X|7?lI?$0r8XFx=agoC~X>6LfpgUc;Srx&ZaCR%X9MLy&Xg%dciF3%y z5f9t!vZ(6$rX1UssmLf^VMYO5)uHGrEi(Co$+g-wYe%Ka3NAL9eR14X9v7QcuO;ED9HpAlm66&U9~W;KN>AyicE!zsOs?(n zmY5$G=E#?KO^qtcBD7X!O0!<7uH)|ROs>&ktRL`Zsc}a~uOF8_IVJAHH9Ejn56f6x z&>4DWVylL|QSQmaQ~y9GI3u@i#3LhY|EnGkIn~>2&-G?W!GdS@S!y`HH|H-z1GTuT zcV!za(DP4`3{=;EncT@o3{k6!mvM|R`IrtT1yB8x*GSH$3{vH9>b7Mlv8uw3mqp>f z$w#@;Am_=;2Ande#go-co~ai#Gk+tYnrI+#SgRw>2ZaeIIdX>9oWI3P2~4z>$Z|dk zG3i08m_n}J(%jOF404ijQ@l~sZ78ziOm|<>j62d%E5N)SHhGP(LGI06X4J|V1)ubc z1<=wEZQc@H87)En1z)ua=;Cgcab)hgK!!@>R4}8>MP^~5&6{-rD z%x{6?{7rAAOOxc9zfA{mB;6pgC`A7DK^F-iCdm;5;u?{f%Nxt&R z3~8Bcn{#&aZ4#}MFHb=NzBRPMBme29 z@a~s?Wj~~#8nePsjmgzdJ3ye~+9o79I)<282I* zLsgF<%DrKeBmIb3s$kj4YiU`F0?$ldneC*oiY;b2Eg2x5T;WOucTASm7)u7GpL}@A znTqyWG3cNuXUwNF_5<0{Z}*qELAuz~Y4?aZkMw8I=Tc8WGJ{@1`oVz=dMW7>!WndK zt($yN(xk(S?4c%KGUTMtCf{jwQed~-@d;3J=@hf7LF_W!DMo|K<}4``m806`e8PnE znceZzER)ZzaHgf%FKlyCXymhFP6~{i^L`iH-JoWJyE&}p>E14OtNayQli@Jc&x z5y90UE92XiFa5B~BueXgvj|alUcAxezLUzJ(-AqpiDl5m5r6K@pwkhhpJ|{gTLDte ztNn;(I}HVy&nqn%c%k&;3M&fRmVVM7;^5UJPoQ;>AGLlRu4lr~=m9A2Nk!*~?M( zf>AV0n)zYk$zSwm(qWPUnQTgv=d^e3k9+*`S%7?UuT1%|Wo*&zn_BL6ZMlA_*=-^J0eQx)VZ*q2Bxp%hu^5tH$Aq9TGqdg$)apit#nN*!R#$gl=l&L<|+yTa+i}pY5 ztu{X{dX#CuEAr!_kC^ss(vOSgHSIT@eq6N5X;1g~anYEktF3BYm`l)ba@KVr@hCk1 zVt)gk>^Zv4Sqst#&Fck8G{IlSz#N&W52h`?A^@I;eYh`9$0n8a>#)HMh(Gj2%*H%@ zuQqQr*y#dmO#f=GFB?vpzMrqLLh#b`@%_H30d4xetQ{UjK;H1v^u1HQY`Ws}B40M_ zGd-)qmkn1<`$Y3)!!5<_9o}qOmqjc7A=|A7b_%fi?i}#uH}lzO+H)~KE;Iju4>sy% z-q-m!g?u=zSa#(4U}M!eZy5dbdhvNh-teUKC|&XS6~hRifW;RK3?o1cH}?7qU`kmg zSf_piGJZzJ`X?&MRD51-7!gW*vvW8J)WfMw!(u^gnR;sFa5_*Mr_LW%f-SM&_pCA= zt(g!`AI9Rc(mQpn0n;!7zlIy@cE$jO+6CHnmFZf5RH;8x^P6*9+!ej!{9Cs!pcscB?jn;gn*PBP1y~*n2RdObLF9QWO7&6tn1L>*M&civQ z`@nGZet51#f)9!$fn%E|R(B?Y24M$LEiDxOCf8uN+^?9kcgDdS(_Fu43pSJ1)Z(Z#P(~`sQHwCzGKMU2BHU4nR6e0UhF$46 z*%JJSmB`XXWudo;)j^`%?AMi5U1*erX1`Gf`H?R8-2Vux&VFOSV6j*@;SK9nqf#Jc zLE0dxcP8g-XiF!<#vjx6Bh^c%Jb}+ptKZNn!qyR$ctt3RGsN(E>FFJwoM>s8-W;7* zj-S#p1~4X=hj5AgZ;8HOUipIgENsC?s<5Kp%oo*kQfdg=$Jlt(d#V;h>(~=?dtcWG z1cNhfK$Qgwz?-^~_0~m2L!R-YYzGyCxpL0;l>Lz!MnZ#X7MvEnrk|wds_i&+tv0%B z$uZazJ-IyrVwRK05kuJ@X;4XylymRRr4W^E=B_5$L5s?Sd}a&{8Z2Y0tg0-5?{qoH zHQ4kD(KlIs>Xbr(wt(ge{D@?;RPt8Bj4z7PB_VfcheJ+mf}U!|cPi4Uvi>FSUa-jy zI;|tAP`nu@_Bb=(8)BuL{ho1hZzdhN6y6?4&jp>*jEnm+rJ;T1EZW2>sL~Gq%`EoF z6&9HBJdKqm5B)P&Co<`<`IP%;9@An{CTN)%9LSW01*Y_Orb|OdU~7dTZ8{Swa=ys| z?FA3XEIFSFYCxXTn=mvea^uz(!^_XK8%j=9wIOh{SrQUZguqp1QmY~ZQs7qIkq$Wo z-q#!im@4=r)6pbWmZ36wDA;e>+{u88^hqhCpiwM_%#A+Y=Aj74=KPfmmppo$mtr7} zF_l2-9~M%s8;C^!Z_eM7kh9^@P;|^FP)F=-CXZIPR70m)vj@?%v@+g7ALc@s08r

    BuD-PPnocBpI$|+f( z1o}4|3KdawerURh3TS6!u3wT&Qy}>l-mDv$)zF}PqAhG2aF9x2`DII2m0-sUOf)~& z!IGu!DMfLRMgwilHuQ5`OPaBbu*BMYU#f5iCFo(o5&wqdjY&fSccp6HY1r-Kt(6(& zhCZwoDSe>^x`8!}>qP~h_aH{|5b<1A@WN_0EL82_4=KeoHQRvuD}$~yFlgX_u#3bN zHKx}^Vq45^bCF>5g4gK@GygJn$5U%kE)pR<<|YABKvt*BgtC9Q@VP!$Lg1SE4R=C- zD0tZ|1s@f>TIWhgT<-^5B)F^auCRk7(>lj4JW3!>k(FZ;Oet@FQ*L!yv6K&@g%{9u zwiNJ9nW?)-?CHPP?INN0Q^yv$NHEfrYA0mb*E}Us>5^jQdoto6mC(Bd_qDr708#wD z6GRDDTnk^Ua7iJ@f=wMR5(+fsfTW9rV$b=s93-|Zxht@}kt&ZQE-Du{0H^q4C!7%d zU;J6jp%ohz&;~|iyGTUX*6JWhdn*3C+d&Gkp%;IuxkvzA{6U+G1kVXC9 z9Hy^AQixYGipD|!OX!6@2(tlliIoi#kY`Y5Mv;LjxK~j+2Ri1wuBTI}oyPku3!kA0 zmeR*2y*MbOKCah`gR<(`16~{yIhaLTx$=SO_1P8a)Okdu7gc7`DSu!F+Ih5*J|mSW z&oaaZGwH;6dIp+#>`#Mo^KqesP3L^knyv*_nDbdiS&?Jj4PnS~-chQk3^CX|^BzrR z(&?FxJ3)8lNF3M3GpOeA86j?b(htaRf%!f-%Q5Gp-1PJ)b>1UkP}8uXe0kleOggNc zQ_~H)g-yz0uRrG9mds2A-{oE3pGl`>?h9nniR%8=OghStQ>%mSl{?oia;kfLxLhg7 zsR{dVxlWL?q0fgaOT*O>A1>DrayG<#xLhI#)D3~lhHWp2;axz?DjYPW-{4?r9k*U( zN6!5pG$I$AT(idDrfV#W&U%H)q~UXn4Tg;P# zCn8CHU1k#0$zV=LCLMJ+IH4$$j(QS2kXcA~WkKNaHcR%PxnyDcSub^@YXI_Da)))v5??Pw z-MOLkg|nDjCO)>Zz(?JlJhqdA9;@`^vHb-G%RPB)eFu&5=CO56(R)18NjrHl=E-Bb zn{~03PFff52{Zm2cF5cPR!C-#t@6U&q4IWzB!>i{L!4>lF1)DKDT9U;3R`)~BQPlI zDx5O#nfgAGl^1*vT9b0h!2UCSMz@$U3MXxUP<3SnopzrQ%FUqD<}-@J8Fbov=E?mT zblQ667%hWNJI_3?JA+Oe&*)BoZuV0~A5|cG?WJitx;4U|b(UpRL))_-?IX0eV3%-(r(GRj7x1F6YjW(q)7aG#>vuRGr zCDwEf4O*}{?7^XH3jdVw;7G-uR_?)}Sqna;otTf~mchA0KE%zqaWI344}0K#61;~B zrPkP0yX5)-lgL{_$!(oh6jq(Ge;ma}#Me{j05RB7HOG=0CwI+eu3pEOdZ-_ao}%RoFDJFV%Q4VgG>acfP;178pLFu4K~I4~2A@p3B|+T`j4AR_jA|8_ zS?R+J5z~PYKQ7ab@Al&|+x_S!FHBsZ4`kK(aly2vJ>3lzFS&p@uiZ1HjCTS@boel7 z{)GcROgiq!qz@C7ArNLA&n%0Kfdb{;_LYH9;OK-;O7ZHkoqk+;RS)=ZY2J``g^)+@ z!104VDaEU+eYy1NN?%OOwxZlmGkr6s&5sM_F<#k5#SUd&g<+={SkUdEk)!j#;z}vPJ^hUSOgckVIu3-e4omAHi9)40iQ*B#Dc6eT8Mc%{`x`BYhN?G0S#i3Ph zD*{LEfwt3$0s5xjt$Fk4t$PN%dGy#FK04{OTPwWN5z8Zk-aM|TPrsJ#_5e!W58AwW z@Xqv9%9|(Kw_fe_VG_1v;ny!lOJ=-e};LY7H(+fsp=O*Im zQI<4KAu(6QGwDz_>9{V?-KI9w$zI_m!*hWsar z{MaFuC;#dpUp~`Mnw;?EOZHpob5CoAr1WR`^PxVlE$mJ%hbbc4cKR?tGh02ZG7752 zuX4e2bZY7VMmEo92EgG08^1MJyQR5`A2C!9N`dWZ1+~v^#Iw^Kgb(~7hs<*YITtlIVxIIG-Zn1`6L@t(oFlzjab;}|j7Co?N23=Rs02kZ@&+cJ)s zgo+()UMgsTZ*|%n`{1;|**zB7#t8YsBNAX_rGb}KxkW3>Adq*a5-^VXE{hR-RukS# z-oi!L^<^B_ou`55vH)MHoBIouRAlR6*A$c)t z+*tDxG^ZLs;GUQ#6-z~NYt1{q)#9S_$~#ZtWLk7txnD5rtS0k>cXfVqbC)8@!Li%X zf#qyeO4LE!C+c{^1GqlV7BTDeZs^Oq*jA5@Do>_o6c%>2c^8#iU}(d(4l9as1wZL? zE3A?|EBcF-PBID+Jg41BsgifGgV!tF1{@FpTsIb-ER0P3L)tT|$reQ3`pf-JB8sB- zv^gn&t3TK3q(FWC*E>NOX{tgA^`93xWuQ4{qwb)H?c@#Y853iYwzj&qep~$(Zd{v_ z5DJ0O93hrcDMwzx(p)RbQk12vD9{FV&58o*jQ6_`&B7;ulybErBRFfw5(3tlzlynp zP+KM)*#Xj+rs{2c8D82TwjaLTFLE{NIQki%BE~vn%P92|zd5KFs@_mt5n(8Gs(FF7 zK4#I_`f(oZN@Z7d-1>GjoQa!gS7f0yp?nkTbteVYe&W`0Cj};%c;JA8f~GKWY|KHR z-m|+MgzYf$#B+z76qs(}WgSim>@;yg+(ALHCd$j8COr6N;*@NM1mR9=br6U)lyDFT z_Rz3{KqQAd%S<3wmOCW~WNFGl0U>xqKL{h6ca>8_no)k!XYcY$Vjj z9%16#m`jYtoY(Cl(O8R8E)uP?u+BxI1uF(zB--NqfJH*0oP=FSsLeUc=E4Ly=i223 zj+_f^xYT}BpQVah=3#vqBJ3sBSGOw?59x>4$R^AiGPa=7j6p?keyHD#SPW3!glUfp)bZQT#(&!-0SgedGH3T`11NtT^nQPKOon}p;TRUfI7aQ7Xw^O2n-GZIChWLZ+i{bbI6 zfNGQ%r&6*+;W#MH>P_PEB#0^xb$%>*vMT0bXhg1#QZDYaRbb&nqi zRW()dmguIE&C#lchG;oH-%$4ZKpGc`EbiP}Xixy8s;E5!jtV{Z9+hu83+9-6f3J~> zIk{8aVAN0n;V{MAJDh2(+9D;qq*c_}pD`%=ZN$z1Cb+cEDZu{dj$DIcd}TlmQp&rs z%PEI;nD<=}Y~!I@$h(}jx6Fx-Ebod+Cj~u8-qkTD1treAN^??Rp1f;ZnBb_K>xK*& z`^yKnr`#mzX(nFj6g0j7G4Xat3NDoz`o0%-Pze411W1V2#PNPV4i%CAmaJOHNA`*9 zlzCxx_v!HfHu24*sYu;{LnL0SOl*GgU^_n%l=CCW!T7!q%XF=2QKCXVIoCL`vtRu| zov9oWG}Y98lb~{=i6^(aX>eg)UaOmi{PPa#anm>go*8q~=%At^H;vYrQ{kr3{ZrG@ z@?!=Q2dy$Gfc$F0#LxQNsY{sk#59#9ta@))7BG^tfCr^Z@;>)wJWVGJpEo-_J!?}4 zlFIvrQc4=T!fY4OyrDpvBxu#{+zBYw;S!_4=clD)7G>owF%F{gqHa0*#psbuB(zOk zk1Hh$QR^-l9aWQbNzqT6+*YBRPI2c*5GVD!64G+{vH-=Vn^wn}_o=Ned6w-9vutVN zR6iu>)0@&FanJ{0s>DDzEOMjtBu4|fG!26)c=CQ5JezU_O;7NTm z4uhFf*5)QrF7H1RAbMm-1HKjT=F!LR4SMrvPQz= zwhVxEp`giN!5`Dc>PVH9k)2vwD!5!KK_*v5<0wzT`MKW7DS(DqcHfWzYI7AfNUASZ z@Qs(ix63^k>Z1#f4uG{cGL2W^i-$5hxt=7VbgJQ29!?3aKMDm2Tui&M_-+xf3VzUT zq;{K>kAqw(EL+$K{$8%6px)0s(-l(PbxD79=t~Q37$!UPBL&|c&Zsb2!H?tq8K5UD zxH;j^N3T|Jd(59tr`e)y)~!hZksTwf}5C*PJK!6ravp9?26&ofo_*Zoe z!>9ePNDU)E{2j?*1kjfRI*K6R0T12_Ts!E^Lq(Z3Jq4a;V*xjCrS6>)77Ki@&zlE# z2fo|p&4VGQ&1m(@5m=|qiTH70=)mPEZ@s7jQ{VU1%lqlHxjsISRqtsf(Ccjm6m{By zgdZ0fPdl7O@-!hlH!UaW$K`VFv~dAnHgcZ&%Ryf@ZCT)(H8-V9Q%^yebrw@5gjUGz zz!Ny{*V7h)>%)dCE{%ihQQ?qppoogScqnn;=7jOS1ndc8uK1>*B!kI&0`rg;LEIVmqaySt#wNC$F&{Kqy7rDO+c=C)p zCzoP#Ui40Gh{$rRY;f_#DNC5`Y&@e}A7R2-oK0wv`5$E)7&33&T)hn3NoVt>;@}$_ z`;huigvUD{zE#B)#Rj~T5As{=AbcUos;6$|>+W!kf~j@i+XQw-1vh16Xp!t5E-Mxx z_s_}UL}U&4{b7AA>%avIwc*r+WG(pn!)7H1V@=8(UWV4me>*;GUUbauT@Vq+Sf2^w znqoli#cn$H5JTx}38c_{%!!n@ft{vNt<&bel?#rh+^jxHhJ{g?DP{lS@V%O_4&0qE zHQD1qRcYAj?yvLXvX6ME!;i~b#KXEDm$$-4di=P&-8~4VcU5K=a}UetS<%_8-D_Dp zy+rJRo~ZCkE1Tn<@-32VetFurOw#u~+3%~IdH>88x9nVe+!wfP*Lf`AtDNJGojwMY zho8VRG4I5(4K46ezaN)wel^>VOE>?r(~nCx|2pQ!rJG-F_2bgb&kp%<>E`EstfjWd zy`J(*D{k)hEt0tTP2Vz!n}6pETW)ePaqm$*;R)X6UMup2#wPb0-%@idaIoxIV1MoG zcJPJ)FAmdGCA>JuX8NaI$Y|n|+r5&IbBvc= zVEgynJNuFM<@9$VP8InCi$}HndT59JqH#!J6LJF`Eu($w8xjvQOBe_ zuzk|=W?67&ANlT433eu7U=l)oDQGVTdv7l`s#*Tq*}lr<4!S+*%a_}5{zbaKfb1%} zIP5PVqpD4H{sJk#CuKj$Cj>$~QG8U%uA^ZdL{`O!v%PUm<4~ z7TnMak*{QkpuPj#%$tV%)UzWl_<_^}uf**43T~#^JWI}-OTmx(eA&F+o>%G1hEHam z+3L%Ny9=)C_hrK=GjG;>*(i5#1+C(Z9A=eb`_HZA zWQK7u`UUfv?%|Tdx@C8D3?~5tmx+mdA;89E-yIrG2di({wSi$p;EJ+)hD8EzlqD;M zRf4Kkb~T%cFIcvPvLCe$Cqg7QbPXrLDqVJ`KCB3xD=!uLL!t4nj18-W*1tVGtO(8j zlb&HkSfYE|hZUi5+lLbY|K{YdDj=a|QZs6z*^RIo+>|?<5=vBg`54FbY~$?nQS%qT z_%m;&mh@&PGWF2#&;Ym@4FZgZlO7C7CXFTkvKaVjYSF>5&OAzYr|V==3^g`}nM|E$ zwGp3cDu|J=m&*gr+~vtDg|qYPhP-)5c4Wen z#jOaT--o?@tJ5@r`=ewjw)j6gxO&znb9mp6-j&L#~! zZv()tWsS7CH=DQUZ7E+iyN(+F)a<-ZLt-E0wEc!kUp71Ky0|}^C2RP?Cj)1v6sFlI_UOQta54JQA_xOb0^ZCIQ5>vK=6a$wFbOOw&Sf8O5wtEz1Q8E~9l@ z_;I&eS}xv$_}d?y?NQZwIde|<>{TQ&c;wabzBzwlcg(kd>|S5OgvY0C;YNU ze<+R*rBR6B8{N{B%~*|>uSVpvsNj!#a`K=Sc#Za)PPVjf!pncvo#()-(R^IgCiqrM zPP4pw6Z|}tn};@?zF#^w4~J9mP1RmmX`rp9sg+`mg2)u1^m-t-L6kV~Mmu=U1gV5V zo-HzTSV%-LF%iqbU}IJunM;M)RxV)`3mlQr7>|#M`tY~&AqO45a#3cYQUw82&h_Rp zh5}SB2;}1Ml(MZm7l-+Oz@VM^v(-Ot$p8^*<YKLkpZG*1Me_& zr!#buX+Na8vpD#^CxoZ$9>~Ix%H%JHvS5Tf`SZ-;H?p;+U6u_amuWk?vy7mfrY($Q z!H8tq*6auw_~zCuX?DYVSv+?>oDWUADwT!Hm-T;{ZJpg|+LoSddAObYPH#5OmV9>r zxU;wjCh%S?14Id@;f_XTgfLLCI|FeVVAz4r7={z&{H3CBI1@!9RE+D+M9~Hny9F~* zG(kZAq|Id)El^RA8LzziF5e~Nl0_PUw>mTJ0{o;s6J%{Z9nC~h$-uvdGEpQPyeSRT z(SBU6Pw6)^ZBY36q+1wo2gVhe?+#hv_4=1l(Dwahgo5kORKJzt!SF!}Na1N%;Wdk| zYi+}C9{8bp9Oszn-oTm_oYsb4{B6cEuF`HLtZ4k2XDeQreNC%Fh8UNY1@?+a6rUMx zl4hm7>f2>mPP0($3@KFi^tlyQF@x&Ik{Kv&N(LAdBG#sXR17La=K#HZqDs%56-0jp z92sS%D}PQ=b4F)wCTV)tE+?^gR=B%CIe;O*j!0-S>R}u%p`>t?Ro%S=Iq>S>o#oy zxlVq7rDBg3Lh`r1>Nm;!y(t5|%M}EX@AlK22}{=UZt1~-&}oYmvT-|K01K^BUrK5z z0QpXSU_=7^rLXN#{$6L|hN2uSo&;fN+8u!$O!;G^iam$G%1na8+t;F+!B_UjoHNkyxk@*~wXPtaO{1?uo?ULAGG zBD&i7Kpc{dOtWHNrEa~yO0EjG0R9*Ls|qVf?j0;bSMv%RU10k5S|^KE@%}>jDn0yxX>-^ zR&~dP02ZnP4G!uqNjYea&?W!2)%a6`Pu%WkTmI;&bWDfK{HoJYjgrv}P)Z}jlH0po z(kN)jEiEnxoucFiNf(5%qU6>Q7sLpAqAmz&c-AqkadKtxnfQ9_8vW@r^uL!?MC;dX zYIAZ_6M5G3Wa!C7yQs@+Li)(1#*)`P#cRyJLlC^owiq+;TY)$O>$f)k5 zE;rw}d{<>kmzjE-khW)C5_)R&G(M5Lbv>5kt5wwD!cMnEwakV;$gTT?g~=HVEylo9 zRdaYGqbJMNnhhOWcc53jK~}-C<;~0IwH-aD4c{zlJ!bi`Hs|-}|B$B0sx56;BaUC+ zqkSqp{TjkETA-)|elf{4)3y5zX^#8?hvdoIQ}Gn=-Bzzzxow@}TRv^_0uQr`{Q^{5 zi(eXsUx>=xRc)BuaGb;dO`oA+EA?=wzA+Jww5?gyQIEIPd(|(o*g`H&?dcsj^?269 zoUXG@y1pnSA>)G0QNIt(k6UYFbQ*q(XdzJCz?*r@F%*2QA5ei)5FMzYWx$29PV86> zNA+gn@{{8AdlIK%nI$~Q3H4Y5$h6_?Z!OvCFdOcS0!OqE`KBajf_XWmi;c#H_K-|9RT>A~_uFN(*}2s2pK^1xYumte_1%=f<-+ zi1uEfCIuQtNlShlb7LGF?`w5qC{IamMhF~N?{9I-!FAp0QDBAqK2Q_Mry_=&-4vn2 zy1roxnG@k9ew}=ZB2~;w7wUe{ZiE!X(e9Un2Ad5<4mm3ZYy{+swy!xcCC8fCl^wLZ|MO(&Uz8M{EbZb+IDG+@9gFL5j6~VQ?5|T5n?6> z!~rRjggC=OzO`Q@vtYDb-2w*WmZsgC1Yp}P4#L{c2D2oQbod5$P&lOO4@kHq8)T%{ zxh+53~a)`5jTs#9rl=TN^g7nxE3N!* z1%O+TAU4lw!&#DYJ@~1~ESyV?Jg2e=+?KhB$#bg6!nr28YH}KQ;p%$41eDkCKqjeb z)Z;s23b=Goi73F_JYah3`@s>;gN$GTpgRKjyS5itFnDsCL4#KB)hadI99%b!54v## z_rQQMqQf=8pi)&2>o7A|XsT)vSBBgyc-WmW6+T9dPVuOsDwfGpAxsZsnZtdB+9O&4yUQlu zCs|u9dy2~z$HV59EHgMJYXgH>FrQP_yxHS4Pvr5m6Tv(Z+WTf|vv9!62QsVzN1v?q zMx8d~R94M#E3>P~dlI#Wj%FB=erul1<(F5cwWa9{1$ahht-Xl(IQt93xwJh4WTDQB zXMpUamuJSoCXkn&PMa*Kdas3}{G6-To|Dcn%9y%3GC)?oHj!Bh>R+756lHa`wPv6I zYu@byXmt#PRP)}j6Ja_b;Z)=~m!9k6nJC8Jnh~#48+q6KqtA)(XndRYET7bRC*nj< z?3&>rCxZMZpB@9k`k70fO_<_?QPt7zV&K3I@zAb$J?J#SWZ!RbBJ46X|LS%@s9wzn z11^ZY`Hh4Ng3~Rgm?|1LmERMo>PbV=j#7;>RU49-DBF4Rh4f?#uWysFvt6rp1hQFt zxKy>SE1Q9$R^OZhM{`zfk7Uc!Lv@NdWjIGrlZFAianu=>CjB@U1Fox<&C#feX zjwV~dt1?D)O)$d=IN*VEP9_JnLm-zuHqLQ9 z*&NyYKkLh8@C`CZwN##coh=GS;P8+;Z7`P_>$5t`ldM76Bonn9cUfu173hQ=yP6^X z0=jY}=`s$lX#DC!LoRf^45a$N7MFqbXbVJ9-4e}!<=cs?$5Yyw5qo-kBm-oJdVDwo z#K=(X>BzE5XTJ6fShf1p-V7KGizBZ3peS%>5G=%XnR!5%aj3^etL*M3dtvqZo^0DN zQ}t3h0}pY&Qhh`Ku+t?6y6WvB6J>ZeFiDpzyYR{BOq6XhJC=#^xZ2^(M490UgPADe z{Y^JOyZw28NRGk(%*;=os4G8db=g4AV8k=ynJ9+q>cx!BHZ5Pn9a!0!DJqXQwBp2f z`!iW;1U|ng6GsM!k8K&nH2&M0w*hkDc$yA@IV8ei0%HT69%F?QFQrY<+e{&WpQ5J}6TS``5 z;FLa<2})V72cizUyu5__$`c1OO%V2cQRI}y@d>c(5Vj+8k?sIuM3sz4G(%e2E<0-| z1C|$uWhZ4OgIbqd%I3Aw=HXLz%CHkcA1M8_$BCdYWmmMakxx$H{W0Y-Rn^>mN z(q(tKvV;3cfh1(C)KvI44mdHDX*BJ`LY%#ntzZc)`|O)#t6iCMfGE4y4Ka*sJ6($C z9i@Njw;>dmia(%vD>Sy*`+Y8iO;Gw5w<7DeyCX|B7Q{-f>!AG=c>bsF3_p+{uxb+& zO20=>l! z(NN{TbMVoW8Fe%0MK88)`!^aw1fD0a&>-!}6(2`-bQBIec#cU*catf4$Ga)Le9@B z-+-zs4wWISULJE4C~G{FGh7g3*tHcu2}NS4RaRE0vFX6$z82 z>Q1XvfN*`8S9*}I99*?|2c{?#`e{)6Wha}ssaN~JgS3{=0@cbNntJLR>67X@Eh)J$ zanjTw2f#j4Kj;8(giVU1900q{zegPaT$fqb#BklZuu)E}Cf;8JDOLsG(ojfV225&l z#uJhqaXZ9}+)<31<@gchSPt~?(q5q@aD10O*A0TDgxOh5M^m6uoVB`G&}G7R1wj=+NjxKQih> z5PV}W0t5s8HY_nxJ#-G9bhCl$KgeP&;{`44jC9&|sD-jO9;y;|SfV(DovT4*Le1E{EQTFgX^rZFSIeaghLDTSA{?}H}$laX?M}dmU0kDuG z&b%vDoklYQ|v~apPDty-tDv2g}r|9B<@?-G68^BU}^mdAl3zy8G21YawT1}nC2EEN_H54;FG;SznGr2`k@^e+b zn|ln8_D}6I6z%^xp($w1!Y<>GC#=%CsG(^8upvXizAsv&D0TLm+HEM-PEKc~6?)s= zZ}jMGFr_J2jKtKw8XrOdL($t2Aw$vIZQ3_3S3zBrG(1{-YCu!C(wfKm6t2>}YBNXq zs@VxAww0fb4-a)n9sHh>{cpuetdZQZY1?LeM$%e_BQFMgV}%ry{Se*qQ?E_Re)_&L zr1~kM34bvNiLtBlT9&JCUSUWDUnL~ZEdLq#YOxhKR@g-vPTCnkRIcuU7FaCI;TS`y zU@EzIX3VMs!P})y(*SG^*|nO4V#8icx({ z49o)42W(B~9h*-N@zgYQW$8iXUxQ8*J<5uMm9Lr$uHE6bZpN5j{q49@1(;TW5C3o$ z3wNpHBWWvQ<%4P7SL8JA@QrY*C#CZ+<7Idmk8 z3G`N12X&nKgJaym5BxHVlC!bJ-RJ ztMIv~6>TfqxbCp(_i0L+qr_nbL#!OrtJk?2)gi%t|Hn~jG5ho_FD0n=Xc_H*$5mbi>jjrG9=J~7xw_mEGlq$!pOwc`cB?VsfqMv=>h$a z*%z)_*S2y6mL1j}tonc?)%-1}uEN|6f$(tFt~$C^Dz8ANmy6{CXSYiq8qgEKM;LIS zZZgcoUkg%b#kQ^Z2_4_f@mkzLx1E5>G(9Biszursx7CO6Z5k}6m+J)z+_A_peFL*b2);d(n}?Ptxl$H+ z1zz(kZ)_pF3VEHw-mXvKW|euxlr-#+u^BVtS7dofm|1b9x(RMWJe5!TCzY7&W?b6V zok}g5kiRV4bejHIW?ef&%)n8`y3=K^g}jahzv3jkp+}3`FnpCf(=C0OWURHC71M{c zyndIoUc`?y5^N_rc5^tH^qkS3We!fBZp}jFr!-2gh`1Q&lqF9BLGlO)#I*y4kfmnz zuS&Qeq*l_^>w*wR$u$8N#7qYnwlvJaxa9S?B=M~#5P$D91bL+e$}Og1YqoA#k4|3l zrgEWfWm-#7ONNKEo@spcA%#M1z7CDsDtj61~B_Bb5F9eRc|H=~Fkahqp)Ae2lfR0>p zQ>Oz!ZA*76GQjDZRVlvj%ozbp`yeVsG6UeOq@qTE$KV{l{GrZA%7_b>_x-1Rsw$nq zVQp%=vuy#NHmWpMu0MS}mL=Q8QTATylhNhi(q@=(SoOAb$&0GkwWe$f3@H_JTAV5p z#=WG;KT2f#K?Q=}?a9XRi!1(u2gVxOoyK&-RWvhZD=O&%BSFQX!&xwnn2N*c*)5G> zu|nSda>E>|j&)_cN_Rfmnc10Thh&eMtqpajHVl|?r#rVFdwfL0=if#xf z(KdYdi%~A_$fe3U$$JsmM!{)|=F*Yvv{l!f=Gi(4VY_3SJeVs9R(N~T7GztTF<{e- zTQ1E)G&D^4j;PINP1oyIC7&JaycU};EBg&ybSXfKr*+#Btkn5~HZ2Q&w$}mB<~jWi zfGRt>8~|%}#gGBy{g#TZVVh?9?d^t^!&k+XaYM_6uoaiL+BCDg#tH%RU50Q;kuAUo zF13=7w|gos3)p;?<+`9v%QAHLIsi)C5ODyk%e5&7Kp*n2NTyEe$SmN))2%_`l}W6Lw5+d?+Ys>lZ=TAnG~+-~z3fO>Yo zzJhC1cJlkJ90Abc_eN|Drl_79XbqaYd(;+?g}*210H|`8l_hK<%aW(MAW?vOCCeDY zjcHq++`krSE^m>8-Z4x%wq$92+g66;IT#@oo^=BDHYcShoRqxQs&?D7)*BFlk9z6D zvt4oFuH<93LBWc!5&T4Gn!%KOnUGXSbA5$gO_S?6t3^=|JU-1`6&1=*($;O$XsMDF z(yZd6r6$QGO%soww+y_K9I|Mol2aVA7z#>G4BEDkaLIWwn-0_X1wA&v_v)0Wiz(%e z@1`u-ztff=eUZ#V3$R}MIRVh$h}a7CY=-j(Y=AHCC^^RoFwC=^VIhy=m9pl?&6^G8 z8Yhzu6D!m$#L_@IVCDNEeo-aRXdbggr@?Y6Z){fKQyqvDTRCQ$1Fd-bsiojtQ`fTV0jE3 zY4QAp3uGKyogc^!&%!+qJQv2@m4m*{lq()7+Bp^ExnGc?S-+axzG*#H5wvaFi1!Zg z7nFFKBcFnoe$j2qvm#qooY{uU*0zOn7tL#%$u$OOk+SQPwv^+yn3mNB+bX1QldY{{ z$Ym2E2X=h5L1&og=%xSa$tiDs42nKh`cdjDMbIxx-({O*7spsZrltSv{YnwW^43>7 zLWlLVv$u_#zi|GNww8r$%UhPtTh_vAW!4<*Hx5;a9rraQ9d~nkcKyT?ze)3^ptu%V2#7sytP8wXDvdI{<%hg3m0neUHtb z5)4vs;i;RQ1>=!VS$C2#2@_X5353|m> z!_iW3SGJ_Wp$BKLi-2onp#hYT6bg1(7uBl)YuRJimOI~;- zRJq?S>YyBz<9D$Fh^^v@#ID5#l`nVE4fS98HNzCcAg*9Ax3C>{9y(Xo|d!Dp=gs(1iDNK2jT6vPig*DblEorJvp;cIWb9}glQ?~n5!XZ`I%)Z*2}7ZqPrfmzDU2FrUkq!a0VzXte2<}#P}zUd zhLU#&%ikYRbYlczmj4q3i_^r*lJc|Tn!@jgS!p%uf!lx;k_h%h6NEH1akqdGhp8Fr zDh16FiBPzHUZ3JN%I7roucb6e=8R85nu^HJRMu?KF;f|psM&MK@a1dKW_%gZ^h{~I zX5y%(XDR)1qd!aWrzQ&~SMD8E^v>{%+*PI?R6w7mj?ja2av6~$k)picTsiNk`-I|J!+Aw5z zX!sdXi#L6x;k<*!>bVxCc8s>JR-Q9ZqOy^OE+5~1kuK~jF&<0(b+#qrZ#i)dk~TmB|(%T|+>s`>hWX4lJD zt3U5Dw5&~ey2r>%{ppiBH6NrrNYhaR$l_FgNd*QMmfdK2g)u0Xvs8}`8n%qJ=FB2P ztK5(F8d@DOuZ$?VURrBDpz67eVKo{%MPm#9=nw7c&$jtE-C) zg+Xun#E_vdG}WFspec381lAe4NybyV(yRGRaSuJ@Vg1sQzh*# z<*no+S}nf34?H_)(eg&|Jdiqlc`tfTJ6wiyP|9NS=X@oHCTyCy&$PqkFNjNm4tFSd zNo~NEN1K&|Z1cS0DyeR<`SiEDgAa0w!yWp2$+(y$4zhBR^0sjCQEkf?9zAbq+uS9% zeZbq9j`vrqmxm+xN_h{WV394JA=$`@;1u;cnnk!_u&}ia|F$e|Tejfng$r>8m^mcf zE7q2E8`iIH>)6n?zGDq8oPMby{|e)%PsPt+0OfW|ZQB@j25h~y9MM#!RK{)vM|O?! zN5FN-9A;foD1K#q;=f6u2UW_aSeYTZY_a21Hg)_rW9$%>k|uyx+z=Gk({ zRp)%NQGHMG095N2EHmh#lMfaAeQit6tfcIz*hX+ zkQ3rrulUJ`3u2dh+@%<1p&tvlq*&-DI$RJ7{Y<9|VkMqRyC7C#DCB}zi5FX35G(OQ z$_23!FS%;Zb8PW@UZ+%u(ZA`cM2PM9ns7>STr7Si>VjCW*Lz(M>-Bbz6AG~sZvnBZ z8e%2hbyXt7O1$6hl42$P+3$i_i4Tfg5Gvsr)8&E~#D5Ylh`n$$=z>_UkCQHl_4;Jc z1+iXV47(s!;`68rLM1BxG9)2Bf<3x<`J5K6Ias_La}b`*H*Z_LzD+)BQ0rDbJ^^VA zV+)tVT*+=spp=w+?uV58L?j>CRDLm%$F}3~1>birFA+TJm_ng^khy4y<3XlpX&)Hg z1t@>xDZP|guy`)VXHP){)b<6-mg1&rwQL3Ko13a@X>LD=Lh$?~_V=E@?3me{fY)sf zfz0%Tl6l$#IT-Y`ZWIjlkkyV2C8(1(MKVpHu62oIwkaOHb!YeFU_c`@j_s9UN?nT9 zZD%7Xmi>&EJz+~6jDopKnmMd_o4QENpWnv&6y7sf08+e{lw3?{K9orA%&uV~3;$h5mcIT%cP_r6>VUgUazM;&Hx5cBzYuc45+_mQNb zFtT|c>NFG%2JcTJ--?? zJg~l9Uq z+gxNQ#u>3}()%G%!(+vMZg~fBmkASco(Bv;6B8m@sexeyjS}y(d+P=@kM}>k^(IK( z8uiW?F+3($mM|1cG|4#NlMwHeA;V)jftaCCB9C>*kmc($EN0^w)l>s3w6`(BX`pxi zgyAu;eY*|CP{vsl+d$n`!9mhM54*>VBm*nxGZgFf#i*fJqt^|^QN;7USMzvN&hxR+ ziNy6|@7SCr9L$Nb{Fk~o1=6R>vQ1I?~FJ>r2<{7pmS(ZOVG>;Pr&tHum=OdmM z`wWl%eiAcQK)h0bUZciPo*y+7Q+V1K;XM`a+nt8T=gpqKSc;?` zA2Li<@E>tQ$rHhwriX+XxA(O^i^~Qb>@{SFx_=8mOsw-@KGS(4`CQg1^K_>X~ZZIJYp-JtiDw3Od80D8~)&2#5+E>OHt76Z1~ zHh1@dw?$pxVcy^!Nr5hy+ZvvE6lFJol5wC;#T$n-fhrYmlHtM%ic-8Os5vM}@uq|( zP>|v?l8R`Cv*M1l=EzB^Tp-OH+4RMmMhuUxWXR;9Y{ea3!=m|)E<>R<#U1U2qPGra zBTZ88jF6#72t%OQ#b?AcMPhTmBAVqT!{&gd7?qk)V79@a&gjt`=6}YhCK%J^4oxtm z%`KW>M4P)c!GN|DX+mbadDu`iu_aM6V`f<0m=|B~1(&ifTJjh9c2w2sY%7prL4TN5W7tuK`Vg@a(N(Z(iQqcHF|b z%Uifi*Rzj`)CO^x<~eW#YV~uab?z3-S;k)HnFp3N@DK3IeP7{ z=UPI0&p8G<-j65=1DegNz_X$Xn#~Z;()`)#qObM`FZhKX%Gc-7RkXYN};{y@X^Aw7A{noa}6%<;Ttx4gokZ|nTr+#-bpjqc8xJHvtSACeHG9#LIY-G=FN^0h$O&nnan{CD z%pl{enP=W0cE@tf39c`1mN7OjZd-Qz;yG=+20dn(TIZMb(^T}N%Bii;E!Y`x^mmVl zNNJizu9FixrEC3uw(_4$e5ahr_xkP+>75kE@mKOK78};*;^zpwb5wa<%TDW~qLnx7 zbSXHWsJte+)7H^QB?USdMh9;tojs0dQQML+Y)~CO6~^>~9>;Xp+eRgG?re?)@@lyN zLq7+avy+;G0lwsl4iMhv1@q)t;p{=p;^=ga@;`Sr$B%OYn!`ct94gTqvMO5@1hH>$ zcA%npIvV_IT_6j?aO4S)Q`$Tiu@#^1RVvM#gcYAVq$$R8ZbT8Y!xTJc*iaOdKR%)- z7O?o-BEv&HiqGxT6xGg+8y1OPMaYxec?nH0jq?~1>@~A0=V4zG%=WxiO)$ap1~kDK z&P!>6A)Gg&2^rA&eVURfwi}kDqK0Cu=XV(jb(zTQQ5P8Zln<+Y*p^QYi9^9t90MM2 zhNa4V;@B-{p1p9o%040@1svDj7lYp1@8M%?w_s7TSk?8(N{rpmaKK} zD%1G*WNw8_kmwV+&h$5)5wz4AIR(qCAk7iO&dvmO$visvUev)=!QeQHZGY! z(i=+5Jm?^d=#!TXf!sZmm{m_xCA&qGFbt!*CHu-&4JAU2Jkv}%A_OjKA6gMw1zmXu z2!26wpl@ykHwyCq^B>~aL+22}vLnQCSyV+yM<4@qTo9aF9jurWsF+=i&Vzqd@0qw} z1k6G*=YVg)_jv)2)v!S;UmLY8RR;}R_3vQ=D;qd(vuD;lGhlEymg4XY9@=CaOC{Yp zShoMF7g=}2th%}mwt8GZX#us}*S*(k$pY1fMfDWfHkJh)Q{@@`5FSTZIyMJUX&2z} zTDn3`Js4;8@j3+=hgF`+@q-XYdGwKJjH}mI*j7{>D&Oyfv`og4tgJ)TKUinff#Jyd zYg5$)!q#zQ)o$eqQ_U!6#cak|yPIwqJ1tY{s>jl{CDjTtGj&0zJgd>f)iKIi+NBx` z&50PCl>NZz9E~M$R_SnNVI>Gg^K|3BdK*|yUbW7!w#i);8e;^eSCyeF>l(9a(kP>- zF9^5|T8g?YCw9ajFwW{CSX=hSh(o1;WCLRyuRW-)&=&_JEuo+3ieJ$uF-ha0 z;6McA{<1_ky!ySif^MSHr`c_a(Uv>#ID3l6P zUK^@j)(^Zu;q0%*L3hH!RbU}MyQI}fd@54#;4*ipSs+pFKb9bEd?$=C;9<@ec) zW646yvPLWh^<^FE4jTr4Jo(MKP^PP?n5vJa0p?&8N;fqsRU3_FGR;`luzCnA8PjZS zSdQYdd$Gvp+wDB3TD6j+*43M#t=w91JJ_{#WJ~MLHr8d)&G=BjVFIN>80;U_*RxtO zBd4zHf2J&D+Zmm)k0VO<4H%fi(C_U5a}QNhH4L%aOe%;tbz~uOmb9{`3xY*j-)a+A zdFqQgavC#-x9q63RTMIr$OKex*T;VNbE^$_)T;icL$U{_+Mw5Mg}q8ksbl5ZShfJ` za8(qzInW%VQ{5mtl@*s72DL>s_D`DRirlVm#wn%j&UCgVwqbn{aMeCCEt8cZaEd_= zh%jUa!kSP@7DD&!??xTg5t-)80aRAF@?{9zd~_UuhECajonT$N8hfH zox5+;$yP<-J&o!E0xpJSpXOD$C$4~m6{oJZbAX$C%7{zA4oqgFyKU8{&Jg5SrOvRb zd1T8@n%d*CWIC)8M7ULvKBs`h;Z8+8o0BuN$bHUIIO4TV+;xBG%4J0tT{QtuxVq7G zKZfbb&+VRPDxk8pnyWSq)6R}#jyvZmr0PmnE$lkz6dM2L>@+-yAu|(~9Tv|RvbqSZ zwrJ3u6BE~S+==VKvRlv|QXEIkq;Uy%;7VT)D5{M#!9u(ff%M*Turq~V?Y;8xE7Dg- z0()557zPGNpRm#6k`^q zQOr?1aVvX-I-#n3XpF&_%F7)jxKD3(P?m2fp(P$?CFRMNbx;GeC8Eb`)a6$8rHu5H z7>v|C3T9@GGCdP=*}<(Y3DvtZ8)~w*JzEN1WT_Z!<)`jqs?KhOD>JImmrr&Rn(kip zXirY_X4JK(S=Gm;a!RU0c7_*B;p`*85nTx%COFDqC#m-Eo5C&eObOF;NK*F6zCI&? zRgt)&BJyD1L{V)C)BN=sd5CsM-JU?Dpf)XENE=_fdoLS&4nQqKGA zriUjLGyi3Prj4r?@DQ+iy76qLEfAEu=yQjRyeAF7 z1?DRlV3l8-)g~s5TMUu8gRh-o1rIeXV@|3%!Lt4#WyefX(RL^I1440>I|`zy1-q$7 z9_}hIocLc(0z;qHLmE1qKEc4q^il8_v$=A{ltbPRz!0P`HS)mpv`&cbZeTWKWo;A? zdWDuW9?K@i3@){K5K}(1M^7fsBfp^|mUAO` zQf|<$%6Hj%uM?D^S6$Zcz*Ov}=%KxtscZ}7QH~a9)6bcgY&WX|D-YhrZg6n0s~8nn z9qb3FGC<$}ot+^3o?T7{mq!HJY|Ic;Wg3YZ=I_0Ijq*Mr93&y26WQ7!X}l-_yB_!&3Y=Wcb@6gJ3}G8^W2c$ zc_F2DUTo1jFOBG(vf|MPAaRz&QVUMF_uFtLXcF07x} z!$U3%mV{p}hm~*v8ik8#gnzKlCD%giuMrm(AogV3iE*8aD0wjE!di1+!5kQrGIbL} zIk4UwSZ59lk!9NBqh;aigjMy&eEAeP6XT=mOx^QRIj{sU{~i6>+!)&9oI&_+kGnAD z>%TSa!axZBElDSKF7x&OFyO+NuRqoA#LjOg_WigEixRsz?ZUjoZb~|_^G1l>D4ZB4 zL3qWt8v`YL|Lk$ft%?wH*YB)8>bl#UD~7VL_H1lpC+&SU==8xQV41qxA(4q~%VBR@ zG>4ow8{@jTOnY1&mxZNrV2K=9Yc|G(ZJGAACv#x299Sp^CbF?@=^R*J4y-F1<4TXr z__*LB6XOcUEUY63)&k7`O;}ZbJQmIg5W5VK+Zfl-2>+!$E^Lt4C9vR-gM{#3H0;8X z#4hY~VqEDW{1*rpRzxfb3+hkC0!zYwev1q1Cw4Bpt3S$}9RgM|-0sBAN>gsnloMMy zLb;57AI*Vzv#}jHbT`H!mvJm?4FdB&)noh?BEGF4g#T$PW@4M!M*e4oQ*Ltyu_0Jh ze^Rc6*mIC}U;$#!yX>7YO6+egduKpG_+N}_)iJckg|@=~lFQy1Nn$U%>}?q$_IH;( zE_@aKS6ueCbP{_t;q4-1dryz3H;Id6?L+%iiXGVsF8_`jdIYh`r;o zcSeZVyRA++u67pwf23R(DB*u^#D&45@V`Ig!eB}GKWK4bL1OZvT*8cH6ZVAvqhY5U z7jz5%zauWJm)NK)zB2@|Pdc4)9cf~py6koI5&JCQlItS&dCY~i6Z--j^~d-+qQt&* z+w%e|EeI$n%yO8=2(dzkJzQB;_l+5kDG_E}SfYs?e;1bwV5fKh+X!~NJ$lC{xQgNH zhi9b}Ptatjl?yUOW1z)}P3X&(n*c4*a7)@L$Hhxo zx{%29F#!b;jRirc?tx444|x@;YiGTSL+3Z|BxPIn>C^%;Xk6oiA@|LHrpk~b#%f% zuiq(Go&x6Ef7D=%%k!h|F$F3vtTLV)xG)YbeGj|C*-fnn7QW{K5RiWir;@IH--0s- z)hyyE*!m02*?KK!nH(3ySKH)hXW?amvYX$~lKuf3n+NoiyR#XShH7#eOe= zx2N!gapmT`KtsXgNaLRP%B7B(-ImM2GbROcwYczo+mWAIhMpMR zql)VFsKVFP=StL+yVA_iMs)XjdLLpIHrqLqoYKJz&(B%3r-D$ghdl5G}#}ueHpo*E>9In-`_KkW$ zduNtHiaW0seVeYrQR0#)$>o@4)qDbvpA4b-FW8z zR4=)|#i--=4J8je`x`Kdg{L*6BjcQ^2Fv+H#sm|RQ!C#gT`o+(u5WIq6H_BhB<{e} z2;&>;(p}mI-O?kHMvftdii*aJ!!%?CI@k){l;h4?VRrh}3?)-ad zBY=XnkQ`*155|NKHz4I#z(mOt0ql*aZ*JhlKQ|aO8y1i;UQ8V#;^rN$w!j+Q786* zd@Q|xJcPX-QS$EuB}cLSdr*{oB1nA#sZXHysh8BJDQt*rRQmhOD@y(|4E`{ApF{F< zNPZ?ge1SN=h^r5W;NJmk-NHA9{(J>R*h>rf5fS{`jx8eO2W;_g7q&QLSWn-0A$;S8 zz-JD=-CD4Dfu>09p2F54yk8EG+M^X)K=}5IliITvTT;mHEeqe*fb2aeeETpX-##&H zLE+n%8Ts~2Ve1gS{UmQc@b&|5pJDR$AH_Bxd=pwoP3XqfE_}t3=ZOfPM+jdDE8#2Y z$JQm}*Pey16c+r@EenxXmc-U7eC3^_%7?J^2;amssXz!D{;!a{3h*kxn^Z*Jq&PP4 zrzA*C8Nk*peAA>}5O@&i^ay#=JF&%tuZorTRb#6f6uudP)C}M=g2GqRMXDx^tylQ! zWbSqC*oz2XI7wa@I^mT1el`AuUL*9H;^Z|!rzt6XGy6!*64)COzKD!7631Rh_zvnO z@1S99eZt2V4&dJ|Y~UZ(L+Y?mYy(1mks1F2k3z4xoxEn~GhBIBfG)tBXx8;wuta8mb}H_ zEe5aEOI|B@t>AsVgVfjiv2_U_pM2rpVQhWEw_IksJdVAP@Es$gJ_h(Pox*qAASGh~ z?2UjgsS{GdcLL%$X@tC!qu7en7qf-04ag~j!WS3h#bell!nZ>DThWWXr0}hjQLhr% z8xp=X0ZOicy){wcTh~Ks-6*yJ;aeXfwLXchRedvC_)de~sn9#Uh`iI|*h0d`QzicG z!`3N$8`GpV0pEoG&uAfaMmM&0;gh#%d|QER85F*45%RV{XIo5tCtLW=EW%z|_!5$r z051XFjxI{>0KTJF_|6(8b#?@s5WaI;Nu8U*)**c7%ly6p>ii+$yI_>O3tO;xF&j>j zx(J>x0{`M6QkMj=H!6IW%4{!9Vy{)m56y6DDjL1Rm=ktW@>|^N6TT}X^=*MYc(^i3 z-j!Y0;+RKED_xN4>QvuQ7rv{Cu$LCTt0R=W8u-;QA-@JMeBTXVZv_AMlXqPUHZS<2 zq`G0H8`3w7A$9!_wjNNDcOxWkgyc;!_nT7K>k#rQ=lFLN+ko(WU+R6o6?*~UOT}m< z1q-Q!`a-$z{Sf#M;Qf{$dA9(+1$J*ulDc&eTS|R-T=;GeVh?ujkonz_#2)PS^iZ+~ zcn|#DDgE6E{LX;z-6j3q1%G$J?%lnV{4ut>VfW5{QulOVivsbIy0;fwQhi%q_xP_zev5ufIn6we2=$K@^Rpgx2rF=<6rn2>=!;hau&Y7 zwqS$ZCtFE9nZgFUPf34I1Ahwso{|2Z0sc%>_@0$HJPUu%!tT%@^_~l04|bmql6pRY z4R&9U8NC4fg?`9%k@sR8TL_3C^->ZWdh5C*sh4|2sG%QcM9E91aq-X#UJrTiwTRLQ zUg23bhSWcMMEUnRg=dZAeKsgUGY3F17TlH=4KMZz-{0xo?-|0@1FC~mNeo+1`2Ebm z?;pU19IkIARTdEb(h=b=XPo}>G`3#h_qC7;M6e0ruNWXz>BS!E^7#;{Ngddt!aq4p zYDx$jB7Bk6^-t}@2A{zosbB&d>N3(xYC3#P?-%~+IH_v*s!qbL^j8C4Glqn}R#LUy z*lULeDOm@-I_QN1)WgNOKO7bQ8tJcoK=|t+-54RS5#DjW@>j{on$p6L^Ob*=)SCsp zSP?{ zK==>sCT}+MWc-d z$XnKrtqc5iQpb3Oe>uDy+es?cfxRBs4Usw?`0?<5Vvy8{32ZIUZ6$RQJfD;j{*z^O zPl5GQfVRo%w!unURQTgEvN){7VP(Y#^;QC3StR_cT1c(x#?~(Ut5c*_k6`N;{xzed z*233Xukf#vQLh8Ou1oma2gq9wyd8E=mHtkJzf+^ae_DdP(+04??&*W1HUzK-yBnpy zjleg;A79jhe}Ql67yb_E?+o}m19msd{5Ges2fJH(D7j@68|-eA{ z@OMfpmkI0*;Srs*^36`{#f1M`(hAO$ew-=&mk-hA6+!Hc3jeo5q`sZR)++p0c9Oah z7Ow0O{_l(-^&Q~f2?+mHF;Z6nzbYa8SND>-2HVxhkqf5qZwwpkem73)yS>EyB_%UuzN!vC2thigU_3aNZkb9P2kd{ zA6u93^9Ngeq>jB2;lHJb)GbMDt-^n62dP`r*m{Nkwh>ad$FYTk|BhBtcl2ZH68@fE zQa=h{Z$$X-EFyJh92+F>YA1D9AGS{6zdKFp$G~y!^xqR9br0}+kpI11r0z{)>lOaq zVNySdU_*}gMM>S)g)J`p_siTL0DeDme^B~+5cq?zdw+nEKgBuV7WkBBSS%9}q1y%# zVT!z;cZ<*+!>ERg<(FO&!uj3*1L@(Rgb3XYpMCw5e0WHNa8~#KLh>Goh)^$L{bh>0 z!9EeXFC{!D4UzgQcxU2n;__ZnPsT;)N<{Z~n$%N0*b>l)lX@C)Je@*K$B=p!QqLfV zo+zoII5y<)*KShJbz^Hs<&&hIhu-rk*p~kO2E7-c_oVDSFGlg`u?Thplza(#FG25_ z7^#<`_cHXJm681&dTHnl$?CoWy;q?3ywrO&frpDNuq*XmgWhY<`&$>SyaBz}q4%QH zdlP!Ny7s>;^@gE04863}d#e|Z50ls=?;Rn+#|_{?p=_gfTSa(bA083LY4aZ`5vmK~ z;h>D{y%7#Zk}AZV`of_4@VO|(HG1h-=>4aIym4u4 zy+VEo9RJ3#g`g{WyZ4FG-8;cgP;w8iC>8MXd79Lo32d0{6foP;y@s&$!0s4QUyETw zoL@#r?bC-1RtlwF5u}O|c#J9a_7|dbKjs1^}!0Kd4GR52_R z$1u-gB}%<$zdZtYpX3m!k|;jJ*)B?bDN?=!Hq?4uh*T+_BJBp9)XpEdPyCO?Vv$XdWf`n2y7k#n}^29JG2*DQj{JxMCx$hhmGQvp7eJF z@FQAb9ye&GqU(p`-R%`=>?Ux-cBN$fX15=AiBP#0jgB%K4HzT zL@0>P{n0Qb3n6)$dX`F?w&ZS)Y<%`99DF!DKJ2z6J95|@pP11-goCynhj5FLJasgO z>;xvfZk6{=8zm)kUIHw3=%lp)OrFbDRM{_F8f~cattnr^B*bWeSK#R z$$}T(9{UysB^+*QEdy|p>(b09L99Kyo8^>G-puo&g`z~Sqa?M-{@1H?{2 z9~hO#7<-F6@r0%%%nB4@avBi2GJ+Fy+}M*7g-}A6m7>xfm>7H`9E2%HT{+Z-Lpc0P zq6U)}z2U|pUicbJUfzaQ;Aq%0MU3|3g>$F@m)I}&T5>(`5t=zF^y(?f$;;-@;eEVx zHo7PDQ7#6#&LM-zoBrXtQK6r77C^+aVZ=P@@N62mE%@q>A?+2OjZycbL7^XYXjNlU zKI+KC1ng#D@==Ey(+^Xh2+$V)n977Gb^jVC%|Dj#05%<-Kqy3GMZ}&;+ZY7T=y#+N zO_UuAZi(=8^zT9{&meg9$8d`Crs9&z|6CZ4LySE;mGp=Ulc~HCvN1T`oOGme&PA_Y z46YAwY8O&@5Oq_3U!96ePN(u}yHi)S%4;cu*{Qrf?80O!Z$@nlscf~LJ)?u&bHaI3 z!Sw^~+=WzJD-^$?Ra|mk(JJrv+aa0`_JP-h$y7K+ReyZu#xKX4$E2GEnolkG1iVtf zn1JM3L*ef4>ak!ZmbZiDYL$;VO*r{b~ykUD;3DxbJh*_Ymv(MSKhf78s)-s)~=-D zs`gi;;*!&;e9>h>v|EMG=hUB-3Z4MEFs6d%fHsB>c5d9!!QO8fX#{to@SGFhg;sGL z17DGfOD=z_IG#n@sfM{}owC!0oHj#eR7 zXOC7F2B&<=>BMrJSLACi`TW!T(OyG0b@y>}9DUg1S*Ve-Q`yfU2jyhQkxK3NHvbYD z6@Xjwq_Y30F=?kV0RgB#iOEzv5htcr1C;bTv4%9mE)BXcSaPOkw@O*k$l0ls57`(} zxxiYYf>mIt=U;CIw-Rt9PbvYlgZi^msjy7isZ5G%F?AMCGsGzaPE4f|blFp_Vy9=P zGQHF2+No3<2%{QOxyaeUJh8oB1bY(TXr5GN#Eib3ikgEGw^ONWcgm?&2@g6kl}e+_ zo=U||&rYSu>acbyvxKoHQ^7lM%z5SfDj3?_Zc}ml{rN=hE}=Mo=%>hyzuglSHYbkJe@^(Qc<&0 zny^!Guae0-2g5^gYz;FzR+HN4L8$*(!@&a`{IvKEY6bGCkQUU+*`VoyyW-7lxwXX?)zqkjl6E9jQFm znK%mEX@JvtQaQ$IXgifyz?hVnOyz`>6H^`R1IhD%#q!UxAoaVBpQnAys zQ^Cy{{b#4L!78gf?62%~q;hR)_s^j)U3jh>%#+HdkTGeeaz?icldZDVK#sw9Tc-i3 zt5P`=T}Ay#43@Zr!eDkP2}{>bWk=eUgTe1~J5u@lk~yD&TLri;Pbz0ejJlo5xhWSW zQ~8DqQ>}7gi&IXea?zj*ld0J0*{NI-G;($-mnLltsazAaQn|M4lFGy12e%q<+?|TG zzW*v$6)T5W#jCA~F}=zzVD6DgukZhEz;1J4E*cLRQh|nltGT?ey#rzu#)?*;P#S*cfuT-ah=U?drH_$(7*N z0?s)6tPp<~FzR-Q?umg4aZ=nNr$e;UvqQWkVdU%(ZymHTgm`1Sql$;_J?1=c>i~D= zsp9QHqi%=jKH;knU2_~AqMe={;vGq2&knK2YAM;!HwPRc#`Zq-E@*^==jLdh5bv}a z#tw0Qk#QrjF7`#&+(n0Ir)P(Fm!nb5;lg`Z>Q9FFJ-aV%8rTvUeFMC(@O(d`FN&|Y z#ij3}(I`XAKPPd`XTIX9$}R&_k+-<8Yn*RN7JPCGURoDsbzC=LcZr zJgj=tM%}LVeIXadYUdoB9vCokcC{ZIabjw4`h%kd5XTSgQ^B=e<9|K=5@<94&NvlV zht+`P#tzXv*HC@dHNDau!cNZ)@lW3D5FhQZF@$()tD}nLi!NINZX@81JXQR2ju6*a zCS};HqR%yL(jnUE*&#j_wZk!e_VI2TLx{KAmju^#ZEt^n1Gr6qG1bZ0(1TXP*j04T z4OA6f(;*$Aot_=yUt8>OOo&gWYz!gZ;p~fH-x8iEX9`abSUE#{+G-d(#B(i^b`@RI z937&ao*m*dRtpeQeeqeVrR0%+msdWk*p%Y;iLfNTAi{T9tnYh>$IUE!1`M<_R`ZKE z$K7VeH4ViuH`k#khk$ADZf?RGY-*60x>-+5#&C~%TEiIb#qStR4FCG_cu2rMmL%kk z!M?X@#o+!~wr9GG!Tu2r%+kqGk0zZ)_hEb*=|Ew6?uSt*} zBFR|?{lJ6DvJMZ}ZQ-cHoaIN}4~c{E6}CKW;ka*R#jvw=&<|p)7=Egrhh_AK+fTiW z7et5P^J}BI>wuMpw81|shMaZC(H2;js5EsQ@XSsBuGQHmAMYIZ6Nnv(@6`3>iNSC6 z?Ol(dEZ~aap`88U>B{In5IYQC7tGTiuyWGa+4UF#5u+>n!y}PgbyyzVuMT2|dg5qbuw1+rC^eoc;X$ zzlT^9U&9>A6NCGQp!vtBTzzu-h%1IaByz=YTm7SdfLJrW5!an3hU#8pXV=@JMi^aL zhd<@)4~NI@{1{@h@eROy{h_wo*xB_M>fCksi#Jyto>+9!t#C01-~Nl_sYAHqe~+Qw zI<93M9v{jTL*x7fKZT3A_~PJbo){Xfezog$XiA&-Wek7q&K1Mr{nx}HHV`xGzkB>Aa^2Bg(i?L(XA>(|J_uTDxcYv(JP|p5P@vnmG z;bH+kBAKs09G*Q!?Q{%BST&R}JU^PN4nLdx#s!F>MR;ED=BYz->;GPd**!*A#_(ca zt{B$u|0(AW3-Jxkp*%6nZ8vsyy)EYT8(kSgI*}`eaO1w`K7#_-1hv=W%d6{yw@C=XUsl(TWv9s%SSQ$sLNycf$A!-2neo!3H3@J-u9o)}`*F}~|D9B=g{8N>VD zTro72|NI|_p%vfijpT{p#Kiwzhm!`4u8iS>oc-Y^eOu__>-g?(zW#7Z$k?&!u+#Hu zdrmH6__!}u9ag_`;dr=Mimwz8<*7qkc3bRp4ECH{#_&lZR}6!t*H1?b%kXXF?mRKX ztv22DI@oh^8N+9hTrvFV7v;5xVL86Y9Lp2K$|wZn->%1C&&g#BUySC8;frssTnYQf z2+x<^JTa{5)*;wq)K0gBJtt=j{F-%+>#V0o16+x4Ecp5Q!|IX$JqCMDE@K$iohyb_ zpIuP~7smcOQ7k}ZkUQBp*PvnVVUH|_cgFPpgG3@Eh z6~m?9jWof<@xr@jBu@Ny58-cb+KT*ffT zn=6L5#Foe4Vx{m-isXr5TlV;{(=pg{av8&vpC#!{^aqOf#E`ustOhuu5H~u>@Wtc zPcATclV%uh-m7)Fxh%~)WF$`BC0ov#mCpIl(rv)K$oKljDILjOf1?Nx4pVO+Eb z;cwIjtxqm6?9*U|;mG{>K`=3jqzJAwmI7BDN%$1qu%=PM zW!$~_&v8vC`C8!e*QsTu_t%s@gPsMhOGxs!SU4}?GVX@>=eTY%`syMuB@;Xf+JSQ-Y!Px$LFzZtGRV>cZQnafBzEM$SpxHaRS`)d*vVTrXO z>4jcyGYwZu6_+5|VwN9{VzYM!l+Q478kO9|8rtR0P z!gIev>?)E@vTDDME?4!mO}(EUSM`bdb&6^GHEzKZ??G$~NjQSTyc~@i;r@9!YV$<` z7pCKiV|;!6y6V~PcLCScB%SUz$F=*dO=|wy#$VbTlEC%vW;0x$959XBiLoSw$}Mos z@U|^3ZC**>I?J^Ex_YLoKg?c3(%Ba67tY0KTU;Xosy>11T+{ZeedoHx5WAM7b1m90 zoY0}_X`6D?=AQ(vaL}wAFD)Ek`v)T-I;m zC9pf5q)X~7aLo;=z}lvMY4ceE*X6RAzs{VqJ`c0klXQ8&0@u9yw#B8*aS2?b3ud@} z?AT`r%-%rKm68RnWE;0%+Ps&*byb5Iu0E^R+yq<`NV=-o92d^6Yg2#e##aK@*t8k0 z$iKOeY7Pzz>-fdFvaaO3BPl0Q^ zY5R4<@^fE+Sd66c7VQ^K2vqg74K8hbC2&nJZNK_;{EhdAO(Y3NIGVPr1GMetZG%f2 zUkO|>uUR?nHhbEOz%_}aSkMBOwx7Iha19E>p!f+~lgrF-wcGH04lE`7|ZFr5p#EFx1yA>|u-g~8f89tBS zxxL1_-xX5}K;W8V+OF0t>%A3Xw~#c)s$D&fA6W6zp2vTJYd)#^1g<+x+tp(an;wAJ zbdv70YF9(Ds;6ymEr_Z51g^VH+tpt`^ACsEtt8!T)vg+L`WNQ`{)xZt$s2IpW7@7R z9NTRX#BL+$9;>weRAb=;C|yvKPKN%vc|t5?>jdfEop zy)jjvz?C*_zxEE!;${Cf)vsU1AMpvqZYSyCs73v{ z-mmIu8(a^BReb{2@)|Q-{p)@^A7ZmfT3%~`%WR(MpR^MXW(~L=HEqB4S>oaT{T(Dd zYSn(V^?OL$8zB6((zN}$?7g9rfol#)D=pfu-IvO0{@SJ-wfzDDm-hXKe!kG3IreLq zol8>7??2S}dz^pTwz#xC1OnI7^=9>J|AD}@+O+-J zd+2>DVD>JOR$H`RyRXQ%EiP?Og245PY5SF{sgz*$ZjxTHXuoh`Z`Kg`Z2Dd)AQUymi)7FSeO^$A>S@@Ba9&a6YjRnrh77ZAf{j}K$!^$WK| zsCwE4mo~l1!myqz%Egdc*9!B(1Y(zi<~v+v3v3R|3};rtQ~lQ;FNJ`$$@E(S8kh zFW9!YwDFa|wIO3xzfLR!xZdAS(uPKh`lWr>-8S`J8(#@r8xv-@7Mys_P~duiq>c3! zxU_H3+XmN!ls!zskV^E~;3BzrEgnPl0?Gl} zL4SZ#yiT)MN^j<1IFb*4SL1}4c0u+02$)%Z?YIlTeTZ!B>WsByduDKgysDBtp_u6$ zR^x=3_KhVo9n!D2{|`?ZJWRIsEnf2KwTil<3^kRS8KJUcse`Irs@&OsX1|lUqAw#` z$EYz27y!xaXyXAP{bfk=g**69{MeqW5plW~FvmHYSWcUy6mcoU*}G(lNyUaQTbF|R z0BX3p#%GM`%4ZutLN=2ApKx`R47j?P;OY@SRXXHth%F~u_npCYNLtmc`OCOLM)8-n z*;4aYx2T#{l;bWYxO$~GHg3SoVc80@_5Ad69k+ImlC5`(=1?_btd)wH7PVI~^RK#M zW|UgFn~9hE#zRBTod&VT$kt~kyo~D|RNbZ0$0ZN?I8pio&Po~LK=U+-m*=;3={V%$nnB zQFmoX^EGLz@=`hCdNh5U((3I+hPV{h`)f*Rg}Gbx9WfsbE+QpjSPaX zqtnMJxQtj8Tt>e-Q;h49n3`7L+9PO&t9-!sFF|Y-+4gABVcBjwVe+=ewR);O(Izyt z#;@Sg{4a3rZQ6d_`Q|12LftcD+j}S4FSB~zqHS0F)dFjZ{iXR|;HoigzYZ^}+8?-{ zCELDM?U%7EWJvQBfcQ`Rw0hs7jthV7V~`X6(ml5V*ZvJ=bp$VOqah z_(6s=UxkSO#81OztaFOLTGY7|`%8N_30w!H&2U{%b`}or1|xVU zo=UCy0Aeqa?Qo0sYe)UH!{vBTDNn**!@Q>TD>vj`;95<#VZj}*UoEgI@5ddjUweiO z{yM764A-J$t`o#wBHK~2Ij$CUSB5lSiK*%?l_Rdg)W<2$qjm&Gsea*VYgJD8>loAa zt8C#bhePaTvIQ;LFI@Aj>S5h72)@QsAE(rNBUS}h3#=)m#TDObT7m00)Anmk!prsR z6|x;?(SEhK6hMYFUp=bo*8F9}s^DsYHO08Jqw58(f0?#l$8>)AQ zVy3(wwdYpgIXAvm@b;ZX1d}}m^n|IE9+ghCU?w5V7^JV^Sl;js&Z;_&5Xfx(afwyRZf^WU!R+| zKiuPWaNi=^`Bu3Z6jqaKW(=l_W^S)l<%F3F^toBQ`luP;zD>3Zta77m7}d-S3acs+ zS2Ux2Fd@v0i0Z1qW#c=ZjTG;YZA8+-Y5UaaR2FNR!F18g992wtAz#>}Gjr_Qg9d=z zK(>)&VMg1|spZCCx@boGoI&K~qL9wa3pEel1vBrG?V=Wsap}1+eEn9;jlp!$%slRA ziJvetN}rp5KYQL9u-+rv#a6k|Hd|`BF_Q*b=Bm3F?F|s0kZn@V z!pww}ic&LUFkLjGZJrQjrbs$7Pv(bS2rZwIZHnK*jJ6h}nK76yn$h+`2s6`4hi=sqB# zSu&&h!d{q}t~sbf`i&#se-LIqC)@NE4k{tH1yqzJmAGD4jT0(oXfdZg8;8 zh-86ut_IZ^kSu~i&F~PuE7=%=g2yU4}9|W z6G-tT+3sjjy-N_M#q=sgT^yiY5hGwT#2xmcTMxSkQG+cY&ehuW8IdvLz1@Le1KH-} zE$U(d6EEm>m$aj=kJsqI1>;A~_W z{;`~ZXk3df*2U_$BBjU)h&tE;;@x?j7uQyne~J_v$#z%cKZLl4YFP)-5mO@py9ja5 zlrFAV7d6-d;)1vi;>(>EjzNkhvdvFfK-A`FN?t79hs>r#9M{DG2jXAlr+HB`twG#J z(#t7c)L;vU3u|-`r*HEuMv8C9c2Cd(;*J*da6=ta3R=6~PJ>uu(sXOE1;j;-I*5m+ zj#vkX-;!-%vpK|;k46nQF#G29o)C}AfMX4&6^KVxWz)&D+OI;-|>Xs)oh(1H(q(IbQ3y2RSbr2tEJZLB&{y?_->n$J} zyY31^z@#Mz=|YI4ns z#yLi%p!+8Ea*7wbq;zpbh=+u9am98~gDoIpc2%7Qoe|k~W3P*m;%Blgm(0D`;vQI~ zpp6rU3Pf#kzT`#Yf=LnL(E8R8HP`}TeOd?c#ckqq&R@v3B5MJ0-v+%(1>&HvAr7^W zbn7h|L~X4DaYcxSdG%?Px~Rbx5Fe}6L7cMbjBAkMSF$}?X93YT&!#}!r%rE1@uIeb zra{z}uQZ5<$Mk6xh#G8$IOMC^vQGHu`hs$@56dclNS|bif9$HpoXM9O;e&$nk>AR4z)6 z*S(O*G4+~Ejx|y0KMF-ejyL=?;0K8uuM$&lW)TwPSd?Yz?OFsGX){bU;ID=>*?F`= zj(4-ju1V1^x7QBtXxltzj;}Y|l z8WDi=(F9Z9HXx+Pu_?&ZCjKiz_Cy0yKS09|ME2!jrhcqP2#{m5NcS`0FKGJB%e>!U z;TMVQvxJu4v*h?aL5_m3{s*)aa%7*8V#zIOgeW=w%rmuB#$WYhzfBXOA@ zjbwj8P~E`q3SU25%aYxZu1AKPyUI-UY{p*!a&`+c)jNxjASaIt$vLQ=_CWdCd^JpY zqqN^_`1-62QwO5vNw9Zdlc2J+=LIO0LmQboI8M$0EMOfT)X*G4lAMQTnL13S{ZJE} zhZUGQJcQsS+aYC41)%RNNDmh{ho@-2RT4RmtYhAhh(8iqj>dQTPhPHje7@J|-h>G1>{kljd5z>e4+zc_*25Ax&u=38RYD8=?7SdO_Aw&e2uO}d zlYMN0wTy)1g^;|qhN+7}2wt-DzD;tDN+Q%DZIr1xV7xd_j)<^OmnY{Xus%*`xePhF zEDOGnyaH*i@RRKXp>wpKoReVvdO=+UomZiLjunz)pk)l|^$iVdVXQ>XtDDGiU52S^ z!U#2FzcIqpwMcg@^j;~-D2kZtP(LS1%!@XVb6hQ`MyAH65F+HfUX^F;aH$w78NZuqQZ_1PR^C);i%S8Ar)(GUHY$wT(!gkrCW2|Kg!u?)yPK`4) zm8CM|oR(s08ay#IP4?*trfz|~TcByWus*#O{46&T8l1Ef|$ z%gQV{`8zgpJ{ds>kR82sP*0^1qU3yrm|BH&&p^wwex{zT#b3bsTpd%-Wf0!sHZhQD+u;$48|0dZF{BMsmIcEBL$ zkaMk&TpPn*cpg>>FMR+lAEe0nUM*{BMBumRbACZV-^ci@t!tR6Pe7fTCFf@WraqI% z`Dqh5*NHr=OW?0CIrC}eeF1xUQw?2lyVDCS|!iG9>Zt#=yE0Kq06n#e2aA7){^tPEK}cw$+@YVoK3>s_XTn}gXH|NjCpvUI)4Q3dx5MuOD@Sv z&YyD3+f4WiSbm5x^>Z2_O3r3s@7FLnf598Je}Z|xBm5?jV}Ot>0OM~B zh#??IfTEEOWRgtn9z>AH)nD*-hm<{ol4)d~BMRTh z`dVmC#u!k@TMgOAcyAiD{-a{_ahM8fHCjBWE-3iTW2oF zlQbgRj{1+N1*g}=wZ9xkzQs^65ZPf-vK8;^FiQ6PebVL=$(KSQ4Q^5;cL|v2+@<SR+O}rhfO5g56(4=A>X_jJdRmaXPsGH zYB##i**(ZNH-rZzq)PtVZ=$oTdeR3Y$u}p)k84q~|DQ2cvj6*ewSIOv>5PibziBX$Y`5aL zUts+_Ke}DAD*1)iM6&GJwbvm>=f==^%d3+A(rQSbSjnH6XV2+ELq3=A0u(sgmytBQ zM%5{4lAZUTzU(FP9S(n<9AKT0?2i|%T9-7*PRYt!_JAbuK%popVY0ooWXDCpFPD<< zFjzl6t4exg6Uh##HEYVrcW96YEvlp|Wg^*r<$#`_lW%C0hd!#LEnp(quFC$Oh2%Q~ zFP7mcRT8rWt#OuZ7&i85@*SMvL76JKM)Q2G)PAL^~E5@_YLAk`_(ux9P@og zJS0=&#DLVd32}iYHBJm}ecvPQ;CL}k84M5ZfTv7ZSK>E|=-B%;t- z52MwzVyeaWVmVK@C~>HK<4L&nN_69XYv@3>ez@l0C+WfW+J6m^-^q3>dfi75i}R0< zzV9~-8hPSJi4yr#HjQEWM;F(BSd8Uf7XIOQVD0aYs1nNm9Ct7zczQ_Xv4XKY zMpZSJPZ8IrNi|aQ*XIF!oPsM~u8&i2eNm&vF)pb;@F^3CTK%#omhZQI7R3G}+r1c_ znfa^uJhLth*O%~y@+;vgwh$c4aSE=l>WX3_PQkUYR*e(54ve(MH6;1Oh*8ZD+e$X{ zQ%!L>%>30t~o8j8+u@9etiEY&XrmO|7-?KUlZGh{KQa**h zCMmB(LpyO!ZjAKUpD_Dh>OafsdEAn2TU=XZRiD6>h@1Iq)yUo(l)}dhih2F|OJ8Pf z;IIFB^|<=KX!1N}G84LujsX`sGz;p@abap$)uYufW4olZtHwH~JdegYC+a;WmsNf2 zFWWSwBcLxwn*Ew$U9xJN zz;$Hn`ei#Me1fxcC*VTEcDvUcm$RFyhA}9(Fcq#wG6u$_|EaiI#woaZHmmUh7gjZj zt9AXCN&OZa_Y&ZAr2e;H3QOOdB1#kiX4=){Y{nCW&x>6Hju&wej#Ii2YMdM1=d}~{ zCrpP5I@6C9I-ZR5_{8*9%;A`tR(fWtN^8?fFGrPAOlvJZo91;FE!T?@XTAl~Sb2Uh zVqse8KB_8r&b0Ot5vEfSo#`$I+?$8#E@T^rSv%8Q56!Vz{%zmkN`Ft46S*$-k2y{_ ze1unL`j26AuY^u4evE9gFnxH4lk#upO%G3rg!o68zA0KVy&`h%Z0BFl*_CXQ(-x+W z{GYk57S+rw*UCtP%?s1#W^|_C+uZ#XnC^z}Wm-INr5b*W;o&kXYirZWa7Z<6A62e1 z-R`zHHafKHPWDkX7P&qSkCXDVa=5i=Wz1GGeX%~*V^#(R!E_I@U)*S6`h>#YH?0gT zOQtUglybdHx@y?eI+)&t?3aWsOrMngU#2~lWvz^UOQtW)l}xXQ^!xnFb6~nB*)O%K z;ivqAvQ~!ZCDT|cD>f-OJM^Ft?+%CQURXhE(WIb(QyS9K1NvO=8Rtgx3^nS1JaEc* zkA=COD9`$tNi{LodS0E=;QSVNax`Si$vzrE-^{3R9NI8|RsM50=OzqruB4lR^iM_R=+(S z1DAIF$R4#SENuX^GjOb{@~ET%&N!{G_D>J!GpIM<^v8<0MPXq9T}`gRsmtr*%wBnl zca*s&mgTfcyK`BynpSuR>+7m__D`1&zV1QDN?3NcC@kj{csnS+wt=Hh~K>sa2(jfku-`ewZ)(^EZ$;_s-hkBy%{WLA6Gksb9Ngk=W zuy-zH^hC+@B$?Imk5%rJX>7$43Gt7}HTIKfxxW0Yhwp<<8QaXPdhg1z4XfB`)4Hh% zVH%rfG}CXN_VQ-vtiYa{7A=_)}|AMX>6g?96lxdHBQoKSB0IGE#4EQvYwe^v;5oXvc^VDC1tUOV^^eRdf>=~ z*FdKmn zFpZsJTCV%qk3SJQ@l4N+o0~2!nf*P}bHfJHcj|N9_o2IPf$3`OPYYO>p0|T#t*rE^ z5S89h(pc8XR4LahA~V08$lZ~_*zjicaNQM9ky|-jd7GJ;z9*%o6%NN;MykVCL}oqI z`yrU#gY0()Epn|T-+9x@Iw+eLrsvn|OrP7(V+c&|iEYvi7N!^dPlqeHR+eDd3_}zS z$F6Ip`6o;-)IZmc1RXrk+Y37dt)A<}HA-SdrS+T3WR4LV57o57H1-&(4qqm%mTlaS z?v1U7ExHe-Cgna-lUq4l=_;7y+PSnrO)E?_?a-Ezg=u^epqbux^iL_6_Tfu`h=u8=YgOdicesgZ-D-<4ja|5!>Ag-n_z{>s z0Go3Q7N(!e{C(3e)Tn8N>E&Ua>B_x_kAdj}@x@2X!gRKvCg15?;{y^ktuT!p#aga! z-f~bQO#89X*lT4vt|s4U)6SQmT=@ypk0x}cKikshE0{hAU&Pc~n0_UpCf{k(y47}J z8sFe(xnA|lIX7)mUTyySrnSX?VR~gsXWEmHc-i6*?9jIAD&&HH+qCob zl$utU#!hc7*U?Ybehkw?u>stwtMEpHntZ1nj{W3nT45R+$u-jlJaF(+vz$e)wMFxtH{DImw9-pi z9cZs|swaU+1%`C?qW5ddGMlI_;WIq39^G=PYpPMgk>Vx*Z5Rk4x*H3tVfmX1IP{a>-=iI-2Zj^2WNP`b*b! zY#Ur!hfd&n%M{nsCycuXxQ-$FTUNNV9#-4n(z;v%S3|0`zuqm}d)B;TfeUYzhOC9Z z3>)Bz8*{XG<<6Jmx`bNq1g^E=*0?^PnUl_|1+HVs{(jm5m$t8?E%`{}?Mj zkNO|SDfRvfLi-<{+zq&nBm0Mq7Pzz#a0!>O&h6xeq4hBpukhE$$=3dQ zw{Tsb>(>C+@nruvV}Z-0e(Ac_?1!E5mu^F_z=hAgT5b@vzgw8T=@DL^JAv$l*AdF6V|igTM08*0|Qio_sa>BXIqT?CUJ*J-&QX^=P=X#Wocef1Rt7 z+fMz`HWCScec5^=rhQ#3GeDV0++TRr{U5z2W%hLaX~{l zV*J?Zd0ZEplc-(|T&Ixzhn=Zk+RB`UOWP%|eO%hkCgHEmruFOeQ~uK*xK1VePdih; zCivAnYq%~d)#vTw(zZPbT)&#uuk}yf&3)6;$o|XD)UO*;t#N7l2DXn&+Y=>l{oWdv zG$eV-<`2&TuG7hm<0H)Ly*76Nd&T#*HmRWbOB;}EAJkP7Q$ywmqm{s+ZaOq|oG+f%qbo;op=>~yoo5}m}uf$2eJvbG({!RA3^5(eA`m4Hm zT@9D9Z*ASKej8Ks$+#Tt8e93xQP!{|{`q*|3V|E~#hr3J2z*;cqvzdC(*e-yaRBuD#zIWD7bisK<|f>Og}+$?SFukXStR)MQa zc`IBFip;s~hVOvuEOK&Jk>U%NE5_E*ou;0GGJ!r(dN*u}zM#Sd584%g<= zdsO&qS8r=vJ$GV-sNlU6h)n6*j|7-p#_|TMqpl!CgWP& zL@e9eIe-0u22=S7TynUTzZ|Ym-@V^F2e?L%1IHAY;xcPj9fo&65m)Q>UbWBvYyR3& z@~gl#DB2p=z)1PCzkiKH7m{OO)&kd7N!1VC#d0*f%Zs>PPwC`}&!e%ijUJZ~}{1dpUn_J@=9D6%( z+1@aC5jm>;7XH%a9ZR@$3wT^UT)*@`juP^VBGdr4RR;5-m;Mv-IB zkP!}6TaRkMW3NljW{!$;oR(FN>zhHGZdlK8N>N2s%Zf|(Zr$~B>?!qL+50+RxR@M! zH5xIfLouW7Viht>UlxnX*o_cPI*yN1L1?({3aD|yCHtBbRZY{@$E4}Nh0~_?wJNIh zF;x$AE4YkUi?|F$TCCbetioS7)nR&}#IrRnTY zsyHQFExKKbzq+D^DnH?`Lqe@_9b8+V$=ZSIGIAW8GRK7jiBvtXXI;NqG^dKcjLoTn zt9z-=30#M@elOBMSMj8lVw~cy7TrMwm$BJWaP^9D zI{pb;f3Pk{riaylPCp1vNhZioXm)@9i|{eRBp}$K`cR`bWRa{S$B^Dp%q!X+ovwXQ;*c)s)ZmB4TnIgYP4Vo;m(;$b$N4XvnbrE0(!6qoF1 zQSBZyxa1_0N3K>LaYplM7#u^66D=OOHZQ8(n+&*cgk#Izu)`Dos@v;l1J~8$IK={2 z@sJ{;zg&OcUpRl&fa{D@D_r)!5~oETKMuIYlH>Fy^Kvxxm!WwmmZPz{TRw8SV?{*$ zIy2J>7yLD3`pf47*EQrg)1rwg9u#Ht*T8?^ub2D=f1ML)jqB{_yRl<<7XDgtoSiZE zmt$k;)ljPU#-4l8U+kDmogf4M4+_5M7Q(R}yVhabMpujcE>aXy*jGVaqYHtA-) zbZs_oySQ+^p^9IW;{^?^{dJ-D{M^jffC~rJUeIig%eZy9h-+I`)vdM@D$W0IAD6c0 zMc^9Qx=FWxKGrI{>(@CZbALJ4$J8=H`6#$rbX%16{=2YF zuGl3t;ul>R=d8RcCvaU+XpO6T?93BGj{(;WI_OSnu%TlzB)wqL)ry^;b~ z#H1@jk=3h4%?GXt zCLHc-;V;wrWjuOH_zS08s`fNo#%`B_>zc4CCvc5#-A-WWdffv*cL1&!ImXN8{=!+` zsvgZ>+RRGHUoB?l6@Qs^m8(lW6u2f(Ykzf*bvy0jZNN2=91|?M%4Y3^t{bl5YE zk9PI3uqr5U#Y~3!H`Ran@{i{M*CcY>WYyj)$6&H9&0pG#bqUuF*RSjI23(VCTKj8q z*}Z4^x&4|)wafUjTfy+_<+di(|SyfixnjLQKui1eSLl!pxSDYNP zV-~nfW^avsvf_J4>nEtVaB_1-#lUe&z0bzgIDu9;e-k1B{z?++W7Ah=R-bzEa-XI73>GRg@#nNLJ$nE?m{o5*PZ> zlMZ;m1zfk`Di1QprORK*Uncz=)fWG+`m1G}z@?k+6}V8pTjFvouD@!-Yga+h400^C zcn>+gD7DWeTsSjYwaFMnIpVZ!eVll2>wLppfh*m*zlwQ)4NLyZpRCLxN7`$S%d8xY zD~m;3#&?rtyNY{W)O-qD50|(0*F*X1HvI4#a3#p`aE&=GvvKW?wqLrjwN{SWS3v^T z3X^`}iuA{kvmXMk+sUz_@c)EsZK+-eT#u((`|Gjf=cnE925`+L$75FQgvru@v22Uw z_*SWWO7*M73bE2o9GW$hke`}S#ItxV?RNu_qsa57?kHxv!~)x z?eqVoa>P0AYP|5*s5ZB+@E zGc2k41g_^y`V-H}zq+q}7r5q<F70^55-#J;h@!tVKQIPsT&D*NxUwd=vW*vR zIPhlRnujZ&5*D}&edc008v52nT!!)QcKTmusIbJ6#*hu(vd(-iI}T<(y+--N{z+c> z!;uOUV>U#Ke{3wnA2@Sz$cFIdXJ3Wu+ucd7lO*MmtM<1QuY{@`-$aAnjFRgD8N=Ah zc$g|@G!(A`shrtNl{2$cc~^>gcjXYkpYLUAehi_OD)z5qYLP^h3!BJwVUnrE5rjbT zLaNFoDXLt8m~@PJOJ)4kT)gh2aw#l4)Bt{%d5U4zWS)gzUw3nbr=X6lt% zs(d*`72O5u*Wy(9Y5{tinfE#@xDx6SI)gC(k;yhH9<*BNZ1d4H1bvLr6k8!Blsds=76UFEfQJt*Uy&N$whDswdLzk_W$rsa`b* zX_EU1ExSdjYS()3MY_IOs_Fv^zlwDIA=$qSl8m}af=&ro);2R`YoMwDL6ZAqn6f7j z!jMienE zT72=_$h>3g5by*%Ud|NOsj7~T(ZDOSOr21ms(*z^xt6Tz#Ae;KWK|~>#I!@Q!urZ4s%k)Z zTKMzn2K<$xs#SST_lzHbsOs4uQ_mtEZGP2r^-MjF_~)SM1!3U@#J>=rs%(mRS>z#` zqpH=!)ao!o4OP7qVd^Eszl5{l#nneuuOJ>@i78hmRlN!=uLg>jD^92ZCc;d|jRlOM|*Si7cy&Xi5sOpU{Q}1LD z;^aC+qtNv{L484>{Lq``bn6QUIdXkm!_)@YTOXyWPl>6oC93+WiCmv# znfg5rDoItJdztzpgy1FDXSGai$x&6Ik*dB3GPM;_TkFX6c^Ok^g{rnn&>d&$zZrx$ zxwvCRZk*d%^)QfT{b8?f0lL`}ZX4{`U~iMi-|k*eu(xZPdG;oR z47q;rGUW_|ibJ=^kt~zj1$#dVssi?0S#nFl-k>PC2L;LXlgM9XGbo8%zX-~mBexrQ z*xbZAJsD87WOE8F`^0JQRS|O6)G%*fq(dv^-mjUd{euV+xrd5899m26LuGRDR4lm< zDdE!rdZvP~d<@>Ad&ikNwh;jr4DA(S>Ue~U(L&dVbhSxx*P`9+7-8PYS%d`1`wC>I z0`;j9$p<8ucUnC{jAXx;sndb_^c>0EgeU%u9Q_+D=3xS72=+p0k^?m?d6rD>GtojH zonq?jI6{czpr5I8nh-K1A0K1tJlH!A_D)PQb$%KlO7h9gOrd3ShZ{*gL-0n#$vq-O z@|l8nVH3G8%s^UD7X@g~5q_kIaJo?`a$kg7C-xE+>Y!ylq({~;?}{||5%7i1(anf~ zz5RpCi-ZuoBo7guxC)Y2MZqsHZ%l#QqqF3`GR)N27-HawgECBA1MSyjNIpbpxehq4 zBa)A3VqP?dkVFcBa~$lAh2O;Wh3@NtV_X)}0_P2lH6$do zBm(44l#}~5k?!^c_^>&no+W1&5OU<6BQrH8NbWn}!Ly@G-4#VZ%xpo;m&kp06S>YW zXWrdea&JW$oh#BU4v~AY7t#ghEonpm&htdxm&C|@ZyKc?XWsqb-49+kAt>-30Po%) zQ|Sysoa7M#HI6`WFO7pQcn>GZ{cs)07v@>=;Q+apfw$Dl)N=5agLjdzupGPIu$ zqfv4{8YKDR8kT%iCii1O@QJCF;H?C&PM}^19{S4eN1K@UR0zRK@}((3AtvL6wBW5m zx>ZPbd60Qe=gIv{Eu?cyJr_f$CHabGrk-sg_w#;83o2Vj?kvjv$|Un%Xdw5CGNc=s zdMSc{dUjQqsnw0-URwj{EK?uC-iNSvH8J%;p4=aS_kIIYAJ-zth?SW7B#Qvl*9MsS z43!E!;_HrJbWa>*;{|Ytv zMn6**_0#qrX)GM_00Pb z;r1}elSPi2VXwK2B%=baycpPxmbNus&Z{*u@Jz(%mDl^o)RybcR5!M|<9(yCnuZwif6nUHx_%qIuc$<4p zX&`xpKvsp^Rv|}g3e0miA!JB?RABK2$m1<1`AvbP8tJODBtIsoJ%Z%fLn8T|Jg3{U z5g|?T$~va@2I9TTNPaiU)IM1Rc(3*;G^ zBl+V5OCATl6C2&$7%rGJ+5w`NbepN97Uf zN&Y;_)G;vxq+6Y5Du{GJq|1x^9fx$sA>GSK<{h6$K)NqP{{AJC=Y(dGUlsW~v7S69 z#?WThvScm1+qVgPf$ZcY?f-ra%1W7^Edw5n9ef{K<9XIjNbooLx(v z5W*?M6nYPyGZ8|9cb*JB!dW5aogW7u;cSsxOv`xAZAK8*M?}F7k>|VwOJ0~KPnd)7 z;6*|5j6k?R_%jI3qqk`#GH#SoKW>M{Z!wO~UdQ&v zH|3Z&wGLF6TQW9^UPq>Cp0{@WidqGF>Lmv3};w3Xx|9w1{4_CxMt5 z(83Ey5P4dm~fH0z!`DKkAse zJBa{vSErd;;71^mw-f}GC(ryw@+=hT7DdUk2==xL$rL<+v9V`yo+X#W5Riv$ex~kC zf|AK|UlUXJ#}Q!tzd5EJ$bv#1mt>eq!wcycRkRB+wKN2(7P%6o`EUby9>y$Hd!c0+ ztUnwf&vH@jE6VX#o+>&fIbA*UEyrDHX9(VE#Jt!*6=Dv;vpNSVMV=KwmV7yb5T}YR z!ul&QP_X%+%)HkM2sx_2SAC#fuOUwk?;SDD@vMQCHDU6+A#(d>fIM%OQ^hU;mV7IX z5JeqKF!gpb)ogAi&pRRy4Z!&h+Utc4%zL*ML8gJ%mNE5SggozK?PZCe)*^pv^W^zZ zX5I&l_$x@Bk7}9vD1{Kg@p*|WvA$#&o`2+p`@z>^;3X6Kb4bbbAZ!r&LSkJ!Yh#dQcIp+;K8WK->GaS$ij$`fr@P zWfFM`%=5NuByal^?y!gms*b$9{8UlnWvWvM!AqXcGfZ`XWEXfzjQG4%ATNcf;zW_I zyPv$>(o`{|z>+;MtJ%#<6}1vmyW|n@)~;({suwH-15|N9oT)xu^6plkij&z(-o6=x zI92#Xx_(*m_D7CR6_Qe#yi$}Z4$85l4b%W&IlYD{y!*X)_g5SeV#;1mUI%LO8I4Ri zlL&QGF|>&(7bq9(g%cij8H=rM+#(ngW5Yw6=8v_ zCP>~Ii7Jk+W66C%?VF~G5%o;%UyC49#W4k@hJYGUPZc9WOda4yAgVYv&D4RQ4op(T zs4}JwlF93Dri$bJOdT9RNKwVbLh{foc@Irc#R)m)9R})fSf~@$18MRGqEzvOkPN`y z5y<-`BJW2xk@x5fN>gA7BJU&XsN%9DYxx(f{|i{IkeNCWT26$Ph{!wM(cY7wR$a`rmRoo)8bsh3>9rAFem#Jt2LW(Mq^-PWTBM?>G?Pu!x6hee5=8N1;AoAYONEP?gG4DoL zzY(qe`2tz2j=b}chlS0|o03O>y;PJby!*XV{Zt{^d2bwAra{ZSBDc3d%Pmo=xW9%a zZ-wNokbEG+)C@@82FY}QshNE}i7FnBFm-zqLWU}q6_~mMl6OFId5o#K zkemz2dSYrGB*4N8uESuna2_=`Dq3rjugVer(yE`hfpd3=6#;V4Y*lI$3RuS&`jQSY4Uy{(tQEy z3-DeRl3ya-mo+r-dSPJ$(r##=fj1Fr`5N}VE~9~y%9z>+4IAOlDMIoa#56UK_bZus z-$oDukQRRV4*0)A{x>!=?|Wd}lp^mpL8g8TlJ|!&q#K!PhGaAT-xOhLGbDdXfnUSa zFJAKg96*W&rhd&KCJ(-l{3A@>-%{Y0GY{`*@9*&EFZE1eM&7%%u6TXD_b-g*zYG>H zrT1=0i%aR9-*eup%kW%EUUCuZtZtXZjob-x{#nCR2l%oF^BHG#$69eIy|YR1Iwi^F z3>Gh?ukM2Nlkaon>cw8FCd60xi`U*)cg2`vw|May`s!|t;u?DA))-6nfTX7pHw%ZE z+9iXV*r8Lj8Of6)DC+y`^y*s3BIp#S**_)`^ zCGzgfQne#RgX9?VVd+78$367yEZe= zD^azl3Fw5qYDiW?(j{;XZl>zNS!nXJe>ERi6k=M+ht@C8+wOFf=u=WNkA-7HPdqoebV72*(S_Q(^hk z9H<2IPLCq6rW8|WNL2lAgxWHu@NTHad_i@s%+#5AgnFbUrY=oU^<@aB#hJPSI4+0Y z)6z`gZC*V(1Wm%il}%KAWd@p>nRgW=uLNK8ud5^YYYf8aP0YKx86gX8Nv5u;LBRi` z3rt;`Mu<{%B*fHpO$g8#i83|LOV!Z=(h8j8vs67kLDgf!%)0^M`UX%jrX~as%8^!L z>PBd|5!RzZ=S|RXQx25SIWa`l6QTF|8kU@tM5u$d2vd_A5z^39&(zJ}-3;EijGzKk zJ++>yW5O@-FjdEEpee_^Tbd9u(2`*4)(8Tmrv;h1t$>h&bOTc}V+gfWJzXG6c&U08 z__yYncRRG-4*rZfrta_~5cuUx&B-Dps5+5kY98X}Hd6I$;g`FjRDCDXPWCeI&Nx-y z4av#G)B>5R=QkrCO-$XBMu7B`AXAHK5b*zeA(?`{6!;579+rfudI|UoC6>Im2_XaN zEK~PK5CT-aSZH~mK-CZAAT9EjZlLOPstmt&Wf$X)mw?#Dbpb}v&4k-*N7RDT>*Lc# zZ6qHWGfWRDqPPP``4GS;*)wtUt*4N0K!K-~RLP6$Omyy&xb*6W$Y*Qj=_pn5I%U(H zQD={N3wkesBnFP7>Q%`r!zMbr+t$z|@<}o#vyfHJ67C^XHl`VMcKf9F;<@DO@8@YV zRdTFZ-n-5i`TP^)>xV(?h^Q(#F>Yd=7E`BV$=5fCNw;!U@P%^2tR>2O2Wol55OSr{9nKWi9!7W7vI8rYPBeT){-LV~=ge z|4hDJ(>x8S>fGJTOC4@LuDzRl0HWel9e<&MCjn>=0@bWkNkgrz;lbA78a&xnZ z^>zn6^w>o5^=!a&Xi}BjXr{Al#nHQ!k#85&rP@+y{;K8Z(^#o~+UgFULB4&;c>WyM6$=T*S^)B ze0xG?FX4H%UZdqmv)=vC$h=#~w?_>YAR?+x$xLUr(eu`PK)%5N^6cVOB}bV_c0K*D zUW>?A4V~SyMM>KPGcQqtv;BAE^J3bhTf8XQ|81>|G@MP%%!thb*N{^%L<4NUUFR8i8tF=8Uw?(jLo)8s=33=3MS zU5gv?9n0eCv?ulBHpw{RkA8+ zV!iw64P&~HZw4meZ;c`eyHY%wZmlEt4JDj+mdZ$%_b#uE8H)GO^aNqcfvWTCw298nGwk1=Nj|*l z-Q$|o9Niu?k?hp?-dUHCFP_JShFDS3{<@jYj>+lQu7@NMHc_ZL*tt=k`{HIZz8;zCbf@=Xn4dq!H-d83)<+ePLabQbw;#)1^u1N_+YDak}ld0rZkE!EG}b(6j#-(oLSmxovqEtsuKNY$y6>^ayU8%4fUEmf@{ zRT2~P#rKg;a+hIy?uF-Q5jrouR7vTzQr>lvJ+5DSC!V8)DIUHRbxN6niO%kemJgH2 zcMm!*J%Xy_BT*B{Zo_+4oI$z!vD+4*Ji-Ibu~PDxcVUMfwU^-g^j zR5g$d{zsWZ#OW1T;lvE~je8Unvp~G=_Vw7n&-U$e;BSrZjtun#vdk1mBh$>gtfR47W0dc+5w8|2d@973! zrc&j^GNQY~SrXMG>yZFwq33C!GAB;QAfbE#>S4F^6~o;(A* zEQcpoSupXvE0edKibdJN;IqRAGCtMi?rOAd8U!& zoM=aW39E8mfp4~#H>4Efl&vMcwb1u#T$MXL%xPys-&gr!oU-M`*9f_dHLBdv$T|7$ zfQ>JsCAo5r`vh`#XH~hqVjTBrg4}gfiVJbvXNWtVqeP1+wjK^?hFu<%i#TNiqVGMl zvBR>ZIB?1LzMmJji*d?UNZ-T;a_^(&L)mKU`wuqdzALF|XA69vBW`6=F;1D9^t}Mz zzf|Bj_)po)Jh(#xRi)&joU-}Zw+?9+c#Cm1Uk$Jf`6@}+BCX2JsAYVQ^M?8a$FaUq z4IK9(Htw&DDsm{y3uN^OBU^`b&%(>tvE43-=m>v~!BYHdSJs~T4MQTr7a2;FaEKy zI&^W$Co1^5Lm%gkFfQc*=Xj(o;#v%j@)Nj56X#q~^H)uZ8h zDXohu;(Dc4AE)4YEv}DKaJ^o_FK}I1-x^mWbmQ|QP|4ceL$1*U3tVgRI^D(kWh}E{ zvDS5*ap`|r{dy~`#tU3ml>rL zt}%HY$0jbReB&$NT12j~R?p)`efbn|{hVoyOKD;_p0O(BxVc;}rf>r%8!$pSjQR>%@;_8}H^CWP^ zOmQ8P&nyS7d&w1(cf1_&t(U5M=l#{g=&vbKD}UiY@|n?Xe*o8g3yWouCN34hHp_1BD% zj+1~ZO|DrM{=yf9s-Cv-mm{s}6S!uZ`sV1`8RVe(GOqtcMF^Rc@fa_s$-PvSOzdVhqp0>f| zZT>&rt^~Y^;(eELeTqU=j)*{a(<^Ngs6ZhiVnl>^VZG}eP_Tk%IE3N>5fK9-Rz$3b zT0t-<(u$}RQ6ef-M64%KQ6i#7M64$PIsV_wW_D(io&HFh=fBUhZFY8M-uHXwn`38p zXIXxf*OL`yyvC;gQG&cyLgu27gjZpT{mX9jucuA*+BegB9`bq#GM|#^MegcqTWa(w zDrfmoy`DAI>(FH$a^0~CGV#Wjc{|YuSU#!Y)z`-Iqr9H;nU&+-p1lf?S2biVt&{NT zSIhEA4X^%DmLKKyyw{A^ut~3-io9wdb9t?V*8o4uCpEmt{dR4myk78_@p@(Lftkqb zWyo9+knkGhWcj3q*O{d(Kg#PRQ@x(O>AywDYc*u9l<74%#r}1+(Z6cU_3GUV-->PV z3S?Hx^g1WS{xvjY(Cd|qgmTPWZ8@-@PXu|bfy~vVl5#w^jOD}2(Qxe+8{ZqR-EzI; z+Rbn+rOgB2JLW7uQjX;1^4PabEqwyJd|&TCIKp_hTOTqB_fx zgwaP}VzVzKoQ4rPu~`}xmWu_)W*A8rrPE*ksw>htbZm>eF#T(g`C2$$9gR+Gf{10= zd^&vQgnD_)20@+8);YH$o!23=)@4oyU#}-r$fm0!OmH-=jyC_r(o%I|bGjsqs&gbP z(CM+c>;%NYdiF+8LZ@2y!PL;vCZlyazqv#@_UY4*&Kr>Vrc9kT>Pb?vrG!pw7MBuUAZ8amqaKgo|47CyYk>2$2Zxx};bPi@VL-6>*pGEb=$)VX!*#Z!^a+mN|IrVg1J*S6HC)0SnY6;=m?kIfqQ z39OpC=4?D(51H@D)Y;%+=~F{TyEjMjq`uQp|D-#%%57g5ITYyxA@hBiI`7t{mX3B) zQKy3sZVKvbTtU=&2QoMLB);>0QEKUEcS9K+@(eAfb6t4E0i?45GCxR@(Ak(`SJrOh zaylM?PH0c*9Z2V0$lNSbXH!jT)zR)hGdkocVy@0(JKwqu>AVM-TV(3g)u)z@cH>;9 zlO@vWbJ_g8NauaX{79k>E{T;=I|N$owoQf&Qwr>Cj*6 zO(V7X%M1Z}%h2(kBlKp-#CzL@t8-oO?UhZ3{x-tWQs`|}0`%RphF^-%AL437X%gri z%@F*1FhGB$cmC*R_e6Jmg3wzaGgKjg-Wg@dlP~LC# z*p@tW+j5qcLhmXUpcj014tDP?K7-63B&``P(Y1%jE%L7*^Ea;qx?6-LPu}Vt9+s9u z{~i{gceVQAOoaX#myeUxYeiwnlZRG~W&MX(uP^8^;xIyg1DOr7dYx6?bm;5`mX=!m zXGF02-HemTC}le?e&?15o_my)OM7gKKoNE5un^bMGeG}suzKU)*J9jnA@eVpn`uv* zu`K1oLNjPin_B&^=w=H${z^tE-$CX-WfH4T)kSNxtZ@xMW}$9%Hh)TpLhq{;1b387 zdJ3U;;M%kn3G^8yVwO^?W6$R?b*SLD)GbR(q4&E5=+mC-a0Nn#Au}p#%?3qT^2V(m z92DbeW$jW}7=^}V5P56%a+_bqBlP#UI-*lzwf0mZ$s&1ZPMbm>6kD^+?sIlwo;xA) zKbf1I<73Plht?jZWE8avAAYBSLLXKHt9vPfUqI*|AoGyN+-h7-_UNEZ+zc0oWN9h% zks1NIedo685qcLc9VzKFag|$^ym70|pxri>mOztbb9q@${rj^ZLjMR#T8+8YxO62; z-Z-?G;G8yvZi!I(VEEA5d4J*YPoSjBTCPjFM^_g>ECZW-YQu5jTr~(puJOUTSEiq)kffabW^P3P$sAeovG_w+#zc zJK)EBjQb0&#%wdU8W$MVcxzcE2hDF2Q|M#F?!&!%Dmr0{-JpQ1)4V*|bm;aOEG>mT zHX>L(EVmsQ7XFIsq)Ob(_@I@1Lc^^4$i33ghAYQa3DENoK1wFJ_JGnZA`!f_8I_Aa zFF>ts?-ZcZuE;+Dp??GAc%KCNYK4iGe7)w6P*CU&4FdG^w;ch5-iwQj%es$i{7r}E zPrFd)6Z``7Q>)&%5utwvB|}oLak<;3L-PlKC^TM8@YZbL;o+|$bOR_SmPrJ^-raO) zMNdniJBp)}C7-v&vn~DrrDK`|`i4N$q4{HC6uNVXVD*AUpO6WSKSAkKDS;jVO^4=B z&S}u%DCOKgmtbSn;xACTlt`dQ`kM~TA9AG7g{6YkU#)rfCxreRlzfmt-xz5!wD24w zg|>^8YqED6na2MISD=tqzHnyS$XLpgx&{AFInXp7ic;(A7)T!T!)R<>u-+h^BO`&aY1fHQr5RMG##4v z^%NRM6CC=q+^l^Fy&sg`0dr{lXu{D!n~hSur7SIl?kifo@;l#fggyXDUx}OHw;WjV z#=8$Q=<#}CQRsdZg4MnLJo9UW{tuMmkh#^d_f`pf?od6ncngbxlUgb_m@Hm+zOjSq>jnHeS|d(9?C=6nbctVD-cc(n(pj z2IZWHxz(|C1ql1bq0I#618EBFb_&qtw@t-2Ow!wcGE8;}Fr$o#mOL~cNK@!@>jda4 zBA4EU&}~6E*Jf_D@nQNTuet84XS6Bw`91;qrBxN}5gL~zKCjLkI<`1O(*);ZcnW=i zI5wLy;p%w^eGGozK{6uE;ludG1vhiES$>1n!vliV8P`646G9&g%7qOQs~>1az2=t> z)anw^%@&nqS0Z#fP%e_RX2usyk}T`l9)r~vi-K=k+43@kJ`O)n;*?lDr-mhOTyV3> z#jjkb)t7n%!D|;3KaJ4GgK|mG9NPHWPm)&8wJ_Qg`ZCe#WA?Vjd9(EPpj;+%Gk)>X zxYcHE_K@BtQ0OZ}H>;m_gA1WMfO5Ia&9rr22>ZsN%>?JyYZSUvbhCeRCu~CK3{b9= zxS4R>)Ht-6)fH%$wo&M-M8VH3sJ#fGPXOgAnVV_r;*bm)hc>gCUn)}QYs#6M;S+z? z|M|uH2z??bSI4)3-p_#KxRaSCn6MuL3JMGTWq<1Gq`@w7|8C(2nErE{Gk(7DXs z0jF@&PXguIGNae)be_~bmnhMEI?t9G=v=RNGpJ6eeiJ?|n%)sVIFlivvn0flr-sfF zAIp!bbIwSQOgX)|$q3jE!(;1Wzas9tuSb9m?6M%8 zuK0;0MWW7{6w_H_q%)>UpyLQViPw$kr+{)xL_+8FQf5tR)Onp{N1wwcUwn#Pwqnit z`PQGtA)RiZjIEH+S({>Y-Uu^3w6O3aQ=Cry*MD4#bh_iWr{el2-FM#dvE->yXI+Hl zN9o*NDbU&Dd3Fra=>f`ZVTn3HeTS#m;0KDIF%)_@2XOG}@u=1K-D;MWLQiuF&_B2TXDdSIfpSl!1p3D?OP(||ekzZp zrO?ys1n8@06ydWT={8WN+a%Dx`dISDq5tuV@wBquQ^&$6^u6T*^pW;GPDJQ@P<*u# z=-*lD|8X5-A~=5bk0qwi_vx)3dU(e#?LQ-Q0VufmwV@H#-HbDD+-kFW-C*?anU#Xo zZwx%Wpl`Es~wd4{SvGH_ORrQTWwakIBg<0 zS^JL9tpE1(ku?bI0ObKm<-*UkA04!rn`x`-k@U2zXY>;y$F;C<0=;$X57)xonri^sUo4%p@=0<4V^YYmLH|F&?nHjd3%e8kWN2P9;=hk z>6>C#ZmX+J=~U{CI#%>IzuRyF(&-P%<6a4!qH<=eBGSX&^gxVJ5P!gJ?tHpg>+5>Wl@8Kj;$fJ>a;WZ&QoHm{PX8e;Mw#6pe&BN zp3rMnjx)7%j@NyW7S=P0;L2x@{x2WtoDRyX@oFPe_wXMpl-jl_5O(r2lmbArOmqja7t z5$N1L_*)Co83f8wpM*}QAWNPaIwzK~{3xB}X#$;xhYlNpbj}22S&@WJ7rmWG4V{x} z40LdzCO*Kt+BW!9q~ii*dA*Si8&>1@r&)4BM?SVO8Rcbv8f0my5-W5i@M2=#ryI#^ z;8~yq;>I>Qw6;n#$s%cJfi{JHp+>NJ%HSSvA@pGU#CBYbVbB8e#-UBFWALloqSa(| zY+gGeTU=yX?QBq9lr&|+0?2y#ZJVIGtRCMlqguWb|3cW?F*S^|bSEJQeg7TrPUSAbyIyCR=DfGu;GfsuLcFb zkz$xd(>u-Um8L`UzMevV9uS~U*!#-O2z?DGpEXFJZ#c^C!>n@gzMevVX{cPG3CAGx zwV-?8nr=1k>nZd$v2u0t_{pU1b)amMRj!fcO^4=vJ%#?NLJ)k!n70=r^!1>G zLK4Am3^yH`_w^L|8=C;#b<+Gp2z>)6_-P+=Hyh<{IyCR=DfITB0R8U^6FVcc2bAp~ zf!01TO5l^P*SxQ%(BFym`t;8)oQ%*TK>1cyugjcGx0?6$6gn){>oqfT$ldXgpzM&< z>szXt4$b>|3jMuUulLN_Pi7i!1SKr1*JGjS(7dmw&_B3@vhKL`bi5EszX_C`eo0y1 zs(1H|m$mk3C_WhtH7F@3=d4EPGEgEBiPcke=CZPuL;EV2V$|wiEdumO zSKl`Pp>F|Ycew<5hL0sr9{N5TOG}~g9zVOZul7zKlXEUYj{#+mtTnqo$dV@yJ*$kR zrOQ9uc4)zvKckHoFy+-`(cWd2@U$ zdGgQ?8U_EOT!&t1x$?5;I)okvN<&Bj{c!33g3j~ejd@cK*S$=;$o&g+=xXn=Pmli) zp>G4_&oXo9oMY<#7qr~N=a;jzRB#*zGB;akd2nqD;%2vl@>f&>%|CD?6I^cf0*e9q zU$+ij?cEjLL~g=+LHQ?O4xRT{Gu&*U&j7tIq(iT?41fEHQ3yRAlzmQf=p6pJspPG$ zj2fW#mkH2&mYjYLLQeoCT4xTOeV~#hPab-ao|cyNfv65$?VZ1*#RP<&2+Dy{bLhOq z&i@51ceBM|mX<=}Ga1ays=bpBenFrof%0EO0{u)mOD?lo4qc_!E((3vDL~gs{wMyscS+A<`ux;o>3LCf8&#?XDJZEOPc`u3e}KtVK@m$! zq1$mcL#t2xI)u>EKy4?hT$}asY82XR(WLB6egpLJ;)Tz+q38UC(9=OZ-XpPki;E?1 z6x#Ia<0GTs9Ym{_j9%9kp?#pXk4m7oHZ&PJ_6b~)o(SIUNj_Ux?cGuOFktw-pk|ay zpzDvWUYiPjXN1wF&`;M3Znp1&@&6(83{X!9nL`U-u4zB~KbUFC1ZM zDfEguLGb)5-XV|Y%?9<9S_$;dI+i?XXyF?P6#B&y0lEm@As0S#K<#dkK=1N59eQ(^ zrKQj-LjtsA_#dBL~I_F%>T-zx0DvtnNQ*raH2t60n%#Z~7XD3UZ zG;|*K69TPTL4ZCq`h=wj{Sc_C+Z;N3t!qQT!^CJRuV0SAA zLeB>^-zI_nr<^5k9NOfqlDvO)+7!A_>@??|*Kj35KMHDrta3%+=%CFWf7@?_c8Hbh z+Jm?Ki_i-|wUSB7tt( z3}}cl+7!A^nP7F^WrxX?W+kY->&&6EUvjeKjaqG1xw4lW z_ANDswzWGtXj_Le216*)8xXeRDp(kW?&lYv*9TtBMd(GK7Dpt|$A?++My)o5?r39a zDYVlfKu6y5o`%p*g4(}a0^O;WB~Ko@bC9K_(5KZ2(B0<$REW@vK|Kv5(3Sv8o;>u) zdRhv7dZ_??@Am7rA@ozA4yctt^T%3}hwfIxXjABc5dpg7>#xXc;nScFbW5OnRI=pB zLucw~DfFOn0s3s;l!p=e8Bos%NuX6<)1j?;S_CicP zS_*wutpNR4#T(}%^s}J4q7rB_NuzDa3vScXQs}eY0`!|B)$Itq1k}L+33Nee)1k40 zj%^frNJxNQvBW|e(xspdaY~>a9+o_Lt9$BcDfG}X0lMPTJ4Yh)bD*A6CxI?ub!4dpBoUMA2@DA9YQY$)g6&Q_j5KKy1$;5 zLZ9yxpwF&bMdnDK2lc#43G``7)1e2rSXv5wL7f2Yv4x*S=m4k}*d)+r1X=Rr-E5Ga zmO>BrGH85-sr9V>sNX!e4a%@q)#>6@H3mtKaA({X#nv|1m|`+rKO#3Imn zY~$V;NaqDmFN&MI)aeY3h*>tD4j&UxIv48~NT^N)tR}B3ya?*WAW`Q+-KB^U&8Nf1 z36##IenFkjSDx@A(pd@WCG`?IxT;}nOAQ@9cA#`FFB0gSP?SSnyL}1N%gQBmuy9jK zhmR*Hoh$Ul8Vl>!(#uvOomHS-p-AXloMLtO7=zL&^$F@c)%m|SkWMwISH?Bqx+`Cr zVs-eqgVMR$EzoKAQ*Sgry#~~);vT!x>0IVdZDH}T2&HpPgFxriR-4>N=Vef@aY_p7 z@@Q)5@bL+yb6urC=dzjC6LnUDdTm%j=gP9w(&1wkO6LZbKxaqb$19M|E1+KQm(VFq zu{wMlL+N-T0-djpy%mj5UjwSANJ8i86syC>Hk8iD8iCI6z892x1A|#=6O(?a6 z#m768&P}BPovlTW96>s-fqG+=gwA#D)Y9Q&AWCO+nn0(0dCyX$^E#-b+!8w1*QS=v zX$s4a(z!Vx(3w!xu|LwO1$A`XBcOV_<4LhPe5^$2l$9|$_yXc^8;~c>-vG5Nu4b`^ z+-)Na>f|9g$hj!WETrQd9MypBrb;nP8{6=)5{14+Z}Jd2z4p7_2)!26F&V~!(V=fF z60=MWnvaVp^jN)lL+G`^ZRjKEZ-P2DZj`4(-;&XEXg&s_(Bl+A@CM6=Z@Sfdj6tFAvIx*;?!4@6gnkdyyW$3Ly5M(& zn-0y#6BPRHpa7i}ZGR#{zYpr&VTsjK3|&fc4JjWxQ0QrH0s5zPy(b{_Mo_1fNubN? zn{G89Cs63=^#b(3F;`uO(3?P=9@mlTg5T+EIy4^>Q0RO05e_z_Lj!XbAaot5_m)en zzN@O~(7gYr&@;k<)g#_JcO*i80P1~d66ky2=%9UNVmz(C=6yYdp6M5$%QkkKiO`!t zof(ioPdmyc#SEJF^%Qzmh5)V9m41iNAA&loNCG`GELtP?a5HG$*Hh>R#GyiDQuo&p zdJCuz$c75D3_>Oc&HH)^JzEj1?mPS#3qpSc>TH+9YCkmHYTnmV=s5ua`t^0~u$@fb z3hJCX3H0n{lr`_`DfC>izb;-f^A?2u7}UA4{`$dY2+sR@3jI(>u=?@k`I8X39@K}T z6009-hTy!fr_c|31n6apX553&pMd(XPXax!8G`e^om|^Y{-&2T@9Qb_BBua-LU>6Kp+lf9DwRMlvNau=_w^L| zNwL4Se|~2Gp}zukv82Dw>kdZ;{bWRpr}fvoucy#Yl?hg_A9CT-2>msvPx;NQ&f|AD z8^3K~2F?3=3jK700R7pl=hq_iH=sU~A%V8JL~G=orWrKv>nXJ1Ioz?AwIyGv*bZt{ zr39KUO_aRVysxLwOVR|ZYd+070inMIb%`Q@?pf4yt9f5fp_hvN^+^}}M0&38KwT>7 zuk%hl%E7Ri;JmM=(94PhtDnE~1@e6T4p5hsNUY{d6D2P=@9Qb_@>&79L*&BF2ptA> zc}N1?zZsQ__w^Jy;1Zx6-s8SR=Wh;8I!~|G(pPrq%PTfBH{*Rhg=?)R$`{(C0V9>PkPOO`%^A`|I~7KS<`tBcQ$_ z>96zn(nQIZHSg;w^s52#70E8QSApf<`j&8V=Q8N_1q3`Z*CB^rKwZ;dG`}@;9*h@9 zV5_QPCLo7n<|-uYSwm?I_OTe+f5J7_n;13#Q-Sah0p&&Rmd5k?BpUkiuAlJ4ZcuC8 z=DdWp7<693yF!FRa=ey$7-P!o&1fR8jYam!L&$S?zk>Rv%bb^Ox!40~dS(Ay!tzd< zR~~=4obpN{~YoB5aUTq!R{{#r`XdfA>28F;-93A|3e#PjaD_N3bH1@*nS?ws)wRu$#E znxR+TpFxpVx6eHZywp19SqDE`hP-|UbyM6xn(@kh(#P`Qy!f-ZP0&lvkCx-+ssvux zPF%C~_FIux1E?Rw^~O3c{!XUOOL$o_XzJLC*GHiQUfplBh3~%n807T_s2|Dn z+T>^X=)8oloFvW5_ChJkkMgQd*I%Z*aw0X0kXIDc zKV`gnm9l(Nqu0yjEI-QYUsGOBZ8^LidF==F9~rO03YJf5c&#z=+HcCs?%O;Vc^v>X zD&v(GN-Zz`DMG5(LAROT58hof5PAIv>VGm`ILjN`Qll6DCL!f@#FW?bb6&_pUI#%v zTp{s$#hqGSZ~0h$gqJnll-IB!V}~KHLtt$o+!tMtgU3c zEVV43)RZItTp`s9N)!AG#}kA0bX+zE7 zG*ezXJWc0StzSz~UMHCF+E{e%oZ9WkD;=yE0du{K-@T4q4>hOX<{x~dygHildddxW z&EK*mSWlAh$~mcA&?W`E_;)cWuP&y%ep&ZbCGu(o*3L3s?XhFmHr>Cno1@o@2&iq8 zS65%6e|-|&S$hUP65FyhSWlMlGLGe&ua~VlXyDboB$3y~qDk)EI33)w4OqKXO8jd@ z1ItI(EAMl$Y?G{yYg{Zps+ZzS;Dy(ZSBzfN8+o+_Yo@H7_{+lb(RtRW{TekGzfnYmS6h z&Vj^sHRljEdfJw}UbT9DlvjRPLOELVqi;|8hO}SDg4HJJA8l&`0*9F2^Yuv?FNm9a zlFrNJO?9*UC@;I;j90mP)M4b+4y=Xs=6-Kmm*`){xjI^oN6%}9&%mo!VmpC)%}QTC z4|yF2)}D0|UT>vXuls`rUcD2qw~^N;LkInUyp9L!sX+;^^-h+L?)S~oYmSfQN6WF; zn^2D3^Zf3u8GVpfd$9JcmGF8e#k}~ka+H@d(Z7(_r4?u0g}gd|wSSF-*9N`4NsV57 z%{j^o-*t|kkH&Vj*W$OZdbG>{>j25PP*^}n=OwIr!s;U{8}groN$aESUA^t2yapxu zJ@V>4aw=YTv^)WNUh-#_QheZ`g^vP6F%M9&=u{_r0u)^m2@ALzB9%koQbE%a8IJrkL?sFyy8#$g3k* zhq@)aHd$Ccso}N6$MU1R&I2=EPdVWs8Ks8T9U+z<)$8&|0x#nguF3JrUf;md zQeM~8C+L;wEj@1VQ;#68Q^0zSMZ#-I70XB0EAFG!r2PV6IWUYT?}zffu4DO8Uf0(q z@UmVP+KwtE4$W2uUFm7W}*$%D|=0)7$)VF`)!29qk4^UC-NE<{B3PfYvk1ftT$Dd^Agrp z(#tXL2#Tz2I-fd1Zq2<{EQe!stu=|f#+Ckd!TbW`rGRyeq~A9BxaMENDw;a4yzK@J<$CSbb)~#+Pi$8$ zeJdAEyKy}7Qo(w=q+QK6+{=#ny`hfA{A+WVl@H-6<&|@R-X2n36Y3K68Xvsi%P!v{ zFDqClWSEzuS$#Cs%Q$C2ctMm4?8US{KH zqlTJZM*ecWgr!g^FMN16-tW7&^WF8g=RxF^4c2l=yPE4#n0?&ufA9!lv2rx_0n&2J z*oLqqvbf$ zv>fX!Wdo6y4XiU|-dd;b`IRJ z9C_t~^#O@qc`L*+i?ypO%UR~SUU@Y(F^uxcd*3I9X}orOSs2ypK~w*Fv|ukLZCL=; zITHWMGx7U8Uj@sX^SaN37hg4<#M5~Fs%uSo&C4*;>z;o1JdeBz!TM0Cxqs#HXQ%aY z%=3p6c|B;tOQ%og1~gv3`B_@Z>k*3?uPt!Zi^$6k)(T1gn8&{W!Feq<;Z>!RAlhi< zxU`aS;ClV;W?_`q0+$)Dnm^xo4|zGj`e>QCUb&};I>hQ@4-d?*`F(bS z7*EryA;Q8augBeHyk^(r)FQ8*U|m>Y&MRk|ZlA7K4j&8aymI(>kAzWPIo|{0K*BU$ zfBIP%<+Z59jMuiVlMf-UUSNHq(wtXr3o-AQUaed#Z=F|eTSFby^g6a)jHmJX+s48u zucu1Qc)h-J96mqMvIwk;t0cVIoA5fpgjYwCa_nNl>z_IUuc|~|)@Mq-zO5B0$5X-j zjD(kMzlY_6+Gu(iuiZ5Niksu1dc{3YO7#-HJwx?cT9Kd^^18qLsSU`hH&~a1%=NPU zr=*tGVkgUw^1@dL;@f-V_2Z{4#v!jhU|pUj;dM|fpA_iz9u|-?J9rvOUEl1m-DC3~l$DEhFER6D6X`)x4V#}?UOhI17U|lKE z>!^9<_!%DIpz%5o5W}c{iZ)X(n~UM;yz9Y9|F!TNH2GkF=`U!r>Dw+JTkdeh0mD6d!R%y{h{ z-Zb_58+!WC4OzmE>d*f?S8n4!siM-Yu>*L#|e*a%aVSnUxI#}OouHX09b>M#A zmeJzlubg0%1ya4<37D1R*E3g=`Zy4*!G>m*qw$3*O)qdW4!j&Ucvu+a^`5DJ?K*H% zU*vTLSl?@|e;MDl(s&(H!8mYU@7A#}%4<{9Os`MYuIr4v27z^xtC@Pa7@U4T4f2mg z=hZgO>-{1YMtN;E<@HVP+2p>$nP83o^0oe)`%%v4U`vN7Fg?>%ggwNm*!s`40TlF zRabA|^|{5&zb+j)iSQZ>*3Uf6^e^K(SQ@X4QpSP%7oWeQdTmSOh4WuE3oj=3Va^8Y zml9rif4GFawQ)|~ua!cWHeSv9C?JLrUgDR9{F+gW7yn8T!6Vmc;zq)xyz)<|U~wt0?coGo)^AImvpq8td7T5+?KX2>!hAd8 zX}og32(!EyFEBn=C+C&>b&#c{ympxQ{f@LFZF(<4UPHmUL+1A;@9D(NS<>s;Y~wu; z>R)m9K&ap6pQ!sB<+ZacL9gz1%e&KlIR|+S18e;Ek6HU=SbF~!^%wO zB|N7~dHv!};ME%8(iRbN2Ze2hOWYn1xYZf7B-O`on+x zh7(sHuM5EXN64I);14>ly!}Czx6UgslF+V#@WCj~>tr8GOL_fma^3NF<*b?=(~;MO zVEsFC^t`fHC@gQCm+);g5+-dY^1cYMw3OFAllE(0-PX59kmu5dgEeYNf|ubP(wKjR zq6|;xmHlZ@4Aa_)ZB;Cc@anF363g*G-7VdsUgUKVSpQ3cm$7fscp0BBis@zKswfVKGe83kS}z zjqu7!cO~eR)x!CF<(Qw5*Ts<4!Y|=f9c20Fylnj0e!@X(Ck}!TFQ%9AezV5wa4CyN zdA0T>@@iE+c5!Jh$O4If3D19Xy{h%R zb-j%D!DIc9@jf`!%honz(5qcIkyoqoFM4}6Ag{|HtDP+gy_&7rzg{dGR@T&Wq18GhPgz{3l^rJJBtJg;QP~6U(uCTK!vh_j?X`T?tto zCFLmGkJfpaJogB3?+R$`eK^86a9%x(yt;%E^uqUaz8abBKwhPg)v3%}FF|*mm+{?v z+DAYoEI-2otN436S=20 z81zzn3FVljl$;%Ulw3bv16fLyc{$pi_py8sFUE`aaXPO!pQHYj&&M<*p62(8u|8&( zC-TbjPMxrMHuAa_va%%O!u&4bL|(j3ab70l``o-*A#Los<2QwcQUA(K^!u#bz{DbV zZ{&3yWaUQ9^%AbDbiIUk@^oJLJ%S96gi*bW&m6^g{TOEPD6fL51iiYKDE3>oUx>V} zhphaFIWHrJ*m%P5PLbyK+0W`Vknv*pBT=VOL_H9)C+m7`tr={kk<&v>MiLXO?mNW7j<57Z7t;$ zS4XvSe|*Yptz=l;x_#AE#76)|oE+ z(YX%y2K-?OV2FZ0x&r_*0~77vW<@db_$z>RV0RWY{0ObDn-n%QyGTk=O9aMqqr^-hV6K4 zOGkbuVGPK(AtP<0VHp@EEI~!(b35hoX{s6Jb6vFL`Abp0(U3K?%-Evn@;wq^uw1@J z17esaUuo13hGfCUS2Cw*iF~%l43bj$Yzqw-orrw4YeHgvR6g5v#T|U01A(xLYHb_gnmY91f z3Z`u|43EIZ7yak*%?lXfg-N^$qbyXu%cEjEO+LPyKEskwY{Z53_%;@hBFq!Jge6Y;*dc(m=a@il0< zeAA4wQ15dY!Zi7YMwq!YZJ7zKi^#$y@u+-pk~Y8VaF!Twkp<+R7G_~w zzSEtCFyei-A3Qt^6SdS2I$J*wxRd}ASNtYYqcHir(u#?$1>tQ5mK zQTfg(F@(8@_i;(Ne8X%k9+%JU;bAD>eJ&IE8tXdxE^^+0^4$hm_x^u%9sJX$T)yMO z%nUByaR!++`8w(n(0D|?_%6#uw_L} zEy{O0Wch2&y)TX)t-NtzwDQJ>Sh}*dylWIbLbk#7|e(l#mq5OZHv#4t_1K6pmk zsA*I_!xDg9sQ2ZrQ4I0IB)`{LkS0AE3OR;l`eO3s8D*yOU0%)-Q(PC3k4wtsy8;<$ z8<(%t$HTDgtBNEk-w&hvU5@fifUIZIB=RlMA-H_Y3}KplgPe>Cmv4Yy4AbNbc*HO| z?#q4AWeB74^{W-bH1BJlA%zMpp z^%E%HM95n1F_$l{y`hyiu1!m-?aO__=q+L5eb1IMGpO`bzH?0E8*KD&;(c-av};~2 zDVOgyy(qbSw?`N*t-RH>Ch|3Q)iLok&s3Ce5@fv;F_-VCC#>#tGAg?F+3uISg zn;SNffXEjYPxHPiMa)n0zVS9gm6mOF|JVJ;HJCFR~XS?8?Fmp>)K(o*@hCM#dtEz8KA#>tSiMK)b}v=dghp@`bX zz0a$NVVZnLJ7Hyf`&5%}VuqNX=6zFbhA@{=QZC<}K^Bk8cQ*^7Z-ZuiQ75mwrrx*5 z^VtO`-xSFDEGqH7qn)t2#b_G!zA-+=k9scp$oSp?0I)p$mKJ+>Nv9~d+iJFpnOvyYiFIg ze0j!KdZ~Qzl+n-xGc1WR)5;t7>T>fZtnLdj38DdhCD@p?yc@EjanBU6+2*{e3I;(+xB2od)hibD zmN1$T-xwfbd>HLI;@e!(_T|rxi2Ss+k4wts<7>xp@7rWyX^Hn`r)MN7-;%uxN!M`? zWT)9A-e-8VKLzqFM!~c#HS#^^HRR_qN~+73{Z}oE$L0G^;bAD>F^ycbnO5F8qi;PP z<(mfCZ6#9%#+7GNAYWyaQBI9~bB+1AhXjmDl)kLi5|cc|IlqEed~+UnApOL^{g8cz)4c15Ggqs;#wFmX_ZgR1>XMXvaWd0KgmQa$m}x{(xqOfN#dwryY~Czo%rBF59?6Q_8HdzlY8GYSpM3^<>Qia`S6BpY~%7BQ1e-6AF<(m!JSBH<@`-CNwxqK~vQK4bU$QNH6wDPuciTTOps|tzn zw93mR)#b}MQp@6T`O>324CT8ixvt~V(4J414MO?mK=#Nax{i2rkr)`iev(|}jn9wB z7x(29xqM4JOaktGTv9II{!$iCmoLXSU79`Cr0Zz3@?LEjPAcz%kbO%MT}RxaaWMOG(+c&|a>u6NIeM1km zMfv7Jwl|5c!&E-w+KNfZXX<_58yW+-e9OE{0`7fWQZC>2N*0fM-;P=yhL!iuV5b661xuhMH^m_+|qI8*C^jS$evzn-gU%PEIMqC>y4ATXp2u9P8=W7VROz_LvcvG zFOHv9dAX#zeEETTE)|n+3l@~N5&8Q5;HUD9$bfExgE(HnAJ(aE?MK$B63;( z@XPQR-ClE{1?77f@@w#TF#c|VAKCC@a{`6Wl|#XvIw)9EM~AV;s%;a&;K9jFErzK*e8w?KiL#(Xmjg>TkC z;ag?o+*?81E1-a^xCe#nJ-8P^K`$C}13=+BAtC{#$yO;Owtv5})~c(e_V)OvEX-2#Q*M4<4yC^_0ug1Z8RVTus0!e3q}a5a!~KOn0gDxq*6 zwP>Fof0aUEl;*PEhQFdva2`$fALekN0SeBqBk2xenuBFfc&LIL9mf3-+HoX+M|g>i zzv{u>!cC4^RN;~Dse9Z`^g#P=w$NC33l?HGX4$Wj_O`mLXNs&csBs0 zo}TLw0DF&eP=Zc!PN~8jt-Z=Zj;xr@8i4%6wd5$f7I#17?+cToTuhf+4*CE3$&oFH zdj+1S=L*oif-1-=EF$L$OTli(57jN8x%5=P?r6X#z9>Qwp6^u;%3oC^W^WhnSbgsI zlA}IoLmwx;Qc*^ZiV?549I}t43OX%d?;nAzl2USR05Tik2m2XmP>uLa8}TOmgyoapHa^ynWUMO9cMIlnixUct*vQe?DDHKT`7C8N zt^)eJ;(;vkq&?Wj`=ED42nu^qya^RxpWp%eM9Onw6#8rrK%u>X#JmGlAfF7FL-8h~ z?N1}0scv#^Y8CW;sSXM+_K~AI!?@!)Tu>j6?sh`&RajT@>&VePmAE6jX%*yXT0Qh$ zjWu9P4LQ2E4(vYsKO;zv?n{H-ub@TO&~!6>V4qn6_WR4px%+FO_ZmDmCq#}OK;>se z!0yi=NB$D%{VJZjzMdS-Mjo?$V4p*Cc@UuYYhh46py+dv$6O~U{{V?OuL5_}r6u(V zd^ou03VZ=Hy^@@J#0h=7c)>nDK#t~Pe)CHpbD@PCEx z`N!+A!S|AwPn1H>7b+q1A6o8@B@Nj&!nwdkpGu;YhHGaqo1b5DoC zzQzYie~R}k@_5z-nV*%Bb4wMlFKGZJ!%vQ$bK`D-%sYQVlWfc;oGN%y)FcdX&h6_KMi0PM9P z$b6p0TpI%W`&d&uRgrUVmErD$%$qC8(Rxg`9@A|oAxFUo?zNElN(DLEfan{_Apakl z=X;p$Jxuppgq+)G0s9w0$lvcIM|A<*u_Zb{(`}A|eRCb;9|Ur4s{;0q8X*6Wha7zz z!X4YevLppOs+k!M#3>9DVMAo~zNb?kgonU!Z2Yd|-c=qKB%W=PM*9 zYQtCc&~s%i*uSLbzEPm(OI666rrYj?o~sb$(of%IrT3pNA^#r(6yO!G5p;3cAvBhl{|Dy|ev@ljL#) z)jQ&W?n5i_$k8GLa(}FW?w6C8j&wZQi$}H^a)b*L=RV>AN2^kD)T#(~{NLI}j#~S1 zFNK0Edag|b9BpdB(U#cmfD+slD4_kAlMVk0vx?*E`1dI)c}sZMdVyx4Dag!M{xx?D#q~QAUOKaqyAoS z^hboj<>Z_b&pGkjDG_pXdM)mLC>WAPj?O5;9siS;@xU>t0(TD-oZ}})E*m(`M5}Bz za&(p-_fkBskfXD4$6nnruz?&6L2HMgwayxHbPk4}Qw5Hp)S_XSW|$2MuAsS`3*c~v zz;T|7#5}JOcT7u1j*bg#_$vyI3oYc_gESW z?h*xmHGtzrdJabdjvLFtaZ@chhxOTUQy3hhDYKg~-RKY$+)J621;J5<_2GVM(U>A| zj7fun2kJ?>u@$&`z;SCSIl2{j-ii#yg~-uuZrm;4xZO#PZpWCnV@z)qIr2tvuLH*f zYTpD*Hv!X443Kk^aGzKY1<$z2(H%kDG3}HLax?{FO~G-?cVGM4h3u7G12`utj|gb#D^VJ>gcbNAMO<6a*)#`{SwGmzN~^v`!I z$~%-VVZ{k3cjOx&MO7SJR1~zA0_7=uEO051wR5gs)*oT3k5&ZbMuS9F&~xx z)kDrb8pOQ<3VsieqsJ6*ENB47Bb3WRWVR5!U`G)-_c-SAcrBi%c|L(5m1sjp8gmhb zFY-fS7cYtVWDxfXDC}BBj-CQ=EXI*s_Y!jSbP4VX6e@ml^h_o0c=bZBI~>p2z)=;2 z!rU5iZb=pHUT`d>F_+fiFO0n`gPdE2;mcg$SWfYl*W)jY9iSFrU*rfNy4yu!;t0Zl zBZ$KD%gND;9^8wdaCj*>S{cB-92_rIlB1WRxZ_xHIb~gq2-Pl3OYv&L;HasA!dn6) z=IUD9(b{nqa2t)UZKnv(HvINg`7+d3f1BxFh0sDUlmPTHU?~cP)^2G*Y%=R5;_`ieV3hZL> z!8eeBzd8EBSx}5lf!!C&vxixp$DJH}`XMNuR|ocJIg6Q7X@cJFgw^8? zL-9imVBc59V&0*xv}8m-cDC<~(=et5?EgAh%qwe5@;qkMqG9Wyc&>|d&#{;mTnsqT zcKCKo&VDFs> z2#M&eKU%bI92EP*VE-)?i`nf1vpidkp7~xFV*=Rs)UiDMibSBG08LS_Nsv&Lh($r{RbA) zYLBp(YMO=lXWJK}Gqa!=8$mm17U;4y);$d-G26T!xcLSsz9&isjIo$XgVQ8t>kcpM z7>hB}z`h+TG|f|8S85WoRqH(}mge24=Qj$A+0rb}mKT;id@B@VV{ZSdJ{D8iUu%+Q z`t=JBwuIt4Enp8-u{^hWOk%d!RxmIPil-`MSRIR*Ra9pZGfh3%Viy!oL6truwHhlt zWO~b4%&Zf=x}G;(irZAeTjDxMqoCM}Jf~4Tk!R*OmkH1G zZfl>q0E%x%o_9ML&m5;o%oa7z&AkR=VrfpTip5m1D~Q!NfoIy+ov&RC#kZB<6hJf< z)3VvdVs@zuGCf;lOnc@XD83KTN0yP8sJtblTO`Cxd-s5n55+TrWU3<;QycacA99kR zZ!An3h!@Yt&IvsYH_{^0p?dNBFd441FglnoeiS>07A#D=@F_m*#>=jnSbo~2Sn(08 zzh5-O!nDi5eraXol8}WxAHq(fUyDk-K*e9054}Xg(gS$m&GOSO#{0FbB^Ttec-n=1 zu`fa{?qgxvltJ;D1~P5H!sw(z@pOz=;fjT6(+9=-5QB8}8txoS0sUIlfqim)EKHlI zDZV3vOxBPv)J2>0DaH#jds%rbOq<>*-s=MUxC#cR^Vk{@85yD<<8(D=SQx)UI8ctQQc%zU3^!?2Z_H*1UY%~cgeh0Y>!e10ao2)Iqw;pi9Rtrl5<*qX7 zG`ClQ<=^_2aB^py>A1}`-TuMPIJaE^>KrGT-zL$?)*_89iiT6%S`f`!TNDi^x`i-p z5jmXh7Q=GA$O|XE#W1?~7*2h&uyl-~jPxh)vbL^2Yvz{6kk=!iE{;lgy;8^WL0x0K zGb zVfk=g8$bw)@p`{V4AXdRii%+xug!Wq%4?M?ffwpkS6MV2c|8j1i}*-~X*qsaFXWwq za{S1{@}uS0PHX5y|H8#gw|Cu5%5edxt8qrhlvk?#>tjZXmSg6g#B#*N{FO+j9d zf%>#h!pq=GF}=PBvCO%DZ8L;v<+$A<#?#7ihr#c&@6)j`0dtiFkv3r0yAgT;uhFSZ88>&+ng;a?HjnQPK?=cwOHx;nwOU$m?-XpTk)@ z({kKz6F9_p8Mwy${y#;Cr!7*5H*>@=O|Qc&h?Zm4q}l{tSdJfVyagv1T2_L(qEy1m zq(0j9tc7;sDC;BMPGYHvURfU`*2nJsohv?ld_VGf0#v->G}Q}lM6rDIb^>ol31Kn4 zjBSTjjs}~waO8!Jbn-%$Uuw{weJDKES& zCWg^+w0EdwVN|b3T0%KyTgr-uUU?z%dJ@!1mpQLkUqc}OL4%Z>C#h^Z5lkhTV(@1?Z)&;E`jdfJhtD`|L>wfK0NUV?O_pe0A zJ++okfr^WLoBEfjUPd3+%CS>JqF!Ap#W0Q6$q1-zL@#TDFQFWfS9OmmKO(QELA@oJ zcGcMLCC964$iVC0U?Q(^4fj>_JP&z211e4%nCgW$Rari|f7!`Yt+sLhQmVu-&A$wF zIo7W7zJlnbrg;*0VgGp6miN0LuPRXQ2}yWab^AE4>{^k7rdO_ktH#R~6ys^-SfJNY z!i(Iujc@Of*MaYzRFK!RpyEZJsb0qMp62&>qgce#c=g1Lw2f$}@hW0LeEena?P7t{ zzwr5r1YYx9qk6wvj=YwDibH%;UiLn^pK`s54cchDoEC=1c?~e=O7#-Pzm(UqvIJh% zo~{p{K5IDgS_xCZ$SasZC zJlpa)P{+&qN5j~mk$(GVd7bGOc`4z_1YX?^l;8Vaw?C2BGEgUk&C9XSjF*vvrkAk~ zApRw8TrcvtiMA2F$g>kIv~fQN#QT${yUStbX~6{FBk zMH#fEPhjBRJHJ8b7eMXgH$t~&Wj(5fz>ofkpvkkF#VTFYC?NK&$KI%A_+NX+%5?r275ypN@&bRP3DI#?6_ zbauD`>8u2`V_ZX~`^1C_mYjOM6k3}wA#u49+9VbUBhc9=fdKv2&}Xki=$Ak}MFxF` z-sU9_J++F!l8r!Tg~giiz<|kLA@nLxEpDSv=vLnurfKm{^3d9JAW2W5U$F^Rf4t-a zK@8^(RFBi#*p`Lj=G!rA@mwhPnJL%2Xu|}aN6W3 zf#LOK0&NQYkJy?$G~m@RLcb2`arF{tZRWX2R^!8QBpul(^c`-&>L>pmP>;~H zpx`ZE!ys92QnZP1l013A`Jk0TPZZs3ZCdCTgnk2*S#j4{I`n)WfhAkx&}MGNuS+TP z2(cmUzOvIegkB5kt_+FQ3y-ojGlS-|3ADP;A_!hq*WpKmeiJg+%F0@A!kb_O(9gM9T55GCmjHdf=c`@_9fZt}WP&e?vgFA_Kd;lK&~54k=;{MsU4_u^ zK<0-ss{`2PXj}5oFIZSw0!^NCaLPJ^vVVinmk6!p*wl{ ztw-p0A@kh^3G}KemOOdrYMnN*nmnb;q5oZSTPZ@n2bn<`^vjh^hh80IX{q4&05peQ zb^S%{5c++{e5+n!wQ)X0K1$K<)eq;ch#wnWQ zpn01>p+74Vpj++kMe6k?$XxF=hmO0OnH=;|#US|hr~o~A%-g>rG`}?zPF5uc z&D#WGHF?~emo;oy&>5jWfXw%0&_#^+|7b|f%9^(c6#6C+`t#E94)hyfkLknt^R1y<^2(Q3qsdQ zppBEL$yv?Y1OlCfHwn1a%eq$0MCgwo|JPCp^y|)}vwCevjHlIW-X>6Je6NQ?f7!XK ziqKmTIx2yF1H>%lR+~ZdHi1I#2?)^D*Q%2d`eVr7Qz?NauhwZ><7I6EEwl*)n!MY@ zt^TXz2GWMtL;i10b7*|`uF23sn?S8zZV{jlY&|#>p+7q^$CQ!i(iv;Lt z{_k%>=+6=MCC?Bji?wEA%bEAukOVb zm5TvIVnG*dk!D1JV8Q=8GiT16vwMci0>A%0&wy_^#(#*#r)aqqqv%GjGd#fL?_Yy1IF@Ps(- z+>m@^69;~!ABWzWv_Rjv<%|6Q{WT41gFqbB?9&PveaDTa6ST4k9C}-c1==<8`f-5% z24@4yHPB+WGK0??TG<2+jT47T;0ITB-3QQEko>(~11+{x?;5nS2^<>78x{1m_j$1? zsl#fVdelu+ihbX^2CZxYhsIe-1wC-Y3l9N$4USmGG`SX=({~M8*#r)~-P%>?I_;^q z0sSq`r|YcQssw{&zs$>8*#rj7&Wx&D-`#dhHlV+QcR-VCvCV(ipp{Kv(CkpC0gVO7 zR|0ig0R26A+Ev=2%>_s`_r-E879f)`Muq)$ED5pST80yK{o5)Y5&v*HIESj}+*z@O zb&!7`Py3WYFzKlIusuUZ9LivnIGytX7CIx(x)sfKhabt4ol+A_I%|R{#-wvun}yE!((MO;&QIi_3Jo1Km$qlcW@Y5sd7A0))92pk!SCe#@eK# z=G^uSosBI_GVI6c;54>{PV>B9L1#UAQkQ^CI%*zn&(IM^y-YgS#w>J>T$1}S=xiWQ z7oBvR?9MOfEr=hZsP9=h*&T64&7^aE(n9Cn_Gj+}IvdHeUz0|ao$Su;(AjKeg%=i% zz^lT#r^kDjfX>h4*LebT;Egh?EYdEG%3lC3B<9;GYSrpWf~`E!J)i$hfR#vD+pL zI@sZ~dSU-5ptFTMeFFBvGKbKAgRl7Q*yK6vdNYo|vDh5?AEqP#J)vaa2taQoPv5u( z+P;%mpKB-R_PGXY0i9oO$@OjL%#H!NjXeEYoS|`>n2erzt~=OF8M_ip34Fk@^BMrX z4L60AYM{|B8NVGvJ8Z(R?3ZN%XZMdO==X1Z{$4=;4)2tjAj=vzi|jhI+Iq^N2bNo) z+rL@HrpErjEhQ-(M-w_HzH`tH8eZ73MaJdOgUpr{YIa8KD7LclCwT^EISU-Oq{!$y z7Pu4iUQIGChaOUC$@N6fPqzd5FWj-B(QsVCBBSpR+Bk>G!m@CD9D^%cWLyqCwAF;3 z8?Ae2!x%tsCr^H^Cf8kBWpo|%uqbrM5xTocn?nz?nv}U44}2cbf8$P=1`Tvi_y2+( zs)cq{%eWlc>o#*e+tvERQ?O>Z8pngHUTjT|sb&YF_KBY^*IH=Y8z|#)=mN9VgPP54 zd(sW)cDQk{(HR=o*2(CZL%$o4aXB<@JXH01R{f9r0=hjeLM+ojtK%w}Ln}+jq5TaO z=+DP*Ndme9Ze2_nE}H`HlP{TP4y{gmap<76`B*;wjmdz{##M$X4XFv;w{DlAEeFy# zbg0FW>!s0Gn80($Q$)@J$Aw0_4!xI4#^un(Q491}S^3CRc1K*LSFM3|m&)iF3miA| z$+#RES1u_vTY2Q!=K{JDd4{_*&;v_k^o*ek2i42C9QvS`1$sq(+k=3{H8%&r4XdT+C0a%ddEQI+eENj2R8 z-Gw}d>DudX>n=m%URfEJLyxJlKo6K%a2BBV!_8$inp__gmC<)7aN}kN7M6t*y_6D@ zHiyPoOy&CEN0-e2bS^GNb8DavY1nn>Q2`m3Lmv^hK!0>o@>oFcPo5*{G|;1~W%SH* z9m$t*IrO+(3v@%>GfjX#02dwyG|-2|W%P`paeuOm%b`oH?e)rnseb^vD|v7qoO1{1 za2fl5%&a?&J{BcqWDb3F#FFcYM?cHTx*IMquFyb_t(4JsoNI@Exc3jYjLV^qX|zBe zN~4Yeba&jA+@gU#0wp4TJBD`3wK}iQp>Zp*((t8Ydz=919^}E*dX56OTmh0XwB?vC zhd#bJ{dnQBwi$Dtz8oBSlIQp~I|q5KiDdu<4&vA&Zi}>vWK2xDl$f-~3k%1U%g~(H zNf`g9T%*uuSzDJib3Ozw7kS2~G_8^sZh@BRn7j(q=?W&VjCfhD6yUsYJz^@azUSsg z4tzNqyn2!6A1P&K@=|-O6fgU(#Ef_q9z`;roENUEPUY3-y};Yg6b=Nh1IbgKQiJ}l zc;Uuu8?VzF(|N6+xwG;*gI8}{hMdxNNnW^9Q>LTjWuKGGNL~fE$7Fh3UT38r_wBQS zu0Q2pOTeoSdCt`7y%R6{Y+z=*)PW_=Yhqivyq2{M%Uznr6=H*nAtW3#-$3p+0`=x#$M) z>Q5eABWkmuQok%`icMa)`(37;Ij`fQGA=L2i>uOj!G84_Gv@{Ha+Bwxgfp)~HBVyl zDpaG5%z2$)wve3HWicmSM>T%B9=ryS=hBp}jVZ5vt+rk0m!)T%F)z#Ubj~Z9ek}m% z<4KdIm)`d8rA0&g%xpcKg-Q_q_>TL&$S|nTD6@8!KK- zWiro9HW}G_+;lACa$Yy*rpXKTt7PmudEhmaJU5kVc-hL#D97F5b)j9qZgFgfM#Zbn z1}|I}e2cCfve|Zn*IN}b&zZ}sG9lw~dEMctU)Kz2hYgO|!^m^HM!#_HzD&m~N6U82 z%z0gG)^E=1PKW-)vbJY$9mM(*9$Z)LaxTY$a9tWN%cl6ud0kR1)8o9RHmB*A=dQ%S z68Goe<;4dlvNXKZyq+m9d!I~PuT@}QnAO?|eAB|l>%P)7UasPrH)@U@30?){xwl%w z%c&hw(*t?ruNS|MK9K3wwc`)iMFUyjT;$`b&80BbRIA!v3=5>W# zzy6hOzfg|<*fM`Gc=^dQU1Ps?mY3Jwht-#3w9O{3N7L;DcwKbElQ@uwk0E#-(UhZQ z7GKFLz5kUe8$GY9?E3Y1y1e@QRUOZLV=H(C$ulDpd8zqWQ@;w-(mnIj^SWA!i!XMw z%kI6@#~8cc4i%`~9h?_FT9PWS9%HJew4BTAeK9_2;@)XqGQaG9DX&yNt-SEv z6d9KDs!OKvg5LM(Gcq5%!sMwVXI_?d9B>fwvds5OUhG>J5|8<5dErY5G92eMJKcWa zdaX@UPd*2{hLh(-js3E0vp0F+%Ud#SlNY|tW%bkZy3P#8dCg6?_mEfC(Sfeubr5;x z=z%~S7DYu`(S*?FIS^q0htWbaiL!+=Tlifntdxx24q~d zF=k;E?y~j1RYu~)T8+aXx569$d%5hKIi78TCqCfFLTbjI}_XlTR)dXG<@_Z1{ z@Y=a?8oq^=re7ujTRGlohU4;DQlG}l^HJTgowvOXUWbwAqc#n%og5E2j60~nzO|Rv zM|>Ml^5wifZb|30G&!O1-?(cldklF#4mk62vJ;k#5vG1w)>ow7%j@kK52g2Nw-e{} zNg$0^-vZYyS*z!P*Wu(@UZvrs=8uuK(f_i|4H)AN``C@y`_!?Ukk^F~o4h`wbY8iE z0n;Au3tnT%vqC4Yc%4kg<|bTAgmcp!W|>zve3ND#horH1-Q$50gJrUMXW(E-#0EH2dLKU#W4gRNKeT?Z z{_SVL>u7vJOeZfjpJ4KGl9xmO%h`TSGnJF`T33-?A1QkK?2DfUuVcuww$54a@vSxa zGkM`Vn-)JqUg}h;l$Q*{{%3wdUJoXuKj-yxT^cXX2A8k${XfC$Sn_Nr*YHy7UnVa{ zdD+)MM18c+4+~xoyKTHSHKp-F|7+&RliPvUapc+L((qE_1e4cp$!mJ0jn`&}cKf%Q ziDT|zn^TS_&u`5dUQT+iwn4M<5qh6KZ-Q_1nHzU}rX4q<1X zK%O>@UA3%#newvR4t;%0Y2SG{7Mx#i;{`QJ9d~$sZ~J?R-wj@6k9L}ubJ8#S z`l+z@DeI?#mpTi=_5SbtG+up+0}o|Qco@7+B+vG!rX1BefGID0VO-|fEXNetaJ?^7 zHdK}4C2cY;)kn4Nt9aS_4nn`u$7$^QijsrL3tvl= zewROCooh7u zrPfUpFV$C3yd1{0DRUNrS5DlE)Yw$9YgQoKGc6EO>V%i1ZRZiZn8oe)&sqnVfn8$Rm_x61jLSB}+8^&ModeqcI&a0<` zye8EjykOQ)@H&mWJ#_L?>l0=YH94y?sh^KfE3Nss)P zc})8lmfQQ3v7#tPr~cQIH8MReuYt)lUZ{`FSN~WGUT5NixA_`gYP@HbqkV1J=ug;f zf~b%7>!XFdp31lJ!l!l9?SY!*?v}z)}P{aO}X^vy! z^#`1JS=Px-dD+*D3_D?$q0q0#Y-KCtrM`l|c@?G4n|MRHo|eyMgV#Ca4OM7(Iq8?$ zE5+oX)h~S8Tgt|iSK-qpSI%pAdOrvC@rTZg?;ZNl_IZAzKcVL86)$!Eit`#%p2jQh%ET*e z$IJq+3(0$!X1>t7r}ax6#N)h=H7&1#Ybz%Dhe$uCPk+zeh9k$0RWH9gA;Z_^=XuTy;vdnb6&@%>zDVq zvJ);Yx*WVNA@6au&b$gnmCJM#FFOa$t5Ee{OnIgBeT2Mb*U9uauM=Zw^78tUuRbyK z8}Pc6yk(6VUi+oniJfkTo+*_aOnDVdPD(${>m-ME`=mtgE}Lh9*Jb2AS<|1e=h@JE z+a67$9kO55p|`7hm)LlnT9+=bQ)<7xcm~t^%gK96tFyeE`q6fqX6U^`JCw4PCCc%o zHXE-AP3gQ&YYa!1b_1^~$UDL1%&X989mY0BGI*)+m#JTcYV2c{V__G&y+1RV#tZgq z-d7)g3SLq2o|*5=%Pt$ey-#V&MSZl(P{>Oidgc06k*;58x1XK0imkg}N!|*Lyeywh zMV<{_B#T0=!xXCVmy(yVRZ3oc@?~Vs>s&{9&5GUqGI(7@-g7nbDx7QfOH5vtPyR7H zVJFo1-sENZ{)^%@w$jGy!rZiS#D0^7AFezBy#7hv3(7U+_}>bdj>)S)-G^)PDp*`& z3CG)Q>1O{cUiC@o&*gQILw&5Qf9T{xt^lvA$y=$bk52swoa;4yCNHP{gk%3}o@oy` zughHN@>*9CyP!h?ysjbdrMiB!YG+M(723v>q8w9XDEeP^84A6B#Vzy1c|{${aa~E@ zP2mdgnnd0!H04<6#7nK|oAOFoD;2!#Yo&tMt5r5$R|V4K<-IEFgbSvv0T*~ycvX@28XYf(@lb(- zeibS^Zt^NrV{7Ioc&U@~oY!^f`sJ<4J#+c8{@`^Td8;(~hDhPE(F*yl3)C8IuWKs{g_`a9)n}(QWoI zxV&z5=zrZ*mVM8*OTp`U^4_HBe_6(%JLdHwDv7}u`o(|-nd z-9X-3-5Pl*JE(Zs=7J4-ujY?TUMcH=Lcd;fN&cMI9qD#8ude#%E)7$_>qhe4uCuES z_P)@@)!?P+>y4?pRnU`UIq5KdZzc*pW<~`T>5if z_f@3x$_@NBzThzMijnu;xQ5qJB-1f@Ijt)c+V~rG)y`Fvqq+@(^Ln7tiPv$VM_Iq{ z7V=itYj`<~YwdeujB?yrUWdzU3j6g?x}89O^|ei%&|k>DmAnt??1YoN>>PxCseR9^ z%tSlnB(HbhuA}?DsD4a+Gpm|0`Z~3F*&y)mEkR+B-IM?UR>* z*A((TnQ-RibRH&UonOdHeWO{*OX9Qt6)!dJEc0oc*Q|6qfpJH2=J@@=D^A{LHFm{Q9~Ev2n*;RQP^^ipQ`fbvzY*pU-wS6g5%af-)-nILTba zQOf%vL4|7?nQKIZ^6rjO;ji2^DnNOSrBwJ!DSJ1*f%;b=RLIc^{8s+sX zr{bOnd5#ON0r^ejn+UvfQS9VByc~a(Q~#%$nCpNNDwROh0Jb%PgOIEHw__gM4BH*7~T^#JWbdv7|9g?j1{Tu$81U|^1M>>@?h?ei zA1U3_#$4wh&I17|WLIyKw+8Q~A?_Vj?A_&Y@;!)nSe$~Z5(p2wsBlva3wdom`JP3( z)lAmjy(-{p!hJO{7P22wn1yEU0-pEWHac*li`-t8TMrT5Rp1*HrEm>v1CLqNH1OjR zxbiMS-ex7pePJV9{qL-YtCjNhW31h01K~M0dA+%Cc?Tun!al0snalH4D_k-1)p4Hj zX1JQDV0jzf72<@4Z*Daee8yb9=Mk?iK?6ImkiHih;Zse%t_t(!q8R$z( znQMM76}2ppNo??!nAEy7$SX+V~%9rZj1fwDUNef)q~6ut?G zKA#XlDQ|tNL&%POzxecG3g6hq#At+cx0X1B%sFh#K5G#Y^ybPm2fQIVRTFLK+4r>m z^$CS}JDHnDg)}sBrztnICKK3O`QD ztFd}@s9St>=oK_`Q>m~Cuij6vQ0&((t3BcLCBmb%6JC}s2iiR8$CF%E!=-&iExEQd zb)a57D#_KQer(5_)kynpq@A>*d?TILTwgV%l$OE^Pb!F;Qq zkk_Bo7kY)X??;b)CSlTVL<*L_sD5>168ukHvSemmx6ldHkYE?3SAeGZu(jzgoT#3SM#4vnsr zf-bpd_BVij0KKX@XJ~Y$Wb}-oEwni_dS?oH<(gA21oSj?_8Og`4O1s`qZPPgt`%(o z-C}{hrL@-|KtD)@Uz0O5I)=NRYo($b`Wu%8`rNWEBLMvn6@G(`m}6P18kMoYEj5`# zqa&*X-eb!{3jzHw`nMW2^PFG5%enU4pDW{XXp9OJ^nmwnKN!%{F<5AD&NceiGJ3|j z#@Iu~<fhCO!!0e_?dh;tXvu`8$L*T4M&q!ijo4B4UHa_)0;Ko^yRCK-W;= zcPUm+)@#pSB{F*E(5mI&xyHa!LeGt!Hoo0JKtF=+FqZl+I=S~`qG0{%t+UOG5p;a5ip)qt)(4DfE{|@NKFrsSI zK<`z)%g`90$+#REBV+{~yx?+-!n0>!;N0d6jS-!Ut`oRuKAZ%uT4N54VW5I`4?1rR zpdZKRFy9#(!^d5Q#$Z#%<?bgJQ0@#p;P9l3o_VfSUxhV(KMh0sS;)!74S-m&bPar)U<;3@=E(V9^FgaIh=OD*2#xRJ(OP&2Z z75*M~mKSFHWIBqMs`450!aSW!kMsIV%jmnq(A{A~=so5qk)z?tGR7;$(yfAlZ<>hM^PcO$6RNwp= zYuIL!FRMu-uMrWMj^d?ygBkO}EUHY8m7@>al2Y})*Z7KeI!}HAyj~(-`xJ9z%F8xN z74^|F`plS@We~=B#z(vy_fOY*UvAUH53gYD(0uakuhV;5TWH8j^|KT&y9`A++PMl| zs;9$wVSyx7zkJ;)`aLx91MqqU3n=Bz@-mhUnC!tp@G=%13_nqh_V!)hZexwcR*qP5 zN#%uYL1SAEECa7su_RON%*$9Nu=5g&40c{(i9-5uc^L~F(vQmvt3J%leq3Hy{7L2I zbJg}4ef^){wSas*b?vrOIjXUdDo1;nY4slKPn?wGg(b~2UcI6xFFbJ(c)doxUiHrM z@~HY_mZN<>-l&iEwn@v&G8@9>)hC(83)^q@Ij?#gcr}o(Prfs+owchebyTbOmXSN> z)vwWsSMhHn27}k@hNNM7}(Y{n}|>cAF;TWw&Xbdbf5%WIfBjh8Rq^=L)w5#aSE`SL5B zd0EB@CNIl+7Q++mw$0A%pg*DJ88|O*RXQ(Ev@8<;4ZPkWpC{qW%g(`QAMG4Cuav%` zUcc0=59d|bn$D}BrDJsZN8ptpU!kU7Xz4GR^1|K*Sr$rO4tBz+KY@J%GA`#8pmbjT zteYnhD=-WvW=TWIokV_hTf~mSk5a{;lyjy*Q=R+Ehb;E zZZ~<^$8NkFQ|zy>6KcAY^D0hnA93Ar@b)wQ30`lL51Y9h$F;_G045((Uf9u*Dlh3a z!f|<}`UzfYjfC?W9!r;3IDUASNtc1wJLC&DI`eYWF9*F(S+^H6g9lBkH5Q?<07Zp*HZOmfSN3|rxc^#VG4*5oxp8n4FtiRewzR@+#ys(GR!a>;86dNk+y}d2u zyzFylhJL-_lId|?hn1$wD-tQ$vJ|JJD+L@PAyPdKJg!8iWkC_ZPFQ4L|%26#a zFkZ#)$Fn+O_vb`xO?taZ{NWuG5r23NuQUGml#ExAa{PfwgW_bxvb^Pog8PSv7&o?x zzDI%XO-MD+t&RM-G3xzWIdkII|FxQYe>b;ey_hue1A3j5yD9|I9y~E`ky*D>d?_Y_zJe7D#D3H(5 zy;bmcQSXiQ>|H@Co&?_WG<{j{Pf+g-73`fKJpJHVSjt?1O87^~_dTiv1%ikZ#MaFV zW6V{AREp3Ve#=>hE9k&)V%YM@nGJ8F!0<+-#PJR;qXRLA=v!0G;*Ds)6DQwlj(13s z0*BO-|L9uwZd3pditeN=<{I5V{hq+~;Afyl6u`Fwi=L@8HjW0$#m3RVX$ki3v?LuE zucN>Oj(0kICNz1@6t~ zn*;-g^4#8=q`^0M1^IWW#GvwzRgl>>kQP!EZaH*PeD7dt<%4M8AG30ji-Wo&v!G| z(@68_2J#=!$Xw4rZx_^3?^ifaY*Gzi+p52ta5Yo!2Go`3xg_db6nL(M{5^R7o=07I z9lHHwlBMzja{Gdt{5@-!>&1NPy|9IPKNVrF*_C)o$loiUxn7D;?>9=3Zi2by)Z&Sf z|G)<3nu|L2?>fZg@#-Ok`Z)RfRI+#2G}`+uqTY*YnQLAXo?7zvZDX$ajnumdA^XRf z>(x>`F7gj>G1r0w9%yS`9dk95;34u4Drc_O>+!_MKe&at79rju#2Z@0TyG@sAl@)y zt~U|yO~mtZdA?OcfwwC0u93Yptbl6;T*FJ5>$6%sD2Ic2 znk$j!N~Af0r}B9P1wIc@;EPHY@{2}1$p4CZ=K9J_fiGLhKa%HRRSN}HHIV=CI`-}x zg#4z4{G)j)tC7O$Eb<@4U270>4MIkuEaZ21_Z{9H(aK!kga7xnuvx@hKQ>VB&R}*} zfVtKJc`YRW5qGVRP+)y71vc=!Z>YpyB^1~gV<9&t@zj(5*(~O2Mab4%@*l@T{!&kY zUt$#4RLkD|>ZZV7733e!L;eN?v@8BHp4-jfi54NSDVK%ZT1G>e1-mW5Ty5}giz6OS zWm|#*+p5X`QYm})dmElc@}Hc~Tz`V&A4%$8QO#U`Ra1!VK8@Be*Y*|)oslH}6qZV` zT`3+H`A=o}3$~Bo$)#WiH*@6>{)(XO;O{y%P_Sbh@8j%UrzYyty9w`D`2{h%9o)-J z!OkqV!Oo@Br)M+y&uU<ngZD^ z%r!VceLRiSzq*9EhL%$3R!HJ1F8TZ@1@j~1ujZ~{5$aQjRQ{P{Aw4lXV0LdQb9sR< z7$sK8T?I)B7C`elHL!Pu4b-PU;!SF1E+2C1V?CB8=JJaJ0zHK!0`=4jpQ#J7n|df1 zM4zWuF7>=9i@AzQ@DTFHb6bplPj?(F_<-kOxQl%ML^&N)&O#m(px~iy3YJte*THxW zgY-v4m}^8m{F})CLOyeitiXfNqj-RIsi<~kmS3LYQ|mbsYggjNcD zSxf$<9PdORoEWFz_yl`*QiMWZz;$vdbDfNL2jTxyc)U~Ke@Z#^{>jbWo!W*6wK&<# zT&JPMTiZ3H_oobWC?Wp+g1XBeW@~4PH$d2RJ zK6eroZ*M~3w#bmfoI>V&xMcbH2nn9p|A-$$54s%E%)Tf}FHrGcDBP19jF8^5k`5s| z%zxq0EmZtx1yemE@BpBZPvPc#7GKB$WQWjN7%gx_)#nh+U|8;tM*Xy)nEvoHOY8s*h9r^;KUv2P!C=s0#1%$0oCSRz+i3WS;SoDjgCP?0WBD)- zw_p%ugcF0Ya9cA4Fgu1HaK*VocHjj=Ht9D3IU;s|217%`PYfKx?;!3mEixP*S{APb zztM&a5Y3b1%78(=d5XnT(olKNgu^kq|A;(eh>h@B671J5OYQ`~AYXWKUSh@sLw$>% zm|?uZvCtuO;OBxG@7>gR5lPOon{M zWT$xzsgrRzuTM&xcoozgSq5JJCEs$4=XP3N`7&uEJvKn5tB-st54=7mUvnnB3R-2_ne+0=sHktyudf15@> z)AQifM7}RG;pN{Ay$_hO=Dfa%rt#|AwerUHh5LcmGV*=hpee^-LS_)MG3sNHgS^;H zN#e(3DC*Fr=W*U z888UYpOWvp6r*TDpO)mb@lWQtRt3YMzmHm=i)Wm6B%oJdJ`(eCR{LT?pDvMi0b1z} zhsJ!N%JnzLkAa3}e}-wqQVsMOC`s{Cxfab6^HpUnnlb4o%KB`x>TqaGIV$K;CkOff zdL?EeQ>?w2>xxDJY!&#*E&a^Xl##2f`7vlVAFFcRY3hH61NsZ{ZK%>f zv-wo-EV=zEhaD*I)g>-$SYOapqeb+7)a1@B%8=x@lkxkLk9 zT`Hqz4y|bOTyM2juI+UbUI%oNd|PytOLX#gE!T=Rhu-G02z=Az&HVtqntW}#$~CPy zJ=acUEygC2q9|)I7Gr)K`gf}#y}8eje*t<8`FlgEP9eQ@9jLV@L5*Fy-+NYC%-bns^BAQ&k z6p_(0&-I*I8J9yZwB~xh^YCT0tn8o3zi*=kdTy1Bo;h@VgN)0e7u8yFz5UU4NkF%f zf4_hR`sLlIT=SZ&&}`XVmG$6xH!cA5FWAdcuYsQ5D5GbdYh@EyuGy--g3h1RmF0R9 zyz@2Cua@pQ^fL(=mqTOIfPx-W9t{EdSMqml&_FLRqi3FLWfM3w_9Q6i;V%q|0Qxub zcdyhyHvtVm*#r)a9Tf_C;td|5 zW~ls^xtb}Pz@f4ENtN~92M(SD=)cK7q*((!re)Wml}+H#!^i^t%gKSISy?$~&~UWE zaT>>1s%G$+=UUkW0o`bUe!8I75?V}qT{^=wzq z;^W2uItTmi@-?~sfOZ}FLy!_b4vqbL3VOdMYPtZrBewPFx`iJ#$>^Eq`o9qwmqTNF zpo0GQ@2`IX=uX%*Sfa`G(q0~8J9z2m!*PkEO`DK zKzGLG%T`UUSN>0d>!B5G4t=m{x#mXy@kA7pS2=rQZ)cST`tu6OJo8*D+8i1?Mpdp0 zz6ier=zYk4NR|fri^g4tRfryS6^*r;2kf&SjK3kuq9!v(aHz}K1$ zE*JRWbtd#|S0M7yPk`Q^{Mdo$Y*L)c+Ma7s)=s%rg~g%AR$8FH{c2$Z&v{vaJ5IYKG`ZfG+__vk*>Kgl;?USFE(Jc@ zwPnf|Ujw=a`HwBvK(|KHq3yZWtJyF0GA@TcUNs-HUC(U1{ysqWB>(ZczS*yC8C?n7 zUb(btX6z$n@i{bhzRO(Cjk+g1fT?&)Nc&Hy*W~&)vu^63^=h`+G)EkIJdCV38P;=d z^pI{XaX|MX|B0m6Za3Fx@Ve|nQf z5^C_OBw;UqAqgkrsy1s1NvK}xY}fI{;iZ5cK>jmh&d@mGlAdcjw8*ssG!DebxIEWq zHCS@JzUtv?0iA~fGR+$3&JL<)ht}pA=WT4z6%iA9wkzlI_kRQQK%Bp+&_M4~E2Arc z@2uAE+bZMoTu*GYK>xZi55_iU5RUg~v>xYwWc19TbL|4hF(FyuX1nHhS&LbvoWVFf z6xHNG!940XiQ?t4cJ`y&Q6F*Kkp}ob396HVelN zb1CSK2Mk^T=wal)s8Itg_T@A7D%U#;t!Q(B<2;yzo*NA=Is1G-d&qxDxdys#ObSg0 zE$X#XuKU>yDGsJ7==-L&6$09e^J=7l7AF*Tlxsb-qRn#6&bCSD*{*Cl8pV-QK>o{X zG|&Ugx~a>xzN?s5Cnd%Oj-zu5`rA2wGc_y3iMlKe^uYfqa6R;(gbf;J@g(%zXsr5s z>@mpkk^jnS4fJ3$x-QpT;Kp$h2F1ehu3|7hYJ>h~(uAJvy5+p(w*uOa6M$|F^stDG zuAq0;nt5U}E-!1GB$TC%CXvMd%#ZD5xBi$P-^(6U`pZRvGp4DxRrPr&E6ZUbwXhcH0z_9R8{g)vz-~2qs8oU zUN|Y9#_PR6{n%^ff!7G~-(Tfij)6VROSMFt*MqJ!Ubt2G>ib?f4!jN_|FjBcUO09x z<*wwl8}%`$23VZebd1x*G?00g(El(cUML?0UL(o>aH%sd`wFF@U+MM>*SFMI`0MR` zKpjZoydFtEQ{{i8asCB|vE|EAf5Dy z)SBXtz-u)5AJgbpusGL(XUI#f)JnbId0uLnmdoqO^fQj&)%DGPEC#Pb$^S&mSzeC3 z)LLrhywpM}=Y_j3QuWJI8_zzkPZ#it;BJh#hL;*;ndOMfFDx-&_J`0V! zj5`4gJfZi-Ed_?3QI6s^1nH;eHL`+*VL#66rF41aT~_|=n>p*jYb@@FsnqC~nw?Yf zvX!mDt9^uFvEL5mg==U;D1#Sn-b$5M-@RjZx^L_bUPs_&u7HM@n#3}BS?1Ij2iA|? zc{`zwym5KWZ%OA>;F^2EvW?(%B>Cs-csbcGo2@l?sm%~lUhJwQ`D1>fe?O{D`f*;E zh)2Y2S4)WSN zmbY~9ec)9}{@2NwS71Rx<_~y=y;s}b7za^~Z&<_apgxYX_rDf3rOPWfFzJj>x`NkH zxbLM^!|V0>bY6=}Eq(?swQb9kSD-3s4JYJP+93V7yl|IHYB~B7uE!#4*Mis4e! z&a?-Q4Oqf)UbwQ*EHfrUA+O^iG8~uJyXo@kKhJe|{)qR%>sa!?qmfrYZOKr)RyNDD z8J^HDwPA(%F}upHAhU+!yl{z^^y9qn1(mdNe82kfA-C)eUdNID{iH@-Y9U?mvM*5! zUbguHgO`22K=4xARyePZ0_nUy%DQ4&{deGXJo!J+*{|cPW&TWFmep8OUby1Q5>D{K z1zA=5;b7P=hxRdGA5#kb3MMRZh295FmtLYi;%28* z{pvd{vg*<;{{gQPar0BThL>%#^$zU)$)+5b428VJeJ+d$^AqwqB`%3^d97?s6Rw1xpif=e-U_{ggf7& z8eXcugtQHLsWy(`30^k28uGHsP{>QIoN!*N(#tV#UCFacS1tyxlX1VDt{hc+rg*8g z#N>qwCuR9CKOrx*X`cBBUi-OaIL<5CoF=cloTkbB{xKZ9{z3kvu0L_AwXPd_pD&Z< zdL!he+82`-u1S*t6|d8Br61?@9i{Q=JB6OFZ@2@zP9gudWzOY@3v6XNNZTk!Ro59F z=Y?x;E#ZuERC70qms;88ynaaMg|E__5Lj|Ec%6#-2J@YH;R-top217iDU(;q`3zAX z$Fx}D8s(@K1v#&ua?|CN8~FNwckczSa`OMAv#T}^2CqZQtazdv?I$P%uY+YUi=CK| zl%AZ|`gA*yx2o*PY1f?uUZ;_Nz0R&W^`o0)(iZ(vdc$PMcv*j{98Wjv2j{i1DNSDf zjrH}DhWrX%6Ue`@)wvw^w0_}|W678E`lT(67shETM*sRGc%4rEO**@(TWS3jMN|Ew^8m zyRA5{ZGkjixKrrr7nZU4!ZXRAdLMzwOX-7>ml|s^y%D_Zb7GuV%AA<6t79G&D9SRS$R3gDc7YP%iCYQEvDyqCeNf&%R{b`@6^%XCa$DR`nB4>TRg*9ufSe)P4gJAFdYu|KxAK0gHzlx)wuQ}&YU|*eGb?WEX zbtyAm>K+u%D>q%g!0X>Nujhi-`4q_2)kmj!fZgGxE=l3Mx~8{7;ML*eeLeuM3vi#k z&VHTc&@bE_UXx=|7a6bO&&#s1u?{mamx7m-h(7}Dqv8*LTzcBTU`mJ7gDe? zVtm74G6kQ8F{IF7T+z8SLcz9t<|?S7P$*8p%@O7*uE!Ij;3n=Go}|!l_;iKUrqIFp z6e_{Zxii6tLL+MNL@AVA!CWIt@DK%SOPFgE-i^Y$P&soQ>Y~u-779L5&0LWfo-)Mc z@eXUF&|!@fygSa`9gcU0{{V{0gML<4(wB;l`S>ObAZT;mcHx)9qUXST>;khNd77tJQ0R1Q z-8eRjg*-EtLNl=Pu#K}myPWWaR(ySdr&3W#p$c5`xj$q~p>y$^(?tF*t;}^E_@C#d zP`fhbI=>!I44Ys|nd?HlyDpdf{sePf?4r;`EjWM_W3Ed}@DOf+!|4cGUImi&{etoc64zAdg!V)aRYisj(0U!|1)Xa{vNs}pF&sTAU4j0AeBimJY~k6 z?xAZF6uP$BxVANPU4-AK9hzLiLQan3L9hAfTIRaG4o?+y#?4$eR^ch7V2r=J(M_S7 zDkyj>&)>}r6uLQ1{@3bR$Xl9e$YJtU_0VkyiCfjhwXUJtfv^!exQwTAM}R_iWKr-A z&T~qXLQ^6Xx|8SV&IJC#C96{!Sekbsm3S+KrV?{a1(&Jd5|1#~-9W!PZd|w;x;LMH zu_AbB9eY;|xy-Jm0Un;e2Z%ziK}u)0uy@mXB+W=!K_y1dM<(#Al*7HrMeh}>dGked>woDd>i7H zQ1FFH=6VsxFB0+?W3Jgvh?`3V|7>8cm)fZ4D|{2Dwv%X}Jf?>=W;AED5H@a}q! zJ|FMqG*Q7#)hy&IxfGfQ*R4F{t8mT77c%asV(%8f^$J|^T;_TWu2@xQa!yEmHg)KPFwC3C%5fd_Hl;>_Mk zP$=OB>n8T@KL~kG8wKZbDZS&S(A%vPdbgatd$$Eo0|j5^Jm0OR(EIrmYUJ-4@vaf? z=5sEMc=sXReH3N!mf*ox9fGgaG1o_R6#8$3LQ8qxm&Wl|3k4Sh*t@0}o-zt8RHGnm?a^_)!em)@K-Yh*Eh0v zYnmwZEl|FzWv=h>dMN}(=1N3BS+wUI)S?cTbEM!s(PlRGNj8X&75Pq`G2SIm7umjh8(b1EC<-pvnO5pQWHW3p!70i z-VaV8JIp+5or}Uz@O(vv?0;FrfoJ=h`@LI7;VZy%KBLKcodXA#ID~9By!sv7`+Wrj zHdlrmFfi#5GV9gv=CxAz@-k)uj5PgI8)QhoCuz#_#{*`pq44l3W;$3%+*|E`*+jR5 z>^P<7`R6Dcjxz&fg!C;FgBM825;Eu0*r~@*xVV9tF(YJPZ&UJ?kl6>&w@C^YwJ>8S z)74wb^VmdcQMZ4P;F_tnLDF$xFEnF*IX z+lyhfJx5tnn&&L0aG;Vk1TxKQqh^|SmrHrJ8#i z`>(C6k(VKPRb$^1Ky@?x#D`JXmjlrJGe4A&x`iD^!3ZY|Nb$B@W<-o|!r+9jX`;}| zgbc?`QW)Jim?asG8`tp9HO#=uaNKN%4{l_p+YFaLMGdp6ULTR+c#|0ZrI|I0hM#Cc z!`FbzBS{&K8~*S?D3?X$%n$hxjdJ+vG73FFMmW)IhfDHV(`|$k&2{nCR@P)2;nXeh z=u*gVy!%o7a~Bl>c;Y}^9^Jw_>oX~){>;`vqHVr?~g$-{7zi|l}?tCyHcKbUztilf}Gp>xQ zjP(Y0|EQMz?|beq^zAFLp*)}U?|FFqqi%3V7hicAvtj7yTl~am65V~P-;gLcgoY=r zej{3$-@#^j?cwxok2&!=EIxk&cwIz(^l_beji|MxEk?P!#cL!=M*J8rf7c2pUJv$2 z%mS~A$$uJpC64kMRV&j$P2B^$4t2@&xV-*MAAO@7uY2f&=fLX{9BB+_ctv6|ojt?r zur`?<=k@P=Cwbk0ZPMU%Dfv%9PsUMRhwoutYQ>G0BSv*m!hQ7_s`56?2)l;-N^wG6uuIEM@ zeweiw(AQJ&<_b-&C&#TxI$5}3+`>6EGdL4v{1`NwxKjeJ+8(|M&^N$4p@F`!N=Dyt zuAQK7bj!FL8nc87`hc&GI0Mi(V)C$31N~)_jJ{)N(WPf$SvVo^n;T?Y2F=C^3c6%Y z{!BpMM8Vs1Y9>YwGD#yJ5#&5^D zb`tm$Xo2`~XiS=_T$f#baT}mxm`l~QW_KoJ^vt2}a?7|JIv%k=-@ka=*MPnSQ?)t` z#|b9mmpSy^wz3Z1)gqzMrMPES@Iye~O2MgQ7r5Dws@^Aq77eKwVKPQLrsJe~V#Lbg za!Fuq!zcvM>D|!u8R*=GC6APb)TAQ@!4i7+>8Q>+rvt`{&V(19_y_3RPQiOiHPWf6 zVN}>}&qzm%`&oLN&V7v*I%m|K-yd}Dz+`-jhK`s@*mHDL_BfsDN(-Iwu^U35GlhcH zaSa_cqRL!4Vx~l9MVKuyvt&wVnzgWQanE@Xbnc|!G+kk-f#;r~Bc{YmIuBY4Yt`5j z_XizF=0ROysqy)qp(Ezo=tRp77Bnp=UxiV&=uB;C3}{R zm}ocYU~ybo<<*fx*|_6A3O=6FQk#v0n9*m^GcTg-sv!~*A@qoeE?r}JXIg--H@3ALazoq{ix zYUsRf8=UNZ=TxjJvFvd=*fXG{Q{4FP|A5ZFu$4epSgJFbc|~{Xx~uGQI@pR}(7_zo zi}lN4S8`CR=EUvNF=q(gXl6NKKSoDCY82~hGMuo$Z&olj`*CROZBWo}ym{m}KtDpk z`dkh4TL~T)|6~sRj$6j%(AYYmpodL4=Vm}ZiX9ax_QcHfyDc($=FsojyHNAp7U>qa7L>KUA)J_nY@Ipl4t|NTWvJOJt^ZLEs8jZTI%Z&bjev*Q(r_2zTt>}tc8J$7zzUdJQ-z-foiAAV6W*=kW+UFhvom%YV zaoY>Qq_Z-?qO#u}qEpKg!#|9U|CLfn2c~EF+E4K|=P3%l(PXD%7R={1!>l(wPF7EB z6=3jO5=-4_%YwM%W@Pe@lvLA7kD+0!?6+w^k8A)hN;LmvgN=dm5TLc_~RUbebmY)`SvP;V#HB0T5yqbp5bxa8)~ z@r|3o>jet_@c)a~=@mBp`YDjc3wpmQ+7rc;^CAU*N@?#+y;t+wsvLKxK7KE0344$2 zqN)0Ya=iYXayF2hjqRklnsT&pF!Ww+YLNPco%7`qkooD$@y9k9j+Y}gr>61>Zfxwj z^s=|W>m_Vnb!m8An~>=!c}CwZ|m4pu+WJ`PVxKh6tBI8x<>%PaQ!`iB5`&BYN99WOQc zqj-&~m1!$pBW!-G9NB3SYdFD6Z7buvaL^=`m#a_pPgP$bOF8v8h*GL4$C;+w6)!cq zSG?2;2lErW>?1?LOKpMUy#8oSa0I!!R_(zF`ms2~WMiYvc>hMZlQdaDL z<|lZqtC0Sj*LDZJ|Eu}6lRGql*E|Yt*Xg|)$02Q_KBl*iYzMo_qz6RL#<3l@lx9W7zd&EYD0wLrRpB@6TH-ZAI8h?a5+jS zJ22$y~d^xW!fplK`<}Vq&0PR)IYZThIO2f-Z@15#ny537p?0?0p)z%J$a%u(fsx$sLknk${^-b|tK>2l?=xec4-Us238+J@Y{uq@W03>5~xfBsl z;b+TQ&+abfS6*+68%R&Dd(t7jYUXDbOSjha^tx9vzfEOUjP4QU_iK~%W4q$J@_eW% z67HAFF=8qlqV;uUCcaqqv5UYfXCZ}pr?glZi_fl|yDvVwmDh{!H)KHkSn&$+DUmAi zsd+UeJ~iRRwQo>mhT^Lo6gvRoTSTF}n%&esTZP{P+GiW^_SB1SOG&!;lt`8M)MTs@ zpPD7*;`63g-hqb(^p!W(ZTS4(Aig&!G)z}{#W4^@QB_`hg%*|99&Y!w&(f%sBz zBdk&?kt*?RZI)tI;!{)WOnk+kSIdLY{u9`-XLcg`>ss-Lkq zLSJGW6fU~cO+|qU<7jZvJ(X1SK(lcexah$M6+M_sy}|*Y6-~qWjcE}IZizD2ll3(C zF&wMiR?S>9Yw<*lBgI8eC;5?LaZtGEnFtllk_Uy0>YAyj4oB(uLE)koYpCdXq>Ek^ zQkh+kCuSTCE}G+}qL*5!&&3>XZY$;QS7IC#E_xXUTkG45gTh7g0#r0Fi+YWM$Z+7b zn)*f1B3)9!T(98Z=lk;5aM6NXDta}EL&Ul4-D@s>Y&f{Kjky}!RP=c(`8#qh3lmhd zu-Z68T(qc#iWW5(hlq>*jgW63`P z7f0}*j4-zd*V|zIHd@UXfA>xk6}?l7eSoFx-MdLV^~NFMqW5F`5OJRexg;8EXvi2G zTCS*OAwQ@?Zd#2)#6=(0QqhM|?5hi~cONz2iBr)M9&brK{)!ogh>LK^TG3Ld-c({C zKaSu5vv`ELnvkO=7j|dGnQK`Y9yhsGalGZ_)bBo=`1!Mjz5AqsiniB~|GqNj`m}+9 zeM+d;iAm=A!c9duj46&37vTVB(U(}d{<4a_`wEBH2iGE%M&??Tq@usjn()K%MPH-D zzHX#`H&?KC$$ZNHy2?0IU$h#mS7%Z18=k*4B~-N8P5p$-zH39AdgEw*(GQ6GeG~PY z!t?MWAr#p0!~aDsxm5IHlKS1rCI6EPq3TE+OfFg*p`x|9)Q@$`sAyd&LZOVXoD0`_ zNMb$k?&huyki=A2A*`+9-Np($0qS=zXZCX(?|{b-CKt6idFLVnpXkzht zxh#i>i~E#QaUWpz4X}58<9N!AL&U}XOQ^U%;b~#-+@*LRx6_)LYhVqYN}M2UW3IvA zGT4pLDMuKBRECtJZ(PgX4b8`c@#V#iQXGU5oem>|Ml7#fP?L;nyw;U-WsroOjtLCLt+xY?S?`$il7wyO-vTrLv|cI`X}2_M;{;3^>&xD2~^No=HYojtvzvb9)|65;I$eOTe2dy7$x4>0&R$$qU2$25QICZwQKd;>V`x-cL1MQCt5!nSKYZr206f zH#W-3|4pmap)5>C=NF#7PTWu@zYAA#Jky(v|GjB->~O35Rz$SA>z;K=B~>GKyfkm;>(wJnZg zS{d8QuHW>EZSfPPqf;B_qqYy3{t&JX4RK7r6*a@fKd$9DU6@f# zzg;J`#g9$XeYkpD&mY;AN|U$2)hW)D61o%-)&Fyc$1=U8LDUmJVLCdsvG?R7>&Wy+ zaGes2(`tETB&z>s)AFh+EGIi$UVRCUTTRbe)K<4&uzo0+rfalQjd4tG^^25t*+Tpq{t2i4)~tv9``Wt^~SdQzmedUv+wG%~#%uG1Rg znEuH7-B*<<*S5suuiz?g@EC z9+s2)UtYNjj@_ZBWTBoQchX)9Cvm$3s=Oi_3p?!#&BIZcI4f!;MkpokvnV1?8|17 zJN0m7#2Y)`wj6~2jyv+Uy~UlV)W$!Jn>vv@U&3XGH+J@ln*95B+}Ve)KJJ}IB6n8f z<%fEaJ72+-6>sb`riH8jJMPE_B|;~=6P4OHDx=#WMh+$S3Rno;&J1#_mL=HjWD@V&2(9FOe(bxO2Q^QvY{`vO15kI{|;h z*co^HtdGc@@8NQ$#c@Zz%lP+tN1eymov3U%!@+fzlRJCiau-Lt6MmvYZ{UP0;wO41 z?(J9TF?Cpu4{CZ}#}(;6HcgMe)JyW5udbR*ruV^>?~h|T(HpMbdebST;ks;^-u$Vi zPpwyulj%mddTHXAZW$8)MXOT-QKsp|qH5Y$e#}Fre}Jptq=~+z!`nH+)mz`{_R+15 z%9hhPCqGH1_rrBoFixvG{tx@QLon<%clf%P&v-E2FLd^iZ#fWMtOW&TO@Lk=1LNZ}ok zehn%QZ^^&HR}udh`4e34CVJ9AVIyIl{rcGdH@_$!%v{j6mi+n|E{YU6=|=1SlV9p% z4fZQ`KG?U1H;J=X6I?_7b~2TIQMgdJebnYqf2prCL_f5uzv#t&SfB9ARrvQj56VBO zUGS)Q^nQrSPZ~?%{1Xam2s%4~8eo^pISWk;zF7SgWd zm&mVQ;kvLYPJeA_h_LrB_@%zNWWRoJ{B53~aX+c87)8G7}ycjfnC2p0P;kvvawqFq!Wi9h~Xfq7C`=2V7Sxar#SbUyEN6 zV?@|vzbI5JY)^1vKZ-E0NKW>bdM(0!wfp;gPkue?+3zR6j>A>*x4XO0dD{}%4|3f9 zW53k7UG1-rykTG2uTFoTC!8IXx|;3cdklZVbzOCw{)#oeVvYO1kFT(O@wde<3Xlu) z>=(t*ojgxC(@M`cc=QnY^%q=|{Bit>vKQ*F=wnarN7Y`-emrUJko!^Xf8m#i-#gha zSE=%ixw(P-IssQ{S!};3P&nK^vKN}aHX9?j(0NFGiyZbVEF=D^{nf(}=DELOm? z1G$_4*Yxt}t_&xfP()^=dz`Nm3jY$kaD_wuPnz1gXvO|}rXi{>H9$moMsi(9LPU#3 zag~CL9!94({aqjD>rgyrR9&yA+c)BL6Ux`2nAflzg^zVTEsbpiRF0;zR_E)iEjmb7 zwke5l%`E*NyD$1^{@=SV`s@?G`});|yMT8kcc0p&+*QS*tJFJtwfodtZXSKvt4||a}Dk!#& z(Fsd@=ah?nB;%l#X#xq1gJ7E%m~XEu^;kJ_rY>` z1u;Rf)uj-YE1KvZ+dG3aj4Os^Y^5mcS^$f$f&OX5mXiCnqiq(PE3v1(vt?d)XUhzS~64KN?&En@(d)5>97P%0$PB+Kc|Fy7BPDbLXSM*)lvaErQ=<%CKYAFL3P z*%h!P*24IZLu{E!VM#K=_%Pd}#05)oF^r42MHVkCDO9hDdqPoQNu_#^v308hmbMxg z7qf*PB-xJYJ;}c0P+5Db_q0)1uo+?LK%ObwFZMK8I(cDS$`*2|j1oSK%Zh|#Pby1m zqPDYSPipBA2Q4|pUen@JVg*9E=Ac-#N?mg>-$^6q@jz(J!F-pNq^PHOl|f!y%TLU5 z_S#*;>k7)11bHzpT1n8kf_)K-fIXKMTA_~@YI>fIjvE5PvjT;r{Gs*i@(Y?n>)CPp z&Z>p;0ZJ_D7Zj4c$-?K92y`~Ls1JFyf#$6t4Wg`X8A;LfS6C^w`cazE*`+X?>l0i3 zNor^s3?tLT)&P)H5QZYIH=vTF=--8+o_i-rj`TvilPyrvo8f{qXxp-uf#oC>q}k0Y zw9sQf!&ju`4lcW*oRg|#;*^Nr7l~6cRZ7JDi&QC@93}DvL~@i&hZ1=PA{|O5K#BYW zkpLxAoV)o%4pBCp_U#vyux%?8Temd9c5@MIbsDjCE3JgPhAce5 zEt)~=2(PV&?V~DDb{nk@y`l!T&$;Y&THSP|AGSA(McGV>NTu&6+O{|I79}*UCJUeQ z)~qJv27>5L_o*a#2d$a>d?mWw%6^v9)(cfgH#CT{JL{0Up%jK}qu81qL{6O%hF)y% zu4>rE1Lko}qHGTNF`)qF@vP-;N-Ly2W4_8E%I4B>G_jPJfY_SnfO%3G{bOG$NW+am zm~ZllvI;sH>1<)1$~y0C`6XNMo2zhLi%cv zb&5u8E%qYo%mQScu86HCw8%P*R%z|V7M^HAR(b%2PD= z&z>gB33N<%=PiE`va$lm%H*vj3bK0Cgi_t|mug6RAe2s;|BM#aG)g~vuUY6^W`yaz zdWteN;2x=&EI#QEa_LTbja9YHR+QS|}%g{AUBAjE;4Y%9p=JE4E&4qP!Mb>hR?{v9(Ua zYlY@7;TEme(9(8(k}MEq>zg3f+|3tXo`zUT(DA2_EU}-IStC+u-5;>zh6Y%+1<_-A zwUFFMSBLMFA%7FMZ&MJC2aA!vnJsLlGtA8mRF)zno8rD`9o+maeF0)1H2W z?QNs2@&aU(G>fv2XzMC^HC0k4w(4lB&>Kpj&i~lRDbyJcRf#f6S&84>uD>C#^<;KQTAmi z%=>5@j$=Q+qOId)$h4P>vac&)Uff7q#bWCl+PbD5S$){E9kfN)Kc*p zAou4k+IpF;X^)nQdJQrOUCrj=6xCf`QMQ|AZc3h&sluGW^{X+In#{RYyMc%ds4tt4 zK8$_Y+enGwv~@POZy(JHi>cmF_PUX_o>h=O!XYgDKwGmbknXJ(TR#GZ8*7l>MJT3=`#UtVf*L33y=VqQ@44N8w6ktQS$)${7gay4#V zRPl-MTGIKy(3QvK4WYHGd11!cO`$cmc}d1w(?aWn^CFAa7}4WHZeKI$Jg1UI9fXD7 z8=-GkikxSf#n!QAIQCT_XJ(n$I$!Tdl~4uS78)-rc`Gph+lBzL<`s%E+CR3Jsowkov6Vz; z`lqVt?xjdnvxqznUKOG^-oUsit zthf2)s?8t6Q&b~vB}0;DUfGfk9HBGuy4Q9llcWOoAC+O9ch$tunQ;I7ei`tbPi;Tu z4@;&XhNR}m;k$2xXCzIfzlYl%CmA_?&`+Pha~4gk?TsOwagvb>c5nU_o&uWk+ZBZ* z<0K=`x;*7al5~iK>k*P2 zyL@o(czCAJ=`}svqKsSoF(fWuJQxT|Ru#pNOgVp4;id3Qsz?55Wg*GTJ~GxIy62OhObR|ml4;^W zL`bsht<5oXCcWZ2FbJL-6!8EftWzJWm)hu$e3T2%^*-d&dlLH56Tyt%(_-jM?6rUW zY4BV}WB!zyu;k&U7?KI?`i?sU&$V^pK}%S2Uo4%P5xN84kfcUDpb1O!+ONN1))ZIP<8ed6a+X2COoMo5k$EUAs9v)%Z=W*mlR zJoRS}Z&-3-EXlU#2VT#I#}`1pHLNpzW~^R9hmq;a;29T0zM_P5cHO4#Bh}B;(IYQg z0uSA?=Uc+owL6V5+MY80ufrFSBpn^*;;^5$HN=oi&gk8BEIe0G+fAim$(z)XtXfan zxu~EgJeSkakzEmz)cz2w?QQlhpvRz|%W9C{y*#YbUlYT6;?IMc-h*dM6Y{%Ng(Nff zmBx@vm_E7Bf)>ce+ZxTgJ&R(5Kmc1 zXPhve-(t= z9-izY@;iD zX9he&>&2tEuw+)tNRE(9G*(s8d2^^D9^r*0)4egQCnS9SSATehlp()QAS`*RCWfSD z>h!}6@C>dIj|@YS^1}%pcPZ%Ahu~;NmoGm&=hcfBAYtz6I&pd2hpx(gV$Vq~^djWB zX7Ms4Bo}%eGPO*67$U@lUW!aA5-&zVT&y#FOU*y&?(Kl`ly=PP)GQEiEiJu2J~xtRt=|B-isxY7soHdb(x|%gNUm zo{I{_tBkNdf1QvUP2(iN7v?^!XO8-h#w-1}4+z0?afx`j5tifE8=gyO4ooTxaq^{u zr#IPX-_*iYiMqWT>3o(J;^YH*&owlMWQ6-bKBo6ftQ3#xLvr$Ay{AMg9@vNL?j_Ce zT+)R6tOmh}vmQU#_7s!PJ;PkjCrC5RK4iC7VMtCsboLCY5D%V1Tu*Yhbf*oJ&8>={AlWiR_ecICri&j|8)V7ZjjzhS`xvPN+`f|<6jn(Ocf-}i zamJ0zf4e@+aU&-bN2omULe3ac*%t2cjj_F?C+^|us>-dtFvlvdY{_qiKq_P9t zSJQOxk5zsYt@4_dUqvcUhr6__6)L}oRynyMLZxe4&Ksn% z3*3`wj{C=6)<>(H(iEYx_DEtLsXPPjDJ88?`DL`qX^}Hg$IhZOr7PT1PnvH3<1zkK zw94th2rqltI=n_IwQx@_XoZ(wS4QpeG9^M~($;R*kjiwpZ}GQ6^3{`NPpm z=&4SM4(?l9Gr8@ER(YE?LgkLR$J&!hJ=`-YTjAx-XqC5@N2s(d-#VXEX25-0b1PKt zidH$ZF+yd}q9w_sG868Zt(k%ws-t$#9Yql;HQP#jq|yNQtlCz1`E9hy^2qt}z!MX{ zC6!rlmlw4{t z_?~E$cc(?D?7V35G*a0O?l~2$P`MXTyJv1$gv#ckbg_H7!+m#CYgE#_Eq{DEtB9O0 zx7ORTNM$zM^U7MGa$mH{drBg_9AbQkE=E#JaMKIof8Ljk(JJTHMX1az8s#RHX1M1U zwnF6((JB`dM5vt9_v)FX(gOFr)vZwZBcl59K7WMDv4|l@CPD zm-F@%QX5jNaNqB5h033zRaRC;c==xO)z_2C9&lG8j>?I(;YO;LtOvbejt9|$%@HaG z9sczMsmy`)Xn&fzkRNCQw z*xL$~hw7ueTogH9ezokbC8RPJ?ni1{q4F^8Q~6^rAFYY>a@nHGNo7yCA9b`sAvz%1A;C`a16)Kyf_c*=wRJ|PY@GsYrN;lk36}Lj= z@6mhQUl^hC;*k~KlgfO!pANP{<+12JzN9)r<&Y=dx|dXX;HGGh*fUYAWBhpZ9)Cs~ zq4MB_WtF6|7u-uLTcPsLf~eiIEONfgUpQUd@D;$lOxp^Te-%clT#g7Ye=7UyM^bqf z+|QP`Lgk6#D3#BZMyUL{+CgumQhLL^yz!r_q?g}ODk*bS9Yja=w_i>w`@kJ2YK6*# zswkB&cq3FUt-kkXQrQ>o=WAM_GBFUP^2NycvTw=Ei%DfaxL<6=d`a)}qg1YRM0j~h z<)`#1p_Kk`uL!il%cR;Um8+^ERGzlxL2-RK0Pa<3tx%amN1fuR!qvq|*HS1RsL4mZf)|{%l(>i| zT!J$zf?FL3*X0umg<^$Guh5na|LjyUJqYesf^keoKV6WfQ`Il7Fr~>cE+`@km1&`&iTJF6&^u30|eQ!;%H+?!82Xj)qRQr&-VdR0`1=gn?8 zfl`MDZ}1z*G!3!W>f^L}Y1lF!NU;vC_^qbXVCW}WExw?wcKG<$p2#HA!{81U#4#Oc z3|DV`hpTQ2)6pNdtXpvL3uJmY+;7yxHXVAyBh0tnwCc7nEh0G8RzLUVlzwFTT)5xT z#x_k+n*V*PS5}AX3ezGaR5iW3YLAUfkAVB_ia4e>1;f=_-|Fg?A^7UGz+2UHP46UeH#8FNcLQ-+z04S{-g?uj+iaSmgH_XW z+MRkEnLeL_hKu8ve%AZnn^xUs(-d-hauzLponWNyg-^%_x>kC>Jlcow*BmHfIKl^+ zMH_Ke6kRf?JS-vq3eH^mcTT?aQKw1amk31un_urZCQNu|BKdUz+}mp7__egf0ND%q zrA{cV_e-5a*{_fNfAfpJ`f|sfY44F=qu~BHUVr`DeyPX1@Jl34{H?z}!()RB$C6(c z!u{zE%|j3+@Cka*^la+ zr23_vlUlzYH#dm(h@bGw{Z+}|{K{IRy?ACutgx+g6+_FP15t?9POU7zL56 zsYV@$giJM7AtH5?q7+2xW+*+AVs#_ZGbzT`Qd&aiNk926;uJ(8ry8Lk0`S$?1T}S2 zL?x)Hn<5^;^=UYDlOqu*W=W01a4w{M2&b(JO& zX{xT$BqCJRRhmR(tGY^)h=}D?nvT=ylp+yG=bwe4lt>YmAlBUK+7kI8l3!(NoQTO$ zQ{zM|kD40i=|>4@kJG;;4xy7`ht$+K5p(49YeT7VB38+{gi;Qk4+u$$adIvz2&Kk} z*eEqMPQ)rWTT6x?C^b&Rx~QpfB1Xo!K^sbq6R|aF zYMhA4QB&hYERUKRCt`rq)Ho44q^8D+m?JecPQ*Z{sc|CuL8Qj1@iZctSSIO;sAV-t zS42CjNxC9RT20aw(bZ~_u87K3lXOKix0B@9a5nCeCLDi@dkuE8dLq*)1nj9+P<<#U*5of0+ zhl=<-H91to^{L6BA|6mp4i#~PYI3NEKU9-LMcksA94g`+)#OkSC#fcfiug)3IaI`D zs>z`uo>NT@6>*?ya;S(O70ID${EbMHRU>pn3auK4Ba&ui`ml&lRnvz>WUHD!EFxmn z^kET6tELZ&2wXLNSVZos>BA!8S4|%lk;0bCD?;hRBEncr9~P0xYWlEJCeON?#TS^d0DDq5egymYA;>BbiH!b3(hfgdPA|f?HipEQe zc)st)BHf-OYbwK%PZskDD>{%qb#cwDbm1Wm^RvoAl5xWLEyvHM%Ss_xz;_CC28t8L z|5Hl4MIlKV{(S!GNiTduA>xr?{FcCu$E0L0zLqAPc~2`bB-N_q-Il5xWL4~^}4OiJcghb3c&@#j2sVK5|#kYt=N)T6!^XG_U}1>!FS zZp8^heXrsHdZZ}&(_0dfj1z|XOT+VQRfM93B;$mk&RI2_;!=dpmH^8*VW_XvzC{mu zgk=9>@mKg6I}G*0sU~{8Atd_+!jiGWP~Vzye2tXs+Z>W~P*`7RzefbYYK~TqbA=?s zZI2U%I(>#=rIZ{NZhM?C)TOJg4E6jl?k#FjoG?`D;H~tSRJ5ot+;(m3Fw}uMbCQ%i zr$YQComz`A+@gr!(l##?bPJ88q4i6pq!*>sAG?`n z8A@!<2%Vz}!jiGmpf;JihDOK*+@EAUP8!si6{pC#j!xDgopI8j z`gQtVBwCa8BJNM2^RAj0ElTJx!bQKMw)?HalcBLRo_k5?jGY#tJGhr3w}f?HAfz)+ zTEyN!)lMlnE*O%GlNRyx;Mbp#l4HZY6elgB-KvD#kfbA|Gc$HtMCOQhK9iDHw6r~T zT7Bp;0%6#}es` zlNNE$ijp*`bBq$wnXxBkTEx|Jze$&pmllO3=X+a5NJLuM$Rp=&my*+r;;$IV^IGQQ zh{Uc=m(*(LowI1sR31x0GImjcqxVa&$lP15=To>VIyD!}7M8qI?N8ND z{Q5!tWm57c9wEZdS;iRFQxke?LRUdI`olV_iegBnd^z7RPwJdhACiodR`zbu;p;+@ zy#L91*IS!o=uEm|?2|z$c>|9SlFZb{>ZLY?#dq>v6scvRhG-Fm=l{Jw6U%39Pn9~a zs|riTPAmJNaBs4dytXbZ89S|Pm9e0INK*U});YC-IrnqTA&ws&NNxsuOLF`OL2^^e zLUNq$Ah}6JA&wszFh`FKLL5IhV2;uo#9unr`0)XAl-?lzk_}F6kerkIQOJqZh7cES z9j7)(&Q&k|k{mx)kes_z{3U&yiXge(g)Ll_Kw|XuX3ZqWH~y0A!=<9VB6UD=16hu2 zaO!~M233f^!aqN^T<6CHfL1`)C zFZsf08cBVIKD-c+(hMjL>&Yk@!m--!4k7gi8~|1{EQ_j`eHkOJv&}%+bfc zKPhIEg!E6V86_kAvwB7;NZ-X;HK|B%2r>tx?`EKBi}ddb7`8+Do>E5bk^X%RqYg-? zBSHK+BE3<{bwc`~O6E>M`eEKbnlz*zQJ6aw>Aw~;>WuWG0Y;}G{kJ+srz8D$Dc1$* z$E3A0kp73%(iQ1{%2F-T|MGE-bfllCVx)sk)4)g%U83|Q1G+Xo<}#s6s%Kr%oWYhyXeKVsR=rW5K*`PB77}=pSGSK8gcc$ceLf75Fqysur6{9@p6e;I~&RWdS z1znFiMsDbAvN#_)do^<&=z10~>IGe%pHTsHZYg&bbou4X^@h$<&!`V{1=4O`=+3HP zt{-%Le2n@-*RPh*0O-6@&I{eZ3g!kvH>iQpAm|1cGddf(A(9&mU7?n_Af7Db3~3-CV-(3h1UtyJMl7R?OTu=%zO?@X+*5_FZ)=NqAWuz|UopnIs8Q7LqfG%>mvx<|E)CPP;xYfOReu>f;Zp<66Vr$P6G z^mICOPu6njEzmt}WK;&7zl_nX&@GXgXF&H%A#=Aux6IGzcIcjMW;7GJ=VUu(K^Ktv z?ttzEBbSy#_oCEyCv+?7n41mVDlenEpj%zeXbyDM)r{_jjxV<~nz_)uT*cfx=w1mj zs(|iYsqY@>LhC5bhfaJKhko}$_r90W0_Z-Fb?<|2TN-osL-$b$qX(d?3o@#NZo8Jz zgV23a%4i{UpGtiXLHD_rxrd?qLh5@2y80&O7D4w_A)`m3`#Q*|3c4K*MvpMYLZ2_adKvm&UglnbzMzKDI_P_A8LfxDPZ^^c==({ZUxj{vm$?nl4>U5`2>l=_ zw+Z^e1A`2vU+3l0&!NA*iqRL) z-_XRU9{L-lzAvG_DahPc(963E&DYRRE@kc;=%>^&+5!DEFQc8%PnY_3L4S+X*8u&k zgau`bFi8jza&a)b|_ok4b&a&_7s3%q`ott|Fn!tyF&k&pOF^& z&!t>C^z~9s2mO~NT&jouD=C)&{nt`16Z#!#Txx)Rr`TsHLIOF0wt^2##741J@Nvq1ktIoEJP|9deb7xc$!7`dVUqlr;I^zu3} z!2`X#PE6^DqN#CGTQhU^+85bHKV@BNO3Ughm6z;M*We2Mn(gW z(N22hMMnDoa|4mlQDHO)8J#K^osEpNGDd@uacVuIbC7XHF{9zg&`B*LkdX=I&O?U5 z%jkS$oGIllKt^}z^M%MT*Kp}Y$gngp8jTEjC75stGHj*HU5bp{Mn+?h;qWrL92qW! z(G|#W7cm-(jQjwjameUpWaL9eK^dd*$T+Kx(FA1lk#(;`M&EMgu0lq?W=2;dV}R5* z5t&s|?iysi4K6J~<`(JIwa9!=mR^Un~~9t$gB%6x(S)viy4(7 z^Am|~M&{=dO-AMy(!VLl{JMnYrXq7^8l!2*+||HnIx=@lUv5F>cV6b`mD~3PjBZ8d zJ|m+U$ZV8$Z$svOKXbPu^MLezCNd97EwhmMvzJTnK<43kM&-ynqGfa^GUYhUC2CE#%K;Q|EOkkH!}Y$XEYa?f7LLW2ZN@B5xqE0@H4sxhBgh1=EIQO$mm`e zAnh)Ip=}*=_rcIXYPlbVQ@zYR07GZ#%Of!Ktzzy`7zQYe9*1GDWFf?>Fp zkspQ;wTza+aDEx1WiX7Aa?4>DoyOdAFkI|s6oBE<5=Jk;aD|W2i!h80Fj@h_xJE`R zVHjV*XcY_-Wa(-cu9T(KFkG#0=}Rz7EMc?;hHDxat%c!QAETFHxIW0}6&NNJFj^0T zyy8xv*XfgGKfemY6sdUw4AUGew-JWvQu8JlZmDB#GYq#DF?tP#8KsO~hvBwrMnM>6 zg3%i=%#x*V!BAe$TrCXu$kGpC=x${0BN!eEFsg&$5eK7>VOUhfXgi@IMxVg&nAGwa z3{OhUU%>FRl%sHhB|=P-@FfgOiy3_d!!xqRH!wW!XKn`!E47Sv!XU4K6L!I{T56#{ zhUz*l{T7Bb(wE&Ztd)K69SkoAxpWT<>%5GmGpNE!hV@!LUV^9)#hYAj|y>L#>uk6AbUkmLG!QeLr)D zVfdhl(JwH3B!DL22n=;zM!&-FX%VBNFns1`^cxJJ`JfqwFC}*jhOZmB^bZ(z`4}CC zA#^_a6NcSV%U>|;Dd5r*FnrH#qvtV(eU*YsOn_lO%Oxhla3GDjBp7~{Ct}QZvf3LNrPCK&WnCSz(xm20`i`rtVL;XyRV;TVefL#*)eTu0 zHOyI%l`Xj*$g)cRY{=@XaH$?K}C9%L^qWz-AVfhI-;$bLcUI}6z>ea!Vn_A2R1A7sB=!dzcM z1&sP3d%d4ge`Ifv+yG>6tY*%O>^GYk4Mg_aQf?5k-;vze$gZvD(!t2yDr*cu_J146)1b)Kg(p0+U0w<64-UQuB2%x&2&vJxrboMmNAzP|9c$ zOudU4-3U`(Bcq#O>JLVxFb$Ai-3-$}sc$k&XZyKy3QR+!zNs+D`@F#Z&fj>fN6^Wn#6lxddJIXK1}bHGrAY1T0f)vUc`lf`rMTDf>qcH7~b*l&!aOq<(?XG3?IH58| zi(&e{k9)9(tSr(kNXXY@2o$4eOb327NEf$2mAqosrj7(D}XVlAU(gvuB_ z3v+TEqveGBjGlwJEf~?av*p!I;`11*kSyJCRLP6%%!`!`)5q+7vyOz8weFKw+ZIZxZe!3OUk_lb3Y@Oz7BK$T1G*b2S^)l!8}CPeH-SX)m*v-=5wUa z@4!4Pz#M&Lyr_iHdoW*6$!IIg7fKuN!+cRWb05GwTH5#!=1YvsZG*X3YWWD}OPiRh zgZZ*zMjyj`c@3lOFprh`KB2F$mofJ#%)WX?pTRt#n9=7jUs=QG8<S=OL0 znNO3Y-_p0$!KJ%lE~{d+7v@=MjP}v@)P0Qh!+e*Y(E*s}7Bf0X-%xijqOiYv8yOvf z`Mv^1zrb86wfqY6!dm8z!u*g#zrp-iA#)T|`narn4CW;YbAQ0RG{ERM%+E;lC(O@E z^cT#_B{~6fphC#C(ZKw?LQXmbk8L5b2}e#6Ler^5V} zmr-Y!Kjr>wa~jN_OMR!q{DtJY!2G4GaR$s^NxNNP{svrE3-gW|M(KoPT^-B~LFV)@ z?-oGQCKKj8rHqU){~&9e3G;y}=DNe&B!H$(Hq3{Dj7%^eZe(PIxmjxN0rT&*%=Lvu zp26Dmho!6ZbO0>cYAziJi{8g*5G)z>jLwF|AUzlYi>a8op|HsN}~N3rns5nl>X~=~>C>JXrF;Xe2E1nPr>vVR1DvR|JcEchcqpSUl2~ zQLq$LaOs7xoYlbSB3SxJ|3<^oSGMwESo%v(FM&m#%i0vfGO&niTnfveAfqv`4E8d* z43;6)j4p>op4Hl10ZUtX(vc_Ck78Y{pJXjuTWK;pmBNdG9AtZZkJ}gzW%-svi z<0Xt1!14qb-3QBJxj*iQ<>^A^9v~#!Q3=aZ>C1zJj9j`9mS?5rhX^UmJq$~roY5nM zWQ|3zyy$1{Q9`ARs$f~w!00hT)r=m8<&8QwG&8pfmR%)`R>ShGY)3UL-x-;E36?#w#u`|@uV!v7 zEc?LdWmp=^7`+0^egQOX*1__l)VCg%15M1;!17ZAqgP@1+0SSLEQit07Y;)xhX&C>kxJEl?8u zjNXNktT3WA8&YLE-h%=kb6cUb3ov@0kd*rXO2=yEwm~_qnbAj3x>PW#gVNQ==wm3_ zGDh1$-%V%q2^77L(Wg){(-?gQ#ZbcNb0}F--xpBMEMl%6O1B0^UqZ<)X7m*lQzN6V zp;)|(zJa3DG1>v8hr(zll$?4-yP((|j2fWi1{r+|#i3=i8%kb)(RWZ>Mn-#}xT_g` z55)sUd!h8IVzduRK@+1!D82oRet^=ilF@!B1B{G*gyJn@bO6f0Mn*qD8Ct{WXDH`M z%}r27O1VQ&&X;nBpO3AHA5LAx!<8& z7GUlelqsZb_2upFRFEo9Ud%Cu@m?V#Mk9wfDgQs!r_1C$wH z)Dg;UrHnd3xxJpzDNtsWF*+5>9I2%M6G~Mv%Nd|N*35|3>+nlY&xEoh$Xqul z&o~%$hq6pzlnv#%03#C=dB2}zhVp_ewLp1M)=&sFvYZvlDnFwhP+lrylmlgLEh8Ht z$=RW-3o@4rWxe#OCzMyqnR7sq&jph5plp^koKRi|m%5<5A(0!(o3e%n$`&t|_JZ<` z^rZkwZ6$MOLHSAmO;T?tUso{d17(NQ(hth60CWAJd>dpm0Lpi=ZC)sQ>X;h{Wv>95 zq(M;jNw3a^(kM#@L)q`;(jicOEMPPg$^k#4bD$jbF)D=8B!DJq7?eYPM#G`};$?I$ zlp_s{MnF00XLKHv--;QHgmS!u(O6hd^)VU;Yv%?=v{KILrHsbI+C|ow0P7je%v}kq zwu;eJu%;I=x*Aq}1EYzsW;8Oo2G&eJqY_w+vc|Qro>|S@b+C4qeRVyoCWW~hU^Po_ z608=f4RZ>r(aM+iy(7Qs4MqDNt!668`^k!hL$nxw~IonFT1aaeDWbr-{0 z*38@!u+EU4J_+k>b<8~l>&!GpPs2J(YWBl=M=f(pV7*gev=r9aC5)bd^{xP;Ww72Y zxo2UWD_gW2)(QugJ_qYP(gRw->0U2$&%?T)meC8a-e1J%MOYt@{;h!Z!E)wS!uk*x zt%CL8N=B<;eWadIHLQ*6LZT?^}zWsF{i^=Sb#Nw2`_mp-q9b*Y27 z^{_r8{i}iXSub<1!n$1gw*l6GpSg|baX@mLkn@6%xy{H~QOM{uyruGDqvH zt*v7826EPG8NG>|jne10kh59({5Eo4m%eO4&KvbC_YQL8Q>&zRk@K#!TZ^2nqEM6c z9&+CIGun!r4`to=k+ZFixet-^S%A?t@qU?76jJ6}^JL%~s z$O+9&pCYHZnM*%I&aoy&pCczUUwwg`Kc%&LmzOP_Qly$#`Eyclgzkw}P z%I$y+(wCjEwbyd#F4#Ky8PV!^r&KWd7PeEpjCRA;S=RUtw$o+l9@x4Bx%7M3x|T57 z3tM^tqkXXH0*o4A%K)PvU^A34+7Fvidio=5-K5+B*s?3Q^e5QNQtlvZN+okY!`8#k zh}QG7NqvW4vo|q!7`C3WZNI?gOk?f{Y%b}`udwAyeMe#I)ySp4!PZ+^Ylf|#!rU>~ z1{5>;12%7v(Q()Y`5FBQ+u2+dV7tDSOWVUX*~h3O zY}43AavE$is+sEy+sqP1r^8k*fF}72*ya>5(!w^kk&zCzd&(JQz_viz$b{{FA9F_7 z7RnmkU|UqhTzA+Wtz%?@P2M9Wn_*ilOD(WHS;(bU*p_%1^?+?@6Qdm1mT4K;V0*Tf zksY?>vNRVqc{C>Xgzb6hp98iRrRF@?Rs^|*6Sh^Qj9jp-mZfgkUMgWOAGS4>jC#Sg z9*hcLtEp$y8@9~_jQYU#x-9JrTd;ani-9U?YQ)60&IT?N|SsgY$tq-u7N#C08MfU?8#Eg zwXmnuFn1m7FfzIx_O^aTH^AOrdOr#F4u#C!2z#d>qf*$r$kLl(KSO#t8FsCYOQ*oD zt6(%0cD?j(8tj>6%uR>gP|xTV*o|67Ww4)F%IH?uv&$LHfZbfn=r-7u0!FvPZmnZ9 z6ZRZ0qgk-q{EY5^J=e&n9CrCEDEUsHR#|`-wtLas}-DeT?pbeLyp#`LGWxW^^y?gQQmrU>__!y$|*welEQq_Hz_Q55Qhn z&xk%nFua7(gRq|~^(}<`JTG$(!G6Bf@-Xa0vc@B@Um)AD2=*(>Sng5SuWDda1^YxP z_ZaLYmCQX3`*i|nk{82%y^qlou-_oTo#b1PuKTUuKQ`#f1=73>vdT)G%IIa- zD{C0N0{cP%G|B5=f2fktde|S9`f6ZbB(1#)`=heP2H30WSZ*Wik5@3-1p8uHcQfoy z)HC-Q>`xgPy$<`+C5(cw`u&*d%x%XgSS<7fE?5n+u-iN)qn$ZWauaTa92>aS5=C;B9N+F|q+8 z-y!$PV&?WDccQF8>(frEWNtrlGjeYcK$A?X-ImF^hmd<~ z6?4BJ_jW0F1i7KHdlb2MHgV~1$h}KpMC<0xk-q$n+_}=fW5}IX#-)EC_a4a|NACOz z=Ke(Py|s+~LhgOC^aOJ64+t)WR^@%5fl&f-A9OHEMD9ZNFQpA~AChuO$bCf1rOC*B z*3T$~P#vRGR3Aa|WC%|h<_Aak@*@vC6e4Y?Z|8Ffd`v~ot- zaHK1YC}QwP2_rKcnNrSzjMHkFqm>~|g^aAw{{}`q;IK&la-jdUhB+G?Jqj4vq5nn8 zC>IV}kWo+Q4@yKIv*@WXmk0e%rHq_# zaJ*n-bPe#W*FwLkkkNH;$m^?=>!IHqVD1Jusw)^xf?i%XrQ8U|8b5P4 zL0>0JOW}A$%iPUytdl)C8IF)wQ{Z^DoJ*&|u~EuRgJYAFn-0fo;L=;*c)f&C85}`b z<5oD{Xku;#9B&mdx*d*prIwj+)YdaM3y!T`Mt8s=@1s)6;rK9(xjW(57GN|Rj*sdX z-37;XSvm)fPYRg38;;K;nhVG0rOeHPL*8$tRKW42gSmU)_^OK0d^o;tVstMYJ8Bp$ zfMb^|y$_CW1*J*3ACBF!^Z_{bNUjo&@BIR%EQDjfZ23cQ9FSf;498CeT>1zc2dfz^ zf}=^6J_^U7a^@a`BXq1j4oB$7djgK;3NC#Tj^8U8Jq5?HT1HR9@kaxrrN~RrGI|Di ziBj`2Kq?YB#(AP2d9P-*483mBhwVu)Q$ZKEB=mq3;C}s2_@;U|?tw3I< zCPpifmu6(N3VEmc8LdWM=Nd-U$U9wXc?o%4q?R?vJ0r-YYmpbS_A>I)rQ9pX)5#XC zM_y(T%h5-34ASQf$UD=>+(zVeD`T_?8F|%=HX|>)lF@6(=pnTPk*9c>djlDEDfcGw zdK5AD7BWn-^ljwXWa$=UWJ&Z6@^YmXTKBiCgloKqjPx`{Tao7iqxX@~Mazg*$nNW4 z^fB`KN&h}a-cTcRUm)+C0!H=7E39DjCGv*VFrwUo14c$)BX5KNniR?{2#t+h$h$z+ z*p0l4i@EeWp%#6rPv4{ct*^ z<{#m7mos+&PLI^`6PyLj%pHWYcPXQv;p_`W^pT=|k~;)v|3>Bx!|5$z^b4E=rL`k) zo-Mgw;T$ZzItu5IdX{U3vruxs!#T{)+#hgWQpo5}I4^TBIsxZ6MW9s5t@W|B)C4#u z)G?O`=T$~VZQzvm-KoiNUMuBN;Jg7`nhNKn0!HoOoYKIk1DsQv8FhqnI(wSh3C>$8 znM;FnMlqvP;k>PkQD-=37BV^w&RIT2r^9(i1tTq-cMG6NO^0)?myr(6c~YMq&Wa}H zGT@vqwPeD1udLe*&Z-hFwZgeH$S4QSXR8?5;S5Osdcyf4nClIvyv9uJ2j`{$bN%6b z&B15@oIxX_fpESh?GA!-OAT{p!}+elXfT|$k{bf&R>=*8^Zhz5JqOMYy^IRs+}6lw z7@T#|m*H@3m*`wLKM8W_2sl40WpqBAUkac}y%5fZVn!Fi`E5O;(QtkjWOOl{d!)5X z;M`ZsTrr$K$kI#U{L#VO7&s3E7+ntM&(g*fa5l*rW8pk(1c9U;7y?gllIlqle-8Rsc=vqi}s+$LKM*_BAkC4A*|C z?@74iyq5YjTn8Oox&*E!AEOm;ooHmV5^jy`t5t9(`kAATC8l^8y##lvw6O+mG%>dp z?sfubQeTFQaHo|sdKK=@WsEk!eOeWxjc|AIF?t>D z424k;?#yCFZ@`@;^}PwVQOn$0aCa|ZL<^IfjEuIxZI(6Of!k8c+`Diq^^EBAqCEuA zq`n7tA0MNwaQBs3-iN!NpScgwd-pb zIboO^VB~^fUXYO+hWU+*@(D>f4-EGeG1m)*`>PnyitHvoqqAW6L)PdG*EdpMA2?Um za%o>USJg41IcJSTH0P{sV2+Nfgp1uk^8*l z&PVPGvb{yf-B8M<7a*t3$Y>O76-lVwfkDF?R{fHwGCM z!#uf`(WNj?En+kV|F6Aofv>Bo@@{!~(xDo$XmuDlRHk;iI#k9-eGFyLPgYoC$YF z|6hCWv-dgooHS`8^UZv{`Q4j+*4}%q|6Y6T=hq?T-t3!(gtpO}{kJE*rI z>dc9^$(#MdRT8_|JNwy(Bm}3LGpi(2@LqU$mxQkM&OTk0<2vu`DZbEpyt7}Z@^0~7 z__O^&>-Ek)N8#)9&VJ5Lp%uNepT9>!ukg-($pHzKytAjP9R1$eQ%8h0;GKQ8O1ITJ zd+t7=ZS&5arD(XfSXm{sLGRp06c^lEe5MNF-s1F~5{r9_r_YoS?k!GJd2w&CqFrdX zx9F)@+*>?tRA{)jcxtzVaBuMxUqZOIc#`6bdy7+*4sdUA$|{L{gID!uPeO0>s{XiN zLT~bFpI4O7PH*1ZRP39*YSkxtH+j`Rua{V?7yj5TA*>gEbyz|;YxVeug#Om6d1O#R zSTDS-O+vf8>Q@|;(A&J~*DD&HeE#`Np}pO!oq0$?@9=8w=#~(keEx;v@-DBsZAfUl zy{h-_lhC`ps-Zdwy~nHSQaRr1RjsNQ+WWk!XQ^29%AXh!+HKzKWl9I=pZBXA!`|%Q zv`H*ZSPd!!IAPT?Dzw|Zmz=Hg-r>#u2}x7D55gtmpoH%9X1`bEzF@;9Yj;WrPeAo5e)o7UylTJD@GMllqV4l)KHV;~&wABw zQCRNtsvp=Rw9k3fdn+Y$zgPXfdI^2rtA6=G34Ot>d^tKPi3hlKVuZ{BTtCG?m#Z`-hh9{1+IqE13z_vYWIVn;nV=@r^HJUHl; z5Y9C(t(VZZ=$KbR-}c~?S3=*RLtY8}Bc1U|=$|||;*}8AGiNCo|4awGLi-mw-<8mJ zz1rsvN$7iC^{w?1`aT`*O6XtdY*#}6=E2dfgbvclu7v)b4t6E<13K50&=2WYS3*Cc zQ(X!D2Oa84=*M)XE1{owaHK1tLv*4mq5q@z>;V3JvR?;h7S`y5}F- zC4_a)9V!RbJs+wR8rD4@-Y+4ndpA*_4;ai@f^?zvBK#?x3! z4hs!WV=Y(Z#nV_T73bg40j|X2xvWcfNeItnt*w_3p37RN(&4$R))ArMxvblij6c)S zEol{4AN`BaDyGuGt_5~==-G5oE1@&!oK`~5 zp<`MJ&7f0S37tuYv=VwQozY6@d2~c8p_z0-E1~Dp0j-2yKGstc1>`Ls<#UrZZUy zy@ZZrB~(QxvJ#p@2eJ~HOXsl?I**QHB{YvtV#{?Cj6ww{`Sn)aB-ld6H_XGleb1o=j(7DWB`>?b(s(-_cv_DQw!2 zDQ+p`HWfDY<+?goH+1wa%GLzgh4L3Xi-EYpR2WDc-C% zv+7P--MFk}Y0H&Uycx3OnYz5CVd?sY-1^2f4Xx{!u4yKtAtqeWaCzf$`^O7`_j6v*d=#^o#a$Ym+tn}g%&;C*bBDwc`A$0AMLj#ymWI~>N<;IdUQQk+Yqe6BrA zkj3TaS$xF{NV4np%cV|F*^LKW3emoMl~8hA;n z07&qjVIgR)O!AX%m89o7L^t_5nmX$&bb$1(!)^}pkmDs(tRN%S_3chJ0121}?2e>jMc0pN zQuW5%U>|Cx2c1-2S@o-TF|NOJ>&A}Uw(df%(Az&S#e4DdcRS>sK26Tv>PN`nEe+1* z2jwm)bcxM^sBa%)7P$oC?A^H1mxT7IAiPAWvwQ2qOB&=i_sM0xKMzb$xed8Y3W$m9E3wbF{OR3cRCqb%T$qfFW1nObULqt2F!I!k#!pvLKwjxtVX?`tE6Vn=D9 z(9x6Iw6&)PZ11mfiTN$XfgO%^ms`uPjtH!0)BF)OJQC7y3(bvoNrfYdbgp8 z=fEa=vS29aet>L#*6e1YJ)hwsClavi1XZD&ylCEQuB~wI~Uq%Mr>{_K7H#N$hy-JC9$>e>$DxE8msjuEy#v1_7 z{(hArI{+#2{9+lI#mNkoky%rlL|LrfT<4Y|M)Dkn^6VUsi9@RDlmk(S5W8}nNHu>n zOx1ir8o+iF%%<9;o7Bktq`KwSd6A*@vb=# zrJ;N?uB<2Ric$k-iI0!)LXR`xl6_>@A#iYesNErOwEE1b5b~Wt4pU85{8tV;NjO-2 zS>S1|91r(P;WU8*+}8pp3wbQ-Cnb#PgL4#V*Kr1drd^YAF|h>s`V4ypl{W>?A?fSmNm;U@ zN-BM-DOvWSc46vtv`qSD2Y~c3lz+2RS|L(?X_pI%ie~qbedB11ES*&FrnVSab;`j_ z`(kwJu|=_Vpiz%+8L>%m`Bq1P(sS1;luj<{d0my{a;N|w$bQUJH71EhRJC5CN-v3X zYCLGHi|2<%vM*Pq)Cs{5y#nn-5okPA(OK;=qO1i=aVqtGgYPDVHktpznK7bL@#P0& zWToP5l`*nb@%E7zomIM{7$X8iW|fqxt*NCtH-NSuY*F%w@5Vinp1OOB%8DwP@qQ}j zSyzGBwMyc_I&-lE6&JMV%<998QrF0oxpbGkMh#^y3G6l6eCFaITzgE9i>6T;A&#jVlOIJ{U+|NGwilr+EeeR%+VL9hE>kHsIuceLrE??aQ-v4I=;ak^V z*-SxiI)aPSTajkQ?t=(cw>BgAnIQzHwsdLnGd>f@wE{h3XFaY?Z0-JQNJOD zN8vafp0Q8#yl%q z&zq?urD%us1!3Pej0?l{0?PSpokLkDl)VmR5h?pd9LfSx?vbKsbO9;%x|C|6j5@h$ zBv-dX$&zyGAy6(^2h58-gr=>lf(97zj{Ueit$77G2MEq+Zd{vNc3ErViZ+n$8Fol( zm##tOWKORF?eym5RKV#3gD}g#62U1`l?67CE5o?~jP#kyhIzUAvh}sOEUmRqbRpMh zGMVX!opSnG;W)igg~_ongs{p+E}Qm+mzZBKv;ixqhQR*wkdCS$u%Gzmiokxl*IW_UujCY?E0jE#W)fDT2mxzS zOrRPtgX!(&iZIVOXs#eGxTH;A5%al5HhZ<;1&2)(k<6?&*{Hr%tIQQH)UG_#$G3?F zYU#-nJWlC^Gw1#Y2}J+Yt6DY zT+1Q2=gKvE`CzrN7bc!Xk*6TCStUNZ9oO^aS`s%=0jIBAx?)B3GW0B;-;2wsE3h5w zjHzD~BeO&q+(xKmCnZP4%o~azUed63>9W-g9D}|nz->+r$TPk$9L*`C=NGD?L>Vsc z_oGA^`#vwlvpi*pyniH`QbyAIE2Bh?keMZfG>zHyn3?feycsK+XqxBMBYg6TCf3L; zhb7$Hg6To+Qbu;GNZRRnWP^mX;CWQV$txNeKJTCkOPYNu%%(XnP+5FxS7sE;h2J3LY87$OlRW6C(`XVz1gV~x+G~UeiA$3`cThh23qIksC zcGeL3tJ>9Nbr7J%X8I1P%dEQW5k&`sL9M8&bU?-8CO73)kKz)aicjJ>y4R>M=F14& zFBh`jgv)!(qp7j#wdcPct@szXN448#2ACu_B{4F>12}OW&f56mk%~xy$q^fLqyHD-Eref0r9Yxsi==aL@8K>UiQ0{ zCOhHK?65n#%cXHGg?nA~hDI@5`5R5F^LO9+mh}+xOD{7GqKq1qCN%Qmh{+ByGNtvh zy;Q$^gjPi{5$#CR^0Hg@m~`-boZ;jZ@8k+1G;^W<3q&jj4aBClADnd2y@2>D zhcqs3ysQi*LKIvWs12^O+e2I%ijB_!t|z?A8Qm$kZ1s^h*Pr9T#XdC|mo+89g{h~( zb>?V@>kT&zJpf$4@iJ%Pb?UCZPBHqrIy5V*o9~Y(Ezq8|Zh{}~c4wlNWq?2;XLP8VbLl-wk`y$3}VexR20b@Rbt%+ivuZ-FV2_W84oQ`3F_%zyp2}_d~?}teJ5? z8^*V&jwIms2)_H(Au~KueF!1&{dFZ%{<JLH6Sa9Z)wG@jHs|usU7f1%IkS2ncu{0l!1|Hmg%F_{Bl_DSOn( z1pI=2lCRD?;1_f_7?zuMUiMUUFQ?#fVxDurZyUZ<>ZT-q_u@OGj!WV92)_H(?L_>J z;JZuR?8D>QGZ8wZjsxKr^k=rK^F;V%C{Q;L`M@^5JJr!5JhWYj&_Q*s2shPN;R{Z@ znTg*ae4CMmHJyF_VSGo_jdw5m*F}8maa%{?&KgB%Slw>NBixk;9rUuitBBujeCxcd zU*we!y1!Q)N5n7k%^JqT+`Acfu7}V8b(j&q?f3@jBqM%z;|or_v5H^hn~Qw2M|m|5 zDd!>O9MRzUBRC?lOC4UosR$pT!(KL!5(P*ZASI7bc-ibIzQgL|1Rn7&;#;q7RC(E2 z;HcfB4vBc#g}}eiQztTTq<$~HL+VDZm%U&nLWjV!nLHQo!na-BaK}E3#MSX?%@DrL z;3Rr!@^K>Nu)1-KUvOy#mv#G@vITML5Z5YYZyiBsm%1hBWiK1T7hHI=5s#V!=M})o z8{GIki0@u?0}cmUkm@QQ52hbv+y+S4013PWh+`}PzWC2Ohxl#7w@RHV#P4BzN7PXl zFWZSco!y9+vga#tyyl>~i;G*tgZQpeM`*a3;LDoT@f$B&DB@f1Wv?BigliFZE#i0v zhs!g3@t-&Mxq!o$oJ32#NZAVtZ|CE81m9iilrPr+2#uVZJ&_SKbM_Qr#_mEA@OL*Oz5F0YZe*BnM@M4bS{?=F1X z5r2d!-vBOes8_ekz3iK+aMSn*7TqFm=U#+{Abl58-sF4PH-pm~M|pKKB-{)Myb;Xx z972fWePAxn@tvtoK;m}<-(6mIm!y0fQtm>^TYaXybqL>Pbq>6W3M_5>1FS%#}}!2T9T6^go>CrN!dTL522mvlq4ru2pv)xK-)?n`loLmM+te9TPA&1R^5jemC!Yu%QAe*i)x&o`rh%ff&oZ=I zox0|95#OEa&^0HN__ld+^3BU){L5nelOu0lb_6L$cB&gLUiLxH%RX>G-J0>TUuwrU zP)Bs|yBFUfb@&FqNAQJAp3U*H4};&smFgT0ej#r^8(b?|%qpgMPh-$8s=dD(ABX}a3;HGZ!Rp(=Gc6u-##edObbZ~X4Vcc(h(<7E%G;~S`BJ@`e+Un1qNqzu0X z&tDx>M|ki%gm1Gt;Dg^$e23L>9xwZ(kI-Rt7>LUXeCyRw9xgoa-K7rtaA|_?6m_hJ zix+&Gr{FVn$_ueg>B*Yxo?-6SVmf^<)HS7IaqUfiU=o7me@<(^xGNzgUQheYhna!} z;eSb~R_aln&v@S2rygetFU#qJN{J0>uBW3ZPkZ)_kG)5wd}1g}S(T9T)JJFa{9L8{ z&8SIwVIDgKlx{OwQHVgt;P~z)4QDKNuAFvk`+p%R(g`s zPe?iSE8jkRK&4dcL`hkhkaEgR-^48u;rY}M|1;&?2N|LqwPiq>+|w7D+R7m9%6g_^ zy6>T*P*nc-=fm}3N?SWNuQl9*H?@G}fJCrbGTSCf{hW7o( z7ZlIO_M4RVbSI>oy6jK4E>bDKUKyrL;yLBhZPT%kWxb6Knv`a}&Q3I>?P7@O9+X;T z4L#tKLYmsrB5g!!g*3IrBx_&Xd(cZ~>^1-S#gCqbCFq~M%+giPG8EQ+Dd97~HM5yI3!O{HNc+_B=KXmU~e#;VzacNra^%Mp)t~kU@U& z(A+1!_#?2KisKcrZJZFfe~|3>36W#ItSAn0tfvi4#NgbL74!0M|MC%tISI#^f++G( zOq8YC9GKm1ScVG1Lfz0r%q4*%X7Bw!`4Gfl&#ZA*ikK)%C8lb(VQIy@JEV!2OT&7= zR>!PA)qNdePQfuL>@T>RsbOiNELC+!w&L^-<9k9A5HYI{JEb}Ft4m)8G1%T)-JBxk znc9Tix~Xh0FU@Vuh9+Xx79BBve02I7A?7qMvu1CKm?%r7v>BC#rB&Md_ZXUpX&QCJ zd}`M-e+)6t!11vlMNE{X5)<7sk~V^U74s1>Eoy|oZcrxNFKw-S-&M1*K?$G7nRWG1 zdEtJk-3>z#+(V3>*a6_Y3R7?n3M`+D832riuOOThKIAKmv|;Chyq$?s3W z71NF2ieVLf#jp;i+5Kw{M{pH}l5l-%?p^;3T$Ns?dv6M^FYPpZY(2*6R&d4e3off0 zYhTwJc5-up2O!Jz)pO+fFJ%46^-ko3i0B}9W%ehaVWUS?p`(}ZhYdj!`GwH}F#L)RCd_2P|Z0@s;d zX7F$_uI!RJ!)L78IU#}1A(LJGY=%g>Pzn|%4 zURQ=o4xHis$*|!AT;o0o@eb6MS&}n9^Quz_cBLY?aB^7p6K6UnG)i^%F9)vYdzm+u z)uYDs^CQQCEB$1GUD^n)o5FdHi|a>c4OIcx3%tym%jP*6*RR_r7nfZN39h%+C+X|i zFa59Ef$Oim%v*|a`_j0c*f+Vj?BYpq;S_m7J$_@xksjbW%gfwSHqX(xp6s4fTuz%2 zT(=%h!ga@MGqZr}Z*a`KY@VZW*_HA{>^{}LaQE1hQ*hz1dxF0H^}(vm!1Y2e^Y%k2 z^=OyYlY{F+l@VOKhmvsp=To2LJo;=e^RB%qxa?Yda&YYl?Lzd0M+Fk}^-uL(p9e1A z%e<#-o}=s0F5V{x*M~T=-~AnM&BB8iUNSD+b2WS>MPJUr9I40K?KtH0_ZPnY3GSlc{RAI4oPx{t&y$1e zbJ6yA=guU3{eIph9|5ixdl?-5h^>c|ec{gYe<-5H#z;&*d*)x=a z%l6Ncqc3|%N^pH_W)iN`+aG=haLx8IA1#}&>h?I(np-Xkfv z{ygN$+kKGps-xqQej*W<-6j-VckfEVwfD|G54h%dnNN=-kmk8HaLxX$x3pKVUTbz0lx;<9UX!G-70 z67+Rn^PkQKu6bVO{+Y?Ra5ipIap8QM;U~DhIGTj(gYEA=1Gvt|b8u5qaM^8Y+ke&9 z8{VWPwZ~Mu$4NVrS8(Aez65>Ee)}!g0M~pk^T7TTTy|f3a&UbjER*2+a(fc4OaAo7 z?*LcE%RICz1=j~A*S>K2FrqI!p_rhrCtfh`zkn<7G7q;U3Poa)Z?e3^VP2= z&cC+qdwnZ#WxdR!ehMzzKTk?MItQAi9`T@Ng1%qX$I^)lbwor25u&y$1et^*Of z$HTD+xT=nLtAJ~Pm-$Y63NG6}PYNz)PfY3&kMJhodeAJzup4 z+b0E=zI{)f39j!ROv3fl$Ikf$a4o{)#g!?zFrn0+$-$)#AcVN^0Ca-Brabs@_7inp z=KBXyaD8OohgVtHUgpObixTbrj)RknOC7`s zapC#*gnB$Q`oPV=^-??^KQjf_?L(7`OC2Q&as6~}60Qe#KPwMhOT5hgIhca$1K~J3 zIraE(y(y>E<1Yr2a5W#A{x0CU$jkhEPYSNL`G(Kr;8MrA$Ww6rsy+$V^u-OQ0N2aB z%rA>6xNaGlTwLlvT8Qg6cAn!rt+#mSwK(l{YQ2|v0)3ck_vVQ~XWx)SztSkG2nTFuZ0@@O)rc?q!~e^^Kt(?B3zTF?=B$AEhq-JepJ&&%W&= zSf8A_0v<79{Y{9$?h{TN!-IiQ1ToOHMuI)mwePtD81N>|srysv!mbf5hMz>n+4ObX zLx&<5PHj%Y@Wzb`rUL`s;d#pL6byDfIB^UQk47+fQ<5+|dh45B3=9{0!82B+V6bby ziDURGq^gh9#k9Ri7=F;cf#c6AFQ_<@g2B$iCywE9KZ0R;dlH88E7!44Z}fuG_oQI3 zYr2VJ_(59)LuHVJVdebBmjVOc-}n4uDo+%SOz#mUSA9d;KOaC4i*1}&;T?z)<*G(LQJu@R1{$?Zz z!|>g2cpMn;*5I=arC_jqoy9QTe$t*h5)6JZ3B%*Nu4O;j>;-4O4J@+ zn4uDo_iB}IIlUx;CP^T&dlpB1cvo^oA+QchU{74 z*k>_(9~G!Rq@~{z`BJ-1Ci5t|t4e5_n{Isf^}ukM7o5K;1w+O+d@P29c9GOq>&FO~ zU-SUyS_Xr2UuJk!_Bp_CIo?)&B#I&QT#}9G;rQ>%tQj(85?nRAl5qLAz4pVvb%hsH zkEGzLDH=Z1&GF-E@(n-1wXiJ-*IRB|vlqD9ykNo36kH1@dB5Vap$M)E>O)-4eZOzl zfAed=b)^^7HK*WO1mNm35q+iG_!VI}MPKlKm|$P;{AttGz=ij}Us#udYw@mQ!Ie61 zcFyAouKImRxTZe(51$6E4PNlFLn*jAcbDTT8IqjyQftidw#Qe6_A0oR+rH6hk8eGr z9-YOhFZY6FdsA@bD-8%+kH>@S)geE@1>b!M_4voG1MR?dwHI6*>o3E8q7asEa&Wz= z%9K-Zp?T^jc!H+3n;*UH1%Pvn7p(Q7Y8umtROB&1^b~z^<0a5(X(r1LpE81?^=RovkuXqX&+u@LJG^*_oq7`EyMh=W< zh>^n@8sbwSY=Hy7a8c22;TVYaV4px--|j%X`mDRV0I|ahT4VMZLbPH+h|U>0p~2$f z&xR;19vO+i5r|KAM`-3k{}+gt*M$(9+CE;oBK8=VzUOLZAVO~ZTR0X!mPF{+g+My8@@lx#~Oq^wIVbm zpl=bI4wqMk4uFDn{vUz^Uj)Q1FK8Q%YCD8z#aM`un}6D7BRAf(C%nHJv7&Xeat?}w z5aHCsrUS$c&5jnYI_pNP%Y*BiEgJw`tpNtfQw!i|gJ2iW7cS-gM56eU;r!ddSu zq9~j3T9Vk15ju&C*r)b87_m=X6#L|p6whO?VV`PaO-aA)z$Wb(hnen-eYPkt2)s(g zLfpUpR~rEles|y#B(ljJLX6m_h8VF=4Y9>HVl2eg5r?KBS~wQs%psFb3}R#WcqUwJ z7G9cL3Wx=~A-BwCwX040e2j>0E9+A=MEksog&4JCr9}(JLVRIm1Y%eC5HaQkOTTd4 zX@GdG7jy>+x+;M%$ri1u+S5uMun=CvC! z7GjcZTR0YC5atz#TV{q3o7&!X)gA8z#6B=vTk9->G!?BH&C zzZdjZrD)NLu@IwA2=a|0iK`6wMT@|xWV*#+uVEmXH2g0Rw^fD}-PCsbQ)lD>aRBcd zicQVOwAuQ4!xpf|u-QnuF>H3#e!~y2$3J9j9|?<+t330$AOAXvvegT=9f)gN&ov_U zsr%!Ied?l&cgAL6v-Z@Ct=TCGY<5S{f%w*GH87!5x54ZB&J>6d`_vF4_NgI`cgAMn zScq*0t+oO22H%0W;-bsi0dcz*T%R^%*e6b<^4rSnQ$xI}*@%&Ju-3R8t5MCuu@J8T zSM?E_z0uBlo7&EO&&O{7#6ciG9M$5OHX9kO#<1B)I&HHS4vUgLWLzCs*eNr%*VKpF zZfd)Gc=J^#$__6WiuDj<79}zij8T+Gx-pvHra>3>xEJ}aJscKgoj>!npLr*Way?#q z=S6EJ95SpJRFm6$-R=~_dHt{hapAl# z-2;d>c){!Tr9iY|EW|e?K(xD!7GiOv9HRB(ZXw#8Pl5QRwh&@d+ounIza0=?=>>1B zk3t;NAR<%qF$^M-ZVZDM-0c)){QdEpy|5^`%HQA9%x8;Ur`e5CSqXBVk_ zU6k=o;Vo>|it3MtoT8w!yJ?>T@dppSi=nIXUyhjUWT{-0A8vPP=N&BXd(YcfPW#{G zs{C!f(E;1udAnHNTSg+ZZgZvnOS<|v4OMdM-q31pIeh)jHGf2v40*w>Jt9Qa9-%ngA&52ojr;l&dz*Tp~4B4k9rb|b0i;Ymk>^K zd|ctfnTk&+d^p*#SK-6?f=?clbhyj^>1GMxUi;m9C4{@%_b7h2pM39bq2UhhXB8LR zGrezAXt+yxf0cxAU-0vXB!oM0U#yo9Zh}3?z?5g;9@3ZEB-BpVA$IRU`z4`3ITTheyC{JVEb87(qVt< z=ldmu?VZEEgs_Y9YsC+n6;JFG8ukQ!b5KH9Qa@QIA*@J`?2-@`e!o*#u)ca~SZG+r z{PBo{unPEdvxK(Mg}8*a(|x#v;QsaGK?&`k+i(e8PnY2mx`FP(CG<+V3YXBU=q6l3 zH_}D8gkDYe;1U|5Yj6p@hHk+n^jf+Em(c6z4qQU7rz>y?y@77PCGA(m za3lLS2PO1oy8V{WO?3G!p_}RMTS9N4t8WRtm2SQz^tT>dd`svSy7!h4+{DgPv2UYW zZ=u~vm);WkJG%3h(A(+CTSD)k8*d4{lP9$)!@1e_X3B8x@ zx+U~Jy6TqD-_uREgl?mYZVA1g?zts2OxN5J`Ukq@me2?2l3PNz(;c^j?w~7f34M@m zxFvKaU2se2Lv+6_p*?iHEujz7?Y4wILYLbT`Y7FPOXy>CwJo8K)6KSo?xKrr34Ma@ zwI#HduC*ofNxIdR(5L89TSA|vJ8cQwO;_3y`V8G@OXwcD(3a4>be}CDxC$;R%%7#( zY@yvpm)R2f9NlG0=zhA&meA+vCR;*Zpo?q?eUa|5B{V|U*b;hxZm}iwAYEch=u32m zEun|#3R^;7rWC#$4-=aHf34NQctR?gvy0MnfKhlM@g#L-{ zt0i=RuB#>V&vaWYp?{&vY6*Rp?y4p9J-Vuv(D&)4T0;Ly7u6E_H@c^m&_TMUme9Y` zEwzMxK$p}K`XSv>OXx>*MJ=KKpc`rl{g^JOCG-=zpO(-ex}KKMf70!=g#L>zrzP}% z=x$m}QXt_M`Gg%tw-@K(z$Q3*LbNOu@J(+=g z|G>t4Z)bOAvIKw+UcVPC!mCyBFS}@AAlKR2TKUg7e5PcxH4B4<3xaCA5*P2yTezrt zioakIF{HBE+CR`y^8G2BOZm;Ii4d{1KVRw}E5ZNFxYYVD_LT;5#f}n+or8(Y-*)Wf zV+Ai#^_@`v+3dpFnrQu32h|G~O!0$b7dif%|DV@?CNp=^KGUaVGX5lU^JAaYOV_V& zT;AZfHmqq}-n4ebWy{w$wfG3FY+TW>c75a0)v*lfa<0Ob7)N4rOH*@8W5fETEm!($ zo7Oj^CX|SyaT_~#JT~OEzPr%x_xEiY*xpgf`<;Eg1099le!tMWsjsx9W1!I2OX8+N zSH5?k(9z>}^mh5hQeUxD$fFP2q4!%uC1K|eI zFO`rU68i?a^CiEluXF1bfb5qfU4{P6p1yu02)QBUKzE@8_~28>t90mLyL=QC<=WvF zw*q88#0kTJ?v7sM=opar?cIgWZWr5tzrCa1@7qXy<-6wj+Y1BTeOm{RBM$`?z;b)3 zFffo8{q+Nw-?u4Lj;@Xn+gQq43O$tyo4W`4p(pf=+wxsdVZtZmmJl~_lIAv9O^a<| zvUtq}Hu7s9C~V31cXq%+vc3HoEZK_v)2F%ABB-QIpSA_|g>_c-ey3{HnGUe;gCqteN^f@D-Yb4p?z?#cIV9_V&ra@$Kx z13E&}r_H&LxeL8T*o^uJ4p3bhAjK#lx;S0Xg~Sbu76(`R8oi-bXyCY>J`Ff2Tf+xQ z6P%o&IP~m7vb5#0Q4oVN*=tosTu+~d8IB`@S7rQ33_0*3mVJW~+}XFamvE*}Lj&&E zk{>{$pFWMMYi($_G}o}UVu@e#lCA(sCUHem?uwSi^$oezO)4TAk66{HBC2)7@}(`g zhPL%#hME}Nq_2%Lx_Fslv>=wj&=&%=l)Rb>3_qQl`nO1VSf-Ai?HxP%{rW2QKwX>B z757}nzOFaFSuVvm=1iZqF~7Oc3o|Ng@~edAFInPeU$QZngN{^1Rgkg&(j`VOkWo<~ z+9NT$2s#pyu~t&+3{jhdqy$%!5Y-zYsVZ_w`Q9$b$@ifD41r*1?#gfK*xECIHds-S z$+#jVT<8@Ej#LIURT+gVM7JJ?BxUR9&sVX~&`(80g*J!9a^YJvF(qV0a)oFzY*daG z!HG)NO(q(FqWIa1mo>NgYx=tKA_&PNcny0Ycd#EIYPZnH5mr@btrsuTu+R-rq5MRZ zN(#jX!5RX9jbv5GLh*eobwdq}&We_6EraQdv4jX#HI^YTP<&rPv{&^9C}F6C7@t8y;}%1j!V}7uYCEB-Ld}oS7LCRY1Y;rA9Bj-4z$NNFoTy+d9=9nN z@nQXh#VhNd#;hDu&}iKlW=*((dD&;AlDt<9X4DKM({@96C- z_G2O_YuuiWfqbrS(cv|8QdC!}|x6Y{KT94pJJ##tAds@Ai3-#2xQ8GAW8 z8#zYKM4=`pWtJ5UbM$gqVaYCDX0sSJi8*W}GZ-n_h?10zwQxgAOH&K}YZ0O0h~1>v z0;c}cry+q_&Wgz_namH_^Kblnna7ZF?EPPD)yK2>3ru70|1PKw7GJcVs z^B2=LP9qDwxl(=;w)6CcQvvfZkQEJ7S$Wt*a>?y}Czb3Ahe<5oF11yxCaXG!qB(qZ zq9|WYR2yVDTup2f*=#K9?NnP#Ojy*Ga|9F0Dl-`s=?`DGw9r7u4qQeHOp2v_RYN8?l_bYbd< zXdVIBpMOQJck7l&o=8MAPfeCO*@V+ENp#d_t}BS}QW+#7n-)=>7EzNHQL7`&+S8E| zXk@DRPDC~>qBOPvBc#^1`kj#7JaNpjJUaEmm~h2ou< z2rJ+Ks{|xY2B#zhJ+YpuEXqX`iFA8$0!WB7dAApEY(&Q^ zM5?jyh8IdD(QYe*p2W!Ac(;vcy3Xk^hQP9nF5{$lGESn4G7G)kg^h&)-OUNm2wjzs z#g}T?Qs~Edn9gopRh=D0;^8gWSd7yxNFrq!qDI?^NsN`C2SURsw{Zuik{B}}Oc@M^ zgH5nijh5U(l47F`%M6B0tf89W%pvK)%AuG+${}@jlydpOfv_Vc7IYniz7>^T=JJNq4uQyX4-h z)$Jdt+)mRZA}w5=Aq_=Ay*MGlc}w7)5kUjdrcF%Y{UEmrLDq?oG`#UHm8~=;-SsU^t5y6_7=#VhnS;6I zVLW>Oeg)!?)CBkoFDV;9EAc)n8AP99GYv*PN85@CA2$GJ0K-q9OXN{|Xb9|!& zH;$v&c)A*sO#Y7(MuHxYJ=8=T#`vsGDNOhz!r*uzV}^8vdhnav36MU(CtFU^5f*$q z9LKj>(xRZ8Fp8BQ+hz&lqA~GYU1mm!?#sy%lH=*kY%`kNP~)lXc8bH>Zl#1o;x|*& z7-zk^QpQ&6AK^QDHYu;zZdri4$eRBu$#Tw6{B4T+2u~}@{9I_~juIX%~6t>on@HIM9st8`5F_)rreHgqf)H-OP?Z_%EnEk**^>oP$RTSZBAwLCa2j)BnT~4 zmqSa%mCdWn-Q+dfhM`n9r`bBxk;?o{PP2VTsj+5&Bo0MHJJ;AEq%tEEb&4=Tswqpv zoyC}}+OkC4Vhoc#4Q)m+84g*Z}>An|NrM0p-FjKs4TdU=k-0R~M_ZR3}xPab6K;8UK1?Y5k%tv(LaHil4B zG!)bAC3IuaC<=nz@?5^kmss^=IA&+2Ex5cpb0ZvCWN7Rwu}e$q)Ev6QPC-xT*eFLu zh6}3leOmt_Kf03j<2$5Okv$V^hYr>TqSUYy*@vWH-`CTw$c;T|?{LkfZNYg+})yNd?o=-&8w&aCqqtd!Hcdw7G z*NB#MvC3$+TzZ=c6%sD6q)0|!g5Dyk&~M#w^IGST zA!sr*oeP~gBzZfd+sYy9VSOqZK9~^ zn#I|LlU=F>iK1{Qp$?A}qAIjSyV`eZXF_$gFj17;yqauL`u@P;hy}7VjzQYKMIWq3 zt2wG6qn*SJ8KiPU*6qoemuW+erXI_XDJo{j(aa8WTMra`6j9}dETW=@JUODu4Vj{1 zhCDf<$_<&KVun09qRI`KqGE-*@qk>3u$dc@U- z!z?f15)PAS8#={_5fUdL?DkJ&YGFs;@s5yYg^6(^-mgr~P!bN1uB2GEGC7jMZY3fq z+N(^Cq_9_UCB-_G$&nOxDz2nhpE5a;!al{76zftZM^f0OIFisKI9Ik4IQqzFvatt@ z&G06t2P`vSN{Siqd4o>DcX!ld&);T$yUf7E`f?~!wIf6ptw1PMn zuvgZqj^4TITx>~ykv1FG3I)Zq0@5U`ZsJ-2S4S(jO43T$VynkDgH;bNSWacFwpFD# z(Q?Ppa^p8F%J%`(GGjuU0V<1o{|1eYhQQljD$>ZMg)m0sMvO2bR~wSE6i!(B%0q=aSIJeWDl?N|_u%eV(v&V*Vrcqi3=U&1 zm=ozfm@RIBSS4549y*#nZNVHq2NmmZ%J%*v_bau%#{t+?WF)n=Qa3e8Hnr>@DTT0H zWsTH7C!qy}>QEWgR&m08y)Yg3lT+{fnVkgp7N0I<862%DH>oaSS~E|%Kj>-%!VF(W z9q>UVJk9Mz_9X_YP3E@outF2sIhBjqBg`v1$Dci$GfD8PiCRi@_h0KEy8G{7)yjz+ zZ;2*`YFyj0)%-v4o*$IdZYu1Pzb9NmQ8>{{ahz+aXh#hmT9TOX~ zkqL+`w-H?xp^f0$_B6^ybZ&A3 zp(95&+@yZcbkuYts3&Hsch-*>NBVnd{pB~@!<_mVX~qBaC++R)`PCISPihIX=dSFJU&(Czw(vg-le(Lb2)Qq))eMCVXi|i zZgYs%=!@a^x!BXOqiR-jQ_FgPP1D*&xawXE$H|@B@VqPC#`=quyBL4v(#F*dEA&OZ zf9}AndH##(QJ9{2#a7FT5EWKorI{z>{rq4t-#L))%9)~<{9y3hpc_&o`s(g$trlayW zptAG+Fr1FbwWJAvLbk1ZSc}hIZiI(}7_P)*=@u}I7c-Tz@uaxMN}qZ%gO>w>@&+~*)q{3^x?str+(oDy}xjM-aj{>4aHAu zjgj4SX|@HGbuuOi&(7K|$7wVPsND8PQ0P^;!0f}?3>}H4gr?;?EmMTJi%}tH%Ntv0 zsFR}wM4xKt&?BgQe#cH;^dPF|dP)8zQ!~rKF}*SngTs%^NfNw20!L){;z|q?5LfGS zkQdWBbJ9izT}*-GbR~^AF_!ZaDFV5hu|YF8m(-{5HiSgh@yG~g+u0Mfz6$v|BMv8R z5yY{$2v?_{CR=kE@->8Hyt))UqwbaQ3d1I>&#RAE1X| zJ!zFj*Z@bI4M`C;Ah>L3_;|u*yiQutkjLwz6-jX@Q}r;?YtUz?lOITD3ElBW>bjqz zf7V#?$mw*OEj)Zo?^I=(+}H#^t6?;KSfyu1Y(i#pbT^@BCd$GLePESI(J?lu_{J(r z2C7Y>Zzv^5)-g7z_M=tCPv{Ay3U?zDn1^wx`HU;BGI5b*bVByfVOLpB9pmJoS*U4tH1Scdl#{(n!r{|);lC*J=y*)8k1nr0+3XES5I=WSr4 zFAG&VO4A>_P%D?MUO>7-?dE&7KvItCy17Ewk>g9Llw&)&nbXZxj`C+GZrm=QgU)Wa z9HrALq1a^d>MGK@v6DqU5|)KWc%?iAhnJc=T>+97fu~;arP=6$kcN@6EG=IdmaAS6 zO)SK0buNjVOwC#z>a9(9j|3RYy&=tegSc(=eY|7QMzHTp{Fow{6Kh?iZ8?@X29)Hy zQHrTFAyUne3c&-veR%C(ZeTD+r(mk?be1qic%?)oaNGj7Mha9U56Ro&GC<5HvFJ}Ni z<>XC=5h`Ea>{79Zge?O#sl$6I@;b31Z{C>48rTpk%o_-Ep)?jUrToW8CdUHajDpvd zhVRRRaj?j2|8f^DV4DX~nm;WkLY3P<>IJBN)%h3r^RoUte^zflHWae~w>|Zq4?0M4 zT+@9$xc7Bl=U<%f&8xSZV$VUn(eFjIn2I{WZ!|c-My4C9mao3lU!IyB?|DOh!MVi0 z(R5dmvw8s~r)G`3OHhg)d!HaX5$rmcyS&`dGkuG`S?NA!AGURFkT$kVGrbG%f~NlDfURv@9<}J6}I8cv$&n%FPOy)vhQ#D z9AX5HTJi#ZkLNTujqn0e8Kkqrb-xwp-&ao0z(WOqM=Z)~8 zu_?W%JHjDvjU2avnO?9Ng=zDU{#sy(=I|pccx^J(^Pkq5x7|FI=hVBZV@u%B5hgkQ zDi6XscM!1BFHm}Os3ESf!lRMSRauqWxFt)faae*i?$RL6)|0ktRpYvr9MfSm5Tf1i z@R{WzhTyOG5|8sn}{3qEA&VH58Aw0Yc6WBprCvgapNb!+TsfxdIG-sLp z!ucpC!68l0dqLKrFott!koiyMoM8l~WO(&=l}y14!b*$Ovt}KI*?E{p&*2fHLyVDJ zXipbs&}RHbctkI4>gdEhF6x22=!lc;p~}A@oI-ZJ$`4hcTy?4xVFKKAv@a}W(btVDkS6Cm=S-VBAQ}t~vp&h1#TVgO{SV)6QR+;7blZ3!erZ&?b*uDZMMA{8bm<+t>~Ex6@j+8PoF zhiC$@5OD0BbdRyRudleV1M^h$6L_=noLE!PcgaHQh96ChTQ51{31I$i3NAg$lE5dZ zWuliLGBU8o+K9t8-G1xEVjkTcy}kLK>C;pn(~Cue?*#d#cIbIIZWNaKdR#?UnC?w_ zH?g1!r)zV2HXZ5oVpTUr7cV+Rv3rMFtKB1obXin3m$BHD*w7?IT^+d##9r|V!u zUb-=moeo3jCDmj!udqR5z;u|oy@AAR(?Z-nfDw7aj=kP8e|9!_7KsJs-^Na zSusCskG%qj8<(i-kPPF*-+UIBazYyO%qfNQLKMCI?WDv(N|3{(}X+E z&FEhH{k~0Xoztgr5@x1KKIebo6++Vy=Jo!{)lFBF?;liz3uAYyK&b2k)me}VnZWQe&}(5mZ2_sy zP&gxE5}X7^cL@jUd<#f~Vx~z>B0brWEkc_a*-e!>5~M3p4AmN42<(RS3Z05zS31z0 z$NOG-diu8WEe;sy^EiCLOJ7EMzhmn_UvGYMA2w133RrN+EC91gzpuzm4xSIf9tj3s z+e^>yN}M!k$ZAVgS06@9=v;dKHBBoTpjH4xKh*-xctg!3e59PZ0cg7?5Ne&xNw%;+ zz>+AdUK0WFhztAsgt+Kfp^ByQu35Sqc^MzhqNV;2>+^*>Qc^+mBH7Wwo=)_GG*@&K z@Olbt(jbN3+tG`KUuR!$7kg^wFx;#;)T2u|C;a$+>p({dCuufo)pC&S_x&)zIqJ~g znC!|0jE92KurE`#K>+or&W%OhN;1`q5q+GT%9l2lujRLNITn-YJdK@~@;!OJ2zel! zaFnp;gmYOH$5a(gPawNq8?(x;*`%7Ws^}|i@iqPy%3<}5M-ck>&XTTjWKl~sZns42 z1VWY;i#+Em~E_&YVh5YP;h${U}x_!fs>A0u#0mpzF34FpXW_ zoyRXmOx=%k^mc4kdxtIg&4qrf@nUU<9sP^4%u$1rVJdriUOfMT+RXb)ZAZv{kV7}u zJN>>n@!7o*<0M|FRfUef8{4(>=*lwuH%H!M14Mp+;>6Ns<7tt^X`K+Ett*zVI-ZZ6 z3}s}?Wz@vej#EZmJfD$KTQ1{*c-nEwSQ^h~WGpC`u`Hf;oHCZj^BEZn%Vn&Hr%jO| zRv32Jv=D!-J686EW&#G=*|Eo$$FiY&{MP-VYTh7-4<|5&5M1?q#5$czQk$qAcbn+g zgl2VoO=9KBaWo0Mmy)fBX;Z2o-jr06sJ8h`H6N`>OhATi5~|g@iPhShyQNFV3eP zd_MJ{9>wyxCn?V-=#YNkfJe9GSs!^`$XCw`!K|SKVeW8UG|zuYcQ#vHT~kwAyI{e> zg}h$0sIKmU3pzSBZtU!w=P$^jCU9r*c(P}YFMIXzWv`L!D19kk%y*!-W4AQNPpwp` za%Z5kGgM#pvenMe3M@e8`~K3N9wGLJooZLYoVK4E-mn*Y^Pyqw3cqP(+42tk!m)n{ zJn8S)IVR=ACVof%b$CJnc4|!tg>zrW>^!CeYm`~WdOpXit&vTE4}zhc=v?ZpxZy(} zmYt5!k7QUn9-+oj7yW`>$_QEM825=BL^4{vYZMd90th&4z^Bg1uWrFBN_Cq zDrx4;+yyahFhMQTr(r$@mku&3hGz%+n39yA5ry-d=azXhE4l!5o)in$$(RtzY8;SZ zzp|vp2)D#nbeVq}I@jUc06-MRrUg7yBk!fqw3=#j4?M~4WgrvdjNAy<61ieOW+cHe zAW;Q<+Qo_jY!hXbx2{}~+9aXizi=&fDcwE&HOA=)cUyW38!_h4l2S2DMqTN*<`y=0 zk4Iv(hE`zdTH%yc@rS*k-RguPbG$V-kED1vI)p`?N zH%{}QoA!PwuFO@NqhAyHVn!kPMsS?~16tzn1-fd)uK)BDQOf=07@|~yafk}Nrcgsp zHxz*ptPAp$VhsXa;uKUk3&$} zJi;(an?^+A#~~bnI}AxVzUhMza=f#LkWbp=!A(#-@zRWM?qGx*@6^HY;Zh)R=HMo%op@=+ zH*qjRj(6T*_@qu7oCKJlOxV)KH)}9Lvd1@R2-&2~8Jq-l6E92HF^x54Fd~j`#$dRl zP8e*0i8cSD%okQGPhknWf@E%P)&q~1vGU=aYmRIdLg-(ziMqEU zBWN^FPHe&K3%tPct@(d+q~8q&wqniTr1DNU?o28n*%Jvd-~7H6Ep!Q|f5)C0Mw z)7eo?ZIQ>TPe-0vK8;m>lh^22LU*b3bd=C6sh-9X+U3*JQ9!f|*_wU&3i$Mm;HpWQ zTMVh%jCQ=sJ4&SjPBkZh0^-W2VLU#6cz&u(tk&j^qASea zAI9jfUU6Doeup^ToXsf=8R*<)0BSf*1zH2dB|-e~Pz|rmpB%Em$y#~j0s}*MyhU8R z@aPxrbc61my5Ze9Nvcn-@b;Ixb7)Q}E4n;_hv18F2vJegQ?4RliJU2ehz-0HraFy% zN(3dxaE!<5@+BNu*U|BZMl?C{){&I(p%;{JP%0 z?LGOf&FVQ>NU8U$@JI+Le)x1PPpugawl1P-aEfn>1_Lnp${vGBDiI&u(Dbp(@!yL= z+ua!E#_E&W)^;_9wONPq%IsWA+yZMBHaKPF%P{TZu>d?y^#7WP(nG|AD>Q1qhQZTe zqM;6zPM7$`0hE~v>9RZxmdpinRfxx*?X%A3@U=Tt5z8VcK*5DaC4(C!d8bZ8>dd=!88+(aUZ#0|-qT1Ri_?KO@FyQ|n ztF9SbP+JrC|GB6(TYJL)=j7FLI;Run7GOZMo84+q52!z>f8qD;>bx zv64(6F66epyU_3V_iY;3-hn6G@VF`ct(@@xiKWsB|DPCeB3?I-=YrOIJo%$}Ido+* zt_RTG{tTX)F5+1Sms$jsG`LfcK@=07aD<_6B=wXn-6!CgBmUD*3m}LKPLZ?^1jdC9 z5qP1UcfbuoG%cP0w`ui-PKzt!-9XLaReO~OeKGrSX+UEr1`@7K8Z|9-(3!Nl0|_V(%!#7(Li-?v8+&oq5Y;gl3bd!ZUjP}(QHVb7y z!#PWlLaSwN7-6_r!9eTev4TUo$zlbEQG%6%qZCJQ7@@hi8d55-Y?XHlqk=M>72)zD zhZ|;C+=~M!JZe)^E;nFeWBB+;cJ84a!HAC}*ex7-7#AKYMq7-2{j75Cq4S6<8qCw> zKM{~l45VPgKt(B)JIo|T*t$_rI9}?dvQhbN91_C{Gz7OI6<1YP@Szejme4OqqQ+1o z(wZkrW8mi$QZ%W%f-pvDD%6;!muU=iSfazsYRrv_Ys`&H(3l%tt}z{J`Wn{b^l73u z>rWV=Jjh8-Y{$CW6y8d$< z$!t5$@^X=vzW&QDTu{FLs}2^OSpOZT+Q*fBa%X~*Jxle=)>x~Tu3z7{yuoj6Sknlf zQ7bN6j+ctkd(_It6?i#dfME3dgnS+Sj1|M|Ur19)-+`+&s~=I5Q*xWgyZ8wTF( z-F~- zjk7MU*;EdCl;V{v%NPh!aPN?P87)A5+3J6D_@ z*h?g*ykzf633HQ=363=g|KX7c!G{J{fXHSQ6rf)nLRH$0HP&~)C?tp`*Ex6kN zKUnkprJV!tFzv7I+iq6Lwof*d?DG*1d_<)U{u+81RiCP0iE;zwXO~>OtO2VHcQwv5 z);JUw7F!D3j3Z6L2|VBgj%l+?npa&J@=&i*2(3tpDcmcZ%HqtH4jcs`@zIxBi}BT| zU4O$ZCmjB3Y;JDjDHpt{+N}feNcF6h6|L?Th8rBP#0$mHv~y&5^rZ*46PkyjXF#gr(q}Yk1Iqq9cAf_y}Ck_#Z}?-hH`CcY^*|BT5oXlh_Ku zxH*C|Ot69L^Ki}>7TBswDh7oQ2bq`gR1IG|>kJt}%Yw!zt2T0RYUDV$sOo0b@evRQ z3q8`rv4mq0BDBXEWeKux$;@cDG&WtkhQhIppNIhX!KtPMdOTEaaCNTax<_Ww0ea0~ z3FiN$E$~;QoqP86VjjQ`EN?rjue7zdmz{5aVawJY@jl`tD8MNct-r)K#9(IMuWFNZ z#bZr2Wj`nWJm3(zaYP4-9#uJU)YjD4izbG55Ys9y?&;eIRATRD*4UHBaCIDSfDn^) zg{VHIu^9qNxVf*4g__2F@tSIFJmGcjvTznl7u)h84c#82`^3K5Yox<&c{j!ayoDt6 z;jL#GP7>>`Tlv~|66;AtN@6vR#*zzBW#Did17HVtCrKIrJC>&;jskE;cV53&rF< zLY#~hxA2b8@sbHuhKl)}rG6DuU55LsK-4X3^kZe?5uz$t9))9iSQZ)U{i@iIA4W$< zd~ivb0WgD=?`WW3CMUTr_;u~%o-tp0p$1(g!>p9t5jSjFk#Sh1r{-*V!r?xQjFhK5 zI=_uo%AOKt1xr?QCx0#WOD^L`hkN~mipm9*3o?WQoN2e2^U^UNxtNz%0BTPVx z=|VBPR5Ni=pvQKk;*^*gAqNV1ab(4Pl-A|`%8o42*;OP`7XSDnq@C0ZU4+V2SVSX=O5CBO;4QG+`!LBS_I}Pub@~CM5 z2k!G-PxLT!z6S=2O>&C&uL(V_xzi$}@Vd*EuJD((F7xY_WrJmK{AHFLJdvi_x$gv_ zN6DsV1?nv}b^yklkVB2EV;P>mX;UYR3$DC#m=5y|QM%emXG4#WnV}OC0KCc)gEK}< zXG9H0YcViMRf?rTqjys&C~CzfSjh9bYG$RSvLI5FO~uU}{=lHzaxZoabYp@gOS7b+ z^mOzR9Z_Sc6+{XIdV!-n=?Sw8!M$k{Qt3`TDC^yAk{sCJ)h=Am1?AnmNr$4KvmH=f z9aE-v^io__jiV0%vuSHj4>cXu3jlU^^oaJ$w1h@V@Z-`FYa>ZZr7|tW1`JcW{Kk?j z<#M4qQxXntDX7}eBZM@BvZ9s-by3|4ig8pHi@qpYMb3z1z@c>IRg|2LqnF6EDmG)2 zki(0F>=>6=ujRv&#?hbaK`Y(S+o^|VNgWxk!-OT=0f3j^D3bmh$jZtzy1u@RvgJy# zZvE@7V2rjgP~O5zaSNb=)n*P}VuoIV-JGHI214sqG}ZbXYt>scNJFB{h%3n{|09Sy z3$`hnDcAh|PAra9i9>U7BXwOR#>u^Gnno30U?Q^ItooRE)xxAm3?f?x&Dd(rS>xSb z3QuZWsVh0p_Wpt1gqY499nqMmB%YlY{AJh+da6$toG;l%#Cp2(E11B_aLIWo>a6$wB IUuod~0z4IfD*ylh literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/ipcores/tb_fifo_2048x8_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_2048x8_tmpl.vhd new file mode 100755 index 0000000..31ea3c3 --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_2048x8_tmpl.vhd @@ -0,0 +1,102 @@ +-- VHDL testbench template generated by SCUBA ispLever_v72_SP2_Build (23) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_2048x8 + port (Data : in std_logic_vector(7 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + Q : out std_logic_vector(7 downto 0); Empty: out std_logic; + Full: out std_logic + ); + end component; + + signal Data : std_logic_vector(7 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal Q : std_logic_vector(7 downto 0); + signal Empty: std_logic; + signal Full: std_logic; +begin + u1 : fifo_2048x8 + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + Q => Q, Empty => Empty, Full => Full + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 2051 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 2051 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 2051 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_mb_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_mb_tmpl.vhd new file mode 100755 index 0000000..faff46a --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_mb_tmpl.vhd @@ -0,0 +1,115 @@ +-- VHDL testbench template generated by SCUBA ispLever_v8.0_PROD_Build (41) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_32kx16x8_mb + port (Data : in std_logic_vector(15 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + AmEmptyThresh : in std_logic_vector(15 downto 0); + AmFullThresh : in std_logic_vector(14 downto 0); + Q : out std_logic_vector(7 downto 0); + WCNT : out std_logic_vector(15 downto 0); + RCNT : out std_logic_vector(16 downto 0); Empty: out std_logic; + Full: out std_logic; AlmostEmpty: out std_logic; + AlmostFull: out std_logic + ); + end component; + + signal Data : std_logic_vector(15 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal AmEmptyThresh : std_logic_vector(15 downto 0) := (others => '0'); + signal AmFullThresh : std_logic_vector(14 downto 0) := (others => '0'); + signal Q : std_logic_vector(7 downto 0); + signal WCNT : std_logic_vector(15 downto 0); + signal RCNT : std_logic_vector(16 downto 0); + signal Empty: std_logic; + signal Full: std_logic; + signal AlmostEmpty: std_logic; + signal AlmostFull: std_logic; +begin + u1 : fifo_32kx16x8_mb + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + AmEmptyThresh => AmEmptyThresh, AmFullThresh => AmFullThresh, + Q => Q, WCNT => WCNT, RCNT => RCNT, Empty => Empty, Full => Full, + AlmostEmpty => AlmostEmpty, AlmostFull => AlmostFull + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 32771 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 32771 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 32771 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_tmpl.vhd new file mode 100755 index 0000000..3bbafb6 --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_32kx16x8_tmpl.vhd @@ -0,0 +1,106 @@ +-- VHDL testbench template generated by SCUBA ispLever_v8.0_PROD_Build (41) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_32kx16x8 + port (Data : in std_logic_vector(15 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + Q : out std_logic_vector(7 downto 0); + WCNT : out std_logic_vector(15 downto 0); + RCNT : out std_logic_vector(16 downto 0); Empty: out std_logic; + Full: out std_logic + ); + end component; + + signal Data : std_logic_vector(15 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal Q : std_logic_vector(7 downto 0); + signal WCNT : std_logic_vector(15 downto 0); + signal RCNT : std_logic_vector(16 downto 0); + signal Empty: std_logic; + signal Full: std_logic; +begin + u1 : fifo_32kx16x8 + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + Q => Q, WCNT => WCNT, RCNT => RCNT, Empty => Empty, Full => Full + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 32771 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 32771 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 32771 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_fifo_4096x32_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_4096x32_tmpl.vhd new file mode 100755 index 0000000..69b93a2 --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_4096x32_tmpl.vhd @@ -0,0 +1,102 @@ +-- VHDL testbench template generated by SCUBA ispLever_v8.0_PROD_Build (41) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_4096x32 + port (Data : in std_logic_vector(31 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + Q : out std_logic_vector(31 downto 0); Empty: out std_logic; + Full: out std_logic + ); + end component; + + signal Data : std_logic_vector(31 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal Q : std_logic_vector(31 downto 0); + signal Empty: std_logic; + signal Full: std_logic; +begin + u1 : fifo_4096x32 + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + Q => Q, Empty => Empty, Full => Full + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 4099 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 4099 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 4099 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_fifo_4096x9_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_4096x9_tmpl.vhd new file mode 100755 index 0000000..a300fbe --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_4096x9_tmpl.vhd @@ -0,0 +1,102 @@ +-- VHDL testbench template generated by SCUBA ispLever_v72_SP2_Build (23) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_4096x9 + port (Data : in std_logic_vector(8 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + Q : out std_logic_vector(8 downto 0); Empty: out std_logic; + Full: out std_logic + ); + end component; + + signal Data : std_logic_vector(8 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal Q : std_logic_vector(8 downto 0); + signal Empty: std_logic; + signal Full: std_logic; +begin + u1 : fifo_4096x9 + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + Q => Q, Empty => Empty, Full => Full + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 4099 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 4099 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 4099 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_fifo_64kx8_tmpl.vhd b/gbe_ecp2m/ipcores/tb_fifo_64kx8_tmpl.vhd new file mode 100755 index 0000000..b60730e --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_fifo_64kx8_tmpl.vhd @@ -0,0 +1,102 @@ +-- VHDL testbench template generated by SCUBA ispLever_v72_SP2_Build (23) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component fifo_64kx8 + port (Data : in std_logic_vector(7 downto 0); + WrClock: in std_logic; RdClock: in std_logic; WrEn: in std_logic; + RdEn: in std_logic; Reset: in std_logic; RPReset: in std_logic; + Q : out std_logic_vector(7 downto 0); Empty: out std_logic; + Full: out std_logic + ); + end component; + + signal Data : std_logic_vector(7 downto 0) := (others => '0'); + signal WrClock: std_logic := '0'; + signal RdClock: std_logic := '0'; + signal WrEn: std_logic := '0'; + signal RdEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal RPReset: std_logic := '0'; + signal Q : std_logic_vector(7 downto 0); + signal Empty: std_logic; + signal Full: std_logic; +begin + u1 : fifo_64kx8 + port map (Data => Data, WrClock => WrClock, RdClock => RdClock, + WrEn => WrEn, RdEn => RdEn, Reset => Reset, RPReset => RPReset, + Q => Q, Empty => Empty, Full => Full + ); + + process + + begin + Data <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 65539 loop + wait until WrClock'event and WrClock = '1'; + Data <= Data + '1' after 1 ns; + end loop; + wait; + end process; + + WrClock <= not WrClock after 5.00 ns; + + RdClock <= not RdClock after 5.00 ns; + + process + + begin + WrEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 65539 loop + wait until WrClock'event and WrClock = '1'; + WrEn <= '1' after 1 ns; + end loop; + WrEn <= '0' ; + wait; + end process; + + process + + begin + RdEn <= '0' ; + wait until Reset = '0'; + wait until WrEn = '1'; + wait until WrEn = '0'; + for i in 0 to 65539 loop + wait until RdClock'event and RdClock = '1'; + RdEn <= '1' after 1 ns; + end loop; + RdEn <= '0' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + + process + + begin + RPReset <= '1' ; + wait for 100 ns; + RPReset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_ip_mem_tmpl.vhd b/gbe_ecp2m/ipcores/tb_ip_mem_tmpl.vhd new file mode 100755 index 0000000..3b2d37f --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_ip_mem_tmpl.vhd @@ -0,0 +1,174 @@ +-- VHDL testbench template generated by SCUBA ispLever_v72_SP2_Build (23) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component ip_mem + port (DataInA : in std_logic_vector(31 downto 0); + DataInB : in std_logic_vector(31 downto 0); + AddressA : in std_logic_vector(7 downto 0); + AddressB : in std_logic_vector(7 downto 0); ClockA: in std_logic; + ClockB: in std_logic; ClockEnA: in std_logic; + ClockEnB: in std_logic; WrA: in std_logic; WrB: in std_logic; + ResetA: in std_logic; ResetB: in std_logic; + QA : out std_logic_vector(31 downto 0); + QB : out std_logic_vector(31 downto 0) + ); + end component; + + signal DataInA : std_logic_vector(31 downto 0) := (others => '0'); + signal DataInB : std_logic_vector(31 downto 0) := (others => '0'); + signal AddressA : std_logic_vector(7 downto 0) := (others => '0'); + signal AddressB : std_logic_vector(7 downto 0) := (others => '0'); + signal ClockA: std_logic := '0'; + signal ClockB: std_logic := '0'; + signal ClockEnA: std_logic := '0'; + signal ClockEnB: std_logic := '0'; + signal WrA: std_logic := '0'; + signal WrB: std_logic := '0'; + signal ResetA: std_logic := '0'; + signal ResetB: std_logic := '0'; + signal QA : std_logic_vector(31 downto 0); + signal QB : std_logic_vector(31 downto 0); +begin + u1 : ip_mem + port map (DataInA => DataInA, DataInB => DataInB, AddressA => AddressA, + AddressB => AddressB, ClockA => ClockA, ClockB => ClockB, + ClockEnA => ClockEnA, ClockEnB => ClockEnB, WrA => WrA, WrB => WrB, + ResetA => ResetA, ResetB => ResetB, QA => QA, QB => QB + ); + + process + + begin + DataInA <= (others => '0') ; + wait for 100 ns; + wait until ResetA = '0'; + for i in 0 to 259 loop + wait until ClockA'event and ClockA = '1'; + DataInA <= DataInA + '1' after 1 ns; + end loop; + wait; + end process; + + process + + begin + DataInB <= (others => '0') ; + wait for 100 ns; + wait until ResetB = '0'; + wait until WrB = '1'; + for i in 0 to 259 loop + wait until ClockB'event and ClockB = '1'; + DataInB <= DataInB + '1' after 1 ns; + end loop; + wait; + end process; + + process + + begin + AddressA <= (others => '0') ; + wait for 100 ns; + wait until ResetA = '0'; + for i in 0 to 518 loop + wait until ClockA'event and ClockA = '1'; + AddressA <= AddressA + '1' after 1 ns; + end loop; + wait; + end process; + + process + + begin + AddressB <= (others => '0') ; + wait for 100 ns; + wait until ResetB = '0'; + wait until WrB = '1'; + for i in 0 to 518 loop + wait until ClockB'event and ClockB = '1'; + AddressB <= AddressB + '1' after 1 ns; + end loop; + wait; + end process; + + ClockA <= not ClockA after 5.00 ns; + + ClockB <= not ClockB after 5.00 ns; + + process + + begin + ClockEnA <= '0' ; + wait for 100 ns; + wait until ResetA = '0'; + ClockEnA <= '1' ; + wait; + end process; + + process + + begin + ClockEnB <= '0' ; + wait for 100 ns; + wait until ResetB = '0'; + ClockEnB <= '1' ; + wait; + end process; + + process + + begin + WrA <= '0' ; + wait until ResetA = '0'; + for i in 0 to 259 loop + wait until ClockA'event and ClockA = '1'; + WrA <= '1' after 1 ns; + end loop; + WrA <= '0' ; + wait; + end process; + + process + + begin + WrB <= '0' ; + wait until ResetB = '0'; + wait until WrA = '1'; + wait until WrA = '0'; + for i in 0 to 259 loop + wait until ClockA'event and ClockA = '1'; + end loop; + for i in 0 to 259 loop + wait until ClockB'event and ClockB = '1'; + WrB <= '1' after 1 ns; + end loop; + WrB <= '0' ; + wait; + end process; + + process + + begin + ResetA <= '1' ; + wait for 100 ns; + ResetA <= '0' ; + wait; + end process; + + process + + begin + ResetB <= '1' ; + wait for 100 ns; + ResetB <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tb_mac_init_mem_tmpl.vhd b/gbe_ecp2m/ipcores/tb_mac_init_mem_tmpl.vhd new file mode 100755 index 0000000..fd983a6 --- /dev/null +++ b/gbe_ecp2m/ipcores/tb_mac_init_mem_tmpl.vhd @@ -0,0 +1,64 @@ +-- VHDL testbench template generated by SCUBA ispLever_v72_SP2_Build (23) +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_unsigned.all; + +entity tb is +end entity tb; + + +architecture test of tb is + + component mac_init_mem + port (Address : in std_logic_vector(5 downto 0); + OutClock: in std_logic; OutClockEn: in std_logic; + Reset: in std_logic; Q : out std_logic_vector(7 downto 0) + ); + end component; + + signal Address : std_logic_vector(5 downto 0) := (others => '0'); + signal OutClock: std_logic := '0'; + signal OutClockEn: std_logic := '0'; + signal Reset: std_logic := '0'; + signal Q : std_logic_vector(7 downto 0); +begin + u1 : mac_init_mem + port map (Address => Address, OutClock => OutClock, OutClockEn => OutClockEn, + Reset => Reset, Q => Q + ); + + process + + begin + Address <= (others => '0') ; + wait for 100 ns; + wait until Reset = '0'; + for i in 0 to 57 loop + wait until OutClock'event and OutClock = '1'; + Address <= Address + '1' after 1 ns; + end loop; + wait; + end process; + + OutClock <= not OutClock after 5.00 ns; + + process + + begin + OutClockEn <= '0' ; + wait for 100 ns; + wait until Reset = '0'; + OutClockEn <= '1' ; + wait; + end process; + + process + + begin + Reset <= '1' ; + wait for 100 ns; + Reset <= '0' ; + wait; + end process; + +end architecture test; diff --git a/gbe_ecp2m/ipcores/tsmac3/.cvsignore b/gbe_ecp2m/ipcores/tsmac3/.cvsignore new file mode 100644 index 0000000..1fb5c68 --- /dev/null +++ b/gbe_ecp2m/ipcores/tsmac3/.cvsignore @@ -0,0 +1,9 @@ +*.jhd +*.naf +*.srp +*.sym +*.log +*.tcl +*.v +*tmpl.vhd +ts_mac_eval diff --git a/gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn208256208256.ngo b/gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn208256208256.ngo new file mode 100755 index 0000000000000000000000000000000000000000..e40fc8f6de27e099ea25feef851095960359361a GIT binary patch literal 11294 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 J{tD^B{{dwyrK|t| literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn96649664.ngo b/gbe_ecp2m/ipcores/tsmac3/pmi_ram_dpEbnonessdn96649664.ngo new file mode 100755 index 0000000000000000000000000000000000000000..7e4f604d51a9ac489d5de0b1c0b1fe6b3feb3f17 GIT binary patch literal 8775 zcmaJ`YjBj+8QyFH9x9G>v`(C9agBlr1lc4cESC(so87Q0xoj?67B8ES?7BOIkO^92 zb=p-sH4aJx2t@kle|E+HGF1OZB;jDKt%EU_iZG!^cHefFYN<=zUH@_sH$y>T$F zW*KUhZS>F3rWQ3d9aA&ZRI{dMV1}9+*34Hk)KsCyyXu70;7hOSEtO(>v@_h?8VV?OY&A*mzY(tx?o7gl?(SzB+vpOx*&9Z7uGH$}#C5{9q7K&{<|%;jD@EQ{LS zo42S`yZY^O(loz@%f0lJe})<^cm3-_Gt_XotG_leLk*YPTW=1A_IxCtkaENg==pDD-cDNjBq%YD|tRB`jVGd_t*0$oZGg2L^s#}K>)#g2G*tn-#U)ED=4dOm+ zn~e%tD_oWvvbq%(4!qd$d8P`h7+dNw0xr=FAE7LbaAU^Kr;SiWz5d|0Bz9P_$&%14 zbhoaHO7|hF#{k;}hR6>wS*$h=g|P(W61A9NN{TsoeC?GCg)Q2#rHilct7R4W2Xtm3qTx z1nA_yYeEYF(pFksV_t!kR&V^=!e8~9M%-3^X2_B-RCrFVj@?JPtUB}(o|}`n0?{d} zj+6dJT1z|}p|F`WcRBRVIl}`je7TtkcRBRMfN4WD5)($?gil*FR3h#%HKOk6qn5;x z7N0Q^HR{Y-Rov#yIU;xVHNRDd74Y8=0ecw@RAGR?s}q*QUM`GU5`<^6mcU7V4ndkh z2p-l$2RZ|ZjnPnNB!SyIc$pH$G>A_-)H6Y_p(BXyD@LUIhK^9U!C3Qa^xEYh^b>kz z$TZ=w3rmfFiKOoHY9YXV{p5rZ&~tMCq!G|2xpz#2rgi8osh#15CSEkj-9D+I6OepZ z4?~BcED-@-5^QR1SSPoAOCwx^d=%Cu$QUb9wT7OlcQE6 zY*F%%RYM)OW(^JNp4?Y%1nhtE`)MO!e|p+PFOG^vJ!|}?il_JHzhx~6E09@bm;rQ{ z{`)3f#nY93bi(kUc=|C*K%4Y_Bk*{pU+`#J08`3%eMW%dnOUPofO_dqErA-Pt=R@3 zWNIf3587px3>ksCX58bJL?xc@vLtG;Cu<~BW#;6FE>$@;k2Nb+wyy7tt?yiES>szO z3?6MEY_lc7>!#4cjpGTd6rt4{^bO&tC0xcq*z{?e=c*GFXj25rc%ktFSe5 z zxmdv|qo0ey$Ktva(T_7bb$&hz*l_6XCAchRJ2D;xCojFu8dV zs}0*Qxu?~V=~bo9yzv~ET%`_7E=>m}m#hPmtJZcHenRa;xm+15ZV5Vf^qlO5xiuTpz+rw!{O_k?P^*1pbiU8u(Dn60hcL2At>$L!et ziGq2^)!@)iE(j;ai^qY75^I5GM#7UzRZ)On z2>LP?gj^8o;sKVPGCA8(c2<-uWqx#W= z7DH{hJEEV4=;x^T0667iV8RnpjovZ+PDEcxH7>+!)M^jv;7zI2{;Ym9qQ9lKb}Id5 zM2`#-^kA%Ttt8pqI6YmZOmri5kSye^%FBq7bG%QaKG zq+l*R<+qqfO6TUD@&x?CG{zK6X3b5XHfG74dk*Z@Ol^wEL`J-jSv;#GvrjX%AqSIL z^+Klm-|xS3k7jB&08Hl63z!2-5^kWFjA2$eeY9=g4Wz z)L|Ey$VL}3OICdMe!cQ0XajRKGRK9?;=OY_Lb^{K^0CjSJToxe-+6FA?~w@@$wcD0 zu+O5gD~83iSm7p_NUIkzT}Lk*UL&KMU=>XL+yu}H41g_@=N`ed(*#Vv>IkNtE4Gzq zAYvv60H&Yeh?(F6n0|m0Ob02%@MvN*#LGi&$M1_=>H!gtO4?k)Eb>{Tka^KxzkU8M z!ZgMfOg_yNGG`w-_Q8F^G^U!Swx(+a=B(7fBO}5zh8|2lxD@tT@>)snCBigr0+=;; zb}3{QFFd*VbzvGO157^a6f)hvxqj_O!Za=l^~5txA+zY!6R(eIrgm^RI-Yn6nXXHF z>kL!7N65Y4?}~?MdZo0FW>-r4X>z4>faX?8qcpWrdW2?HN(X6TrSt=uS1BE$X_eBW zG^9*SO6e#~ zrIdb3GbyDfX(FZc6wRZQo~CJ((la!RQhJsqQA*Fz97+jh(05Eq&(jP_>1Q;7QaVoa hC#4r?`lR$C&7PEAqREre%QSaV8mFm~(knD`{{vq1Yuo?; literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/ipcores/tsmac3/ts_mac_eval.tar b/gbe_ecp2m/ipcores/tsmac3/ts_mac_eval.tar new file mode 100644 index 0000000000000000000000000000000000000000..bd092f23d9a3a9ce48b375d3c0b1d20b4c9c9934 GIT binary patch literal 368640 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%0AaR}YOKq%y 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�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 *C6vXh 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%0D1Lv!VgE`h>CL*!-huoqZp*5Z1$h7rk*IE`*+ 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

    lA$s?VB{S1JJ$~eF^PgEwitn{n$c% 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%0D0$v%eutE@$R zzan2o{uDuZJ(>F%f{6z9NFz8i14r(D1m(3)?&kSUO!nyFJ@-sYs# z9z9!<)Tx-{?xaq`q+h$J0%%{QsMDc+DnElWprvKrLimqrXZ1|@(LlN3cetoQ@b{E< zgQ5NHW_A{|f6~+tXumtDB53l7a9%OApYoXvh4!;bh6Ds zmznx}<9J!$1t@&JgIOgC5C7Y^5QSU8Yyt|mnAAiRKGjN1Lg6NJwafrJ!|ZZOqgsxG!~6G1#xjs?=w>a(^&S zeU|&0o7EYxpZ8D~!(LoVsn0S}T~sYb$nT~+b@tSeEsil>aI(tflwcUC5H zP}d_WR3YxRIIKi(!cLU5(J;e{1Uf(W$aN^$M?`neEgo zydz}wYR|nFyO=e@x57)UgHPUdpBb zd}eA_h7C^YIh-$_h~zzws#)#KUO-i)%%*l_DDPzUB7Cb`sqOHsk#;HgR<<$QfvN>E zo7$BjC&BC`OzPQ1sS_#ZdMI^-A=~+XeTmCTcg_ zdXiG7RIV(c_P|pnnL3GUf{U3t&3A;XsvSkQd6}v6D$i=A-bPW%qSQ%TccrO!G2-xV zxP9=vD6^?Exu%NLd6n18cm-)r5l@2F+6smXt2ef>~YFKh0P^7+lI4nX;BpmI^(kfQQXz963( zi1LNC)UhbPyOqjE`6B6Y9Ndpt%#KI-;&w{y6fB=N4LlLUe~^`)grW}`SUnj<`#sbt zDC(3R>h$98WDa$D@j(}>>h$6+nN6Ku{7W4(b$apdGOs$lxI4*AonHL6NvYF|4|P#) z6g!%!K`8F&r3Rz8m#pP16r+*Z5EQqjs3MdvucV4mu}xN`?z2DDz)am|-`Yl<4ZBs= zqVBjqo6k($aerFIQ+M3=NMCiw{f&B7)g5`T#i~pl2xKO%gs!ky*#ghnt-Ca+bDGk^Sxeb5{edgQ|dhCB{GVJ zqW{Sisgs$T>RGKu(E~EFI-~i)PG$iVt;na;Y0WDuDFa2TnkaQ{^FuP*6ci=9nT1gF zXbEMaXl*@JgQE3G>LL_vkdddNXmf(uG!#80tD26YXQf>jMbBr7j)4&rZIe+f6zvd2 zQS?$5t1%S4T1&-I)Ye4VDB2}+%s|ned}bG;=&edhz3S6JsU3x1k#_2{;Ui=`wWIL0 zlBpeq=cU78Q*tO6@^>pR`kZ5Z^ED)E>l3!K&JWxG7DkJ&2b# zQECt3RnkuFLHw|rnc9PRwX{=v5U*)vruHCSS4XKmh#&8w)E>ke8!5F1v3$}tQ0+my zrG=T=gZP;e>P}R&N~U%re!iNS+RyS%8F>LJc4Z>Rz=f!ITUKy4D$>&K9#kA?WOWfL jzLsmd7Zra?wGkDEI#^wditAj|eegXg?e0g#TMhpQq&kB4 literal 0 HcmV?d00001 diff --git a/gbe_ecp2m/mb_mac_sim.vhd b/gbe_ecp2m/mb_mac_sim.vhd new file mode 100755 index 0000000..1b1f57e --- /dev/null +++ b/gbe_ecp2m/mb_mac_sim.vhd @@ -0,0 +1,331 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; +--use work.trb_net_std.all; +--use work.trb_net_components.all; +--use work.trb_net16_hub_func.all; + +entity mb_mac_sim is +port ( + -------------------------------------------------------------------------- + --------------- clock, reset, clock enable ------------------------------- + HCLK : in std_logic; + TX_MAC_CLK : in std_logic; + RX_MAC_CLK : in std_logic; + RESET_N : in std_logic; + TXMAC_CLK_EN : in std_logic; + RXMAC_CLK_EN : in std_logic; + -------------------------------------------------------------------------- + --------------- SGMII receive interface ---------------------------------- + RXD : in std_logic_vector(7 downto 0); + RX_DV : in std_logic; + RX_ER : in std_logic; + COL : in std_logic; + CRS : in std_logic; + -------------------------------------------------------------------------- + --------------- SGMII transmit interface --------------------------------- + TXD : out std_logic_vector(7 downto 0); + TX_EN : out std_logic; + TX_ER : out std_logic; + -------------------------------------------------------------------------- + --------------- CPU configuration interface ------------------------------ + HADDR : in std_logic_vector(7 downto 0); + HDATAIN : in std_logic_vector(7 downto 0); + HCS_N : in std_logic; + HWRITE_N : in std_logic; + HREAD_N : in std_logic; + HDATAOUT : out std_logic_vector(7 downto 0); + HDATAOUT_EN_N : out std_logic; + HREADY_N : out std_logic; + CPU_IF_GBIT_EN : out std_logic; + -------------------------------------------------------------------------- + --------------- Transmit FIFO interface ---------------------------------- + TX_FIFODATA : in std_logic_vector(7 downto 0); + TX_FIFOAVAIL : in std_logic; + TX_FIFOEOF : in std_logic; + TX_FIFOEMPTY : in std_logic; + TX_MACREAD : out std_logic; + TX_DONE : out std_logic; + TX_SNDPAUSTIM : in std_logic_vector(15 downto 0); + TX_SNDPAUSREQ : in std_logic; + TX_FIFOCTRL : in std_logic; + TX_DISCFRM : out std_logic; + TX_STATEN : out std_logic; + TX_STATVEC : out std_logic_vector(30 downto 0); + -------------------------------------------------------------------------- + --------------- Receive FIFO interface ----------------------------------- + RX_DBOUT : out std_logic_vector(7 downto 0); + RX_FIFO_FULL : in std_logic; + IGNORE_PKT : in std_logic; + RX_FIFO_ERROR : out std_logic; + RX_STAT_VECTOR : out std_logic_vector(31 downto 0); + RX_STAT_EN : out std_logic; + RX_WRITE : out std_logic; + RX_EOF : out std_logic; + RX_ERROR : out std_logic +); +end mb_mac_sim; + +architecture mb_mac_sim of mb_mac_sim is + + +-- CPU interface stuff +type HC_STATES is (HC_SLEEP, HC_READ, HC_WRITE, HC_RACK, HC_WACK); +signal HC_CURRENT_STATE, HC_NEXT_STATE: HC_STATES; + +signal hready_n_comb : std_logic; +signal hready_n_buf : std_logic; +signal hdataout_en_n_comb : std_logic; +signal hdataout_en_n_buf : std_logic; + +-- TX stuff +type TX_STATES is (TX_SLEEP, TX_READ, TX_DELAY, TX_TRANS, TX_CHECK); +signal TX_CURRENT_STATE, TX_NEXT_STATE: TX_STATES; + +signal tx_bsm : std_logic_vector(3 downto 0); +signal tx_macread_comb : std_logic; +signal tx_done_comb : std_logic; +signal tx_done_buf : std_logic; + +signal preread_ctr : std_logic_vector(3 downto 0); -- preread counter for TX +signal preread_ce_comb : std_logic; +signal preread_rst_comb : std_logic; +signal preread_done_comb : std_logic; +signal read_on_comb : std_logic; + + +begin + +------------------------------------------------------------------------------ +-- state machine for configuration interface +------------------------------------------------------------------------------ +-- BUG: no register simulated here! + +-- state registers +HC_STATE_MEM: process( HCLK ) +begin + if ( RESET_N = '0' ) then + HC_CURRENT_STATE <= HC_SLEEP; + hready_n_buf <= '1'; + hdataout_en_n_buf <= '1'; + elsif( rising_edge(HCLK) ) then + HC_CURRENT_STATE <= HC_NEXT_STATE; + hready_n_buf <= hready_n_comb; + hdataout_en_n_buf <= hdataout_en_n_comb; + end if; +end process HC_STATE_MEM; + +-- state transitions +HC_STATE_TRANSFORM: process( HC_CURRENT_STATE, HCS_N, HREAD_N, HWRITE_N ) +begin + HC_NEXT_STATE <= HC_SLEEP; -- avoid latches + hready_n_comb <= '1'; + hdataout_en_n_comb <= '1'; + case HC_CURRENT_STATE is + when HC_SLEEP => if ( (HCS_N = '0') and (HREAD_N = '0') ) then + HC_NEXT_STATE <= HC_READ; + elsif( (HCS_N = '0') and (HWRITE_N = '0') ) then + HC_NEXT_STATE <= HC_WRITE; + else + HC_NEXT_STATE <= HC_SLEEP; + end if; + when HC_READ => HC_NEXT_STATE <= HC_RACK; + hdataout_en_n_comb <= '0'; + hready_n_comb <= '0'; + when HC_RACK => HC_NEXT_STATE <= HC_SLEEP; + when HC_WRITE => HC_NEXT_STATE <= HC_WACK; + hready_n_comb <= '0'; + when HC_WACK => HC_NEXT_STATE <= HC_SLEEP; + when others => HC_NEXT_STATE <= HC_SLEEP; + end case; +end process HC_STATE_TRANSFORM; + +HREADY_N <= hready_n_buf; +HDATAOUT_EN_N <= hdataout_en_n_buf; + +------------------------------------------------------------------------------ +-- state machine for "transmission" +------------------------------------------------------------------------------ + +-- preread counter +THE_PREREAD_CTR: process( TX_MAC_CLK ) +begin + if ( RESET_N = '0' ) then + preread_ctr <= (others => '0'); + elsif( rising_edge(TX_MAC_CLK) ) then + if ( preread_rst_comb = '1' ) then + preread_ctr <= (others => '0'); + elsif( preread_ce_comb = '1' ) then + preread_ctr <= preread_ctr + 1; + end if; + end if; +end process THE_PREREAD_CTR; +preread_done_comb <= '1' when (preread_ctr = x"6") + else '0'; + +-- state registers +TX_STATE_MEM: process( TX_MAC_CLK, RESET_N ) +begin + if ( RESET_N = '0' ) then + TX_CURRENT_STATE <= TX_SLEEP; + tx_done_buf <= '0'; + elsif( rising_edge(TX_MAC_CLK) ) then + TX_CURRENT_STATE <= TX_NEXT_STATE; + tx_done_buf <= tx_done_comb; + end if; +end process TX_STATE_MEM; + +tx_macread_comb <= preread_ce_comb or read_on_comb; + +-- state transitions +TX_STATE_TRANSFORM: process( TX_CURRENT_STATE, TX_FIFOEMPTY, TX_FIFOAVAIL, TX_FIFOEOF, preread_done_comb ) +begin + TX_NEXT_STATE <= TX_SLEEP; -- avoid latches + preread_ce_comb <= '0'; + preread_rst_comb <= '0'; + read_on_comb <= '0'; + tx_done_comb <= '0'; + case TX_CURRENT_STATE is + when TX_SLEEP => tx_bsm <= x"0"; + if( TX_FIFOEMPTY = '0' ) then + TX_NEXT_STATE <= TX_READ; + preread_ce_comb <= '1'; + else + TX_NEXT_STATE <= TX_SLEEP; + end if; + when TX_READ => tx_bsm <= x"1"; + if ( TX_FIFOEMPTY = '1' ) then + TX_NEXT_STATE <= TX_DELAY; + preread_rst_comb <= '1'; + elsif( (preread_done_comb = '1') and (TX_FIFOAVAIL = '0') ) then + TX_NEXT_STATE <= TX_DELAY; + preread_rst_comb <= '1'; + elsif( (preread_done_comb = '1') and (TX_FIFOAVAIL = '1') ) then + TX_NEXT_STATE <= TX_TRANS; + preread_rst_comb <= '1'; + read_on_comb <= '1'; + else + TX_NEXT_STATE <= TX_READ; + preread_ce_comb <= '1'; + end if; + when TX_DELAY => tx_bsm <= x"2"; + if( TX_FIFOAVAIL = '1' ) then + TX_NEXT_STATE <= TX_TRANS; + read_on_comb <= '1'; + else + TX_NEXT_STATE <= TX_DELAY; + end if; + when TX_TRANS => tx_bsm <= x"3"; + if( TX_FIFOEOF = '1' ) then + TX_NEXT_STATE <= TX_CHECK; + tx_done_comb <= '1'; -- don't know if this is realistic + else + TX_NEXT_STATE <= TX_TRANS; + read_on_comb <= '1'; + end if; + when TX_CHECK => tx_bsm <= x"4"; + if( (TX_FIFOEMPTY = '0') and (TX_FIFOAVAIL = '1') ) then + TX_NEXT_STATE <= TX_READ; + preread_ce_comb <= '1'; + else + TX_NEXT_STATE <= TX_SLEEP; + end if; + when others => tx_bsm <= x"f"; + TX_NEXT_STATE <= TX_SLEEP; + end case; +end process TX_STATE_TRANSFORM; + + + + +------------------------------------------------------------------------------ +-- Fake signals +------------------------------------------------------------------------------ +RX_DBOUT <= preread_ctr & tx_bsm; -- x"00"; +RX_FIFO_ERROR <= '0'; +RX_STAT_VECTOR <= x"0000_0000"; +RX_STAT_EN <= '0'; +RX_WRITE <= '0'; +RX_EOF <= '0'; +RX_ERROR <= '0'; + +TX_DISCFRM <= '0'; +TX_EN <= '0'; +TX_ER <= '0'; +TX_STATVEC <= (others => '0'); +TX_STATEN <= '0'; +TXD <= x"00"; + +CPU_IF_GBIT_EN <= '0'; + +TX_DONE <= tx_done_buf; +TX_MACREAD <= tx_macread_comb; + +HDATAOUT <= x"00"; + + +end mb_mac_sim; + + +--port map( +-- -------------------------------------------------------------------------- +-- --------------- clock, reset, clock enable ------------------------------- +-- hclk => CLK, -- (in) host clock (100MHz) +-- txmac_clk => TX_MAC_CLK, -- (in) GbE clock (125MHz) +-- rxmac_clk => '0', -- (in) not used (no receiving on GbE) +-- reset_n => GSR_N, -- (in) global set/reset +-- txmac_clk_en => TSM_TX_CLK_EN_IN, -- (in) from SGMII core, '1' for 1GbE operation +-- rxmac_clk_en => TSM_RX_CLK_EN_IN, -- (in) from SGMII core, '1' for 1GbE operation +-- -------------------------------------------------------------------------- +-- --------------- SGMII receive interface ---------------------------------- +-- rxd => x"00", -- (in) receive data from SGMII core +-- rx_dv => '0', -- (in) data valid from SGMII core +-- rx_er => '0', -- (in) receive data error +-- col => TSM_COL_IN, -- (in) collision from SGMII core +-- crs => TSM_CRS_IN, -- (in) carrier sense from SGMII core +-- -------------------------------------------------------------------------- +-- --------------- SGMII transmit interface --------------------------------- +-- txd => CH_TXD_OUT, -- (out) transmit data to SGMII core +-- tx_en => CH_TX_EN_OUT, -- (out) transmit enable +-- tx_er => CH_TX_ER_OUT, -- (out) transmit error +-- -------------------------------------------------------------------------- +-- --------------- CPU configuration interface ------------------------------ +-- haddr => haddr, -- (in) host address bus for configuration +-- hdatain => hdataout, -- (in) host data bus for write accesses +-- hcs_n => hcs, -- (in) host chip select signal +-- hwrite_n => hwrite, -- (in) host write strobe signal +-- hread_n => hread, -- (in) host read strobe signal +-- hdataout => hdatain, -- (out) host data bus for read accesses +-- hdataout_en_n => hdataout_en, -- (out) read data valid signal +-- hready_n => hready, -- (out) data acknowledge signal +-- cpu_if_gbit_en => open, -- (out) status bit +-- -------------------------------------------------------------------------- +-- --------------- Transmit FIFO interface ---------------------------------- +-- tx_fifodata => ft_data(7 downto 0), -- (in) transmit FIFO data bus +-- tx_fifoavail => mac_fifoavail, -- (in) transmit FIFO data available +-- tx_fifoeof => mac_fifoeof, -- (in) transmit FIFO end of frame +-- tx_fifoempty => mac_fifoempty, -- (in) transmit FIFO empty +-- tx_macread => mac_tx_rd_en, -- (out) transmit FIFO read +-- tx_done => mac_tx_done, -- (out) transmit done (without errors) +-- tx_sndpaustim => x"0000", -- (in) PAUSE frame timer +-- tx_sndpausreq => '0', -- (in) PAUSE frame request +-- tx_fifoctrl => '0', -- (in) FIFO control frame ('0' = data, '1' = control) +-- tx_discfrm => open, -- (out) discard frame +-- tx_staten => open, -- (out) transmit statistics vector enable +-- tx_statvec => open, -- (out) transmit statistics vector +-- -------------------------------------------------------------------------- +-- --------------- Receive FIFO interface ----------------------------------- +-- rx_dbout => open, -- (out) receive FIFO data output +-- rx_fifo_full => '0', -- (in) receive FIFO full +-- ignore_pkt => '0', -- (in) ignore next packet +-- rx_fifo_error => open, -- (out) receive FIFO error +-- rx_stat_vector => open, -- (out) receive statistics vector +-- rx_stat_en => open, -- (out) receive statistics vector enable +-- rx_write => open, -- (out) receive FIFO write +-- rx_eof => open, -- (out) end of frame +-- rx_error => open -- (out) receive packet error +--); diff --git a/gbe_ecp2m/tb_feeder.vhd b/gbe_ecp2m/tb_feeder.vhd new file mode 100755 index 0000000..d526404 --- /dev/null +++ b/gbe_ecp2m/tb_feeder.vhd @@ -0,0 +1,300 @@ + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT feeder + PORT( + CLK : IN std_logic; + RESET : IN std_logic; + CTS_NUMBER_IN : IN std_logic_vector(15 downto 0); + CTS_CODE_IN : IN std_logic_vector(7 downto 0); + CTS_INFORMATION_IN : IN std_logic_vector(7 downto 0); + CTS_READOUT_TYPE_IN : IN std_logic_vector(3 downto 0); + CTS_START_READOUT_IN : IN std_logic; + CTS_READ_IN : IN std_logic; + FEE_DATA_IN : IN std_logic_vector(15 downto 0); + FEE_DATAREADY_IN : IN std_logic; + FEE_BUSY_IN : IN std_logic; + FEE_STATUS_BITS_IN : IN std_logic_vector(31 downto 0); + PC_READY_IN : IN std_logic; + CTS_DATA_OUT : OUT std_logic_vector(31 downto 0); + CTS_DATAREADY_OUT : OUT std_logic; + CTS_READOUT_FINISHED_OUT : OUT std_logic; + CTS_LENGTH_OUT : OUT std_logic_vector(15 downto 0); + CTS_ERROR_PATTERN_OUT : OUT std_logic_vector(31 downto 0); + FEE_READ_OUT : OUT std_logic; + PC_WR_EN_OUT : OUT std_logic; + PC_DATA_OUT : OUT std_logic_vector(7 downto 0); + PC_SOS_OUT : OUT std_logic; + PC_EOD_OUT : OUT std_logic; + PC_SUB_SIZE_OUT : OUT std_logic_vector(31 downto 0); + PC_TRIG_NR_OUT : OUT std_logic_vector(31 downto 0); + PC_PADDING_OUT : OUT std_logic; + BSM_SAVE_OUT : OUT std_logic_vector(3 downto 0); + BSM_LOAD_OUT : OUT std_logic_vector(3 downto 0); + DBG_REM_CTR_OUT : OUT std_logic_vector(3 downto 0); + DBG_CTS_CTR_OUT : OUT std_logic_vector(2 downto 0); + DBG_SF_WCNT_OUT : OUT std_logic_vector(15 downto 0); + DBG_SF_RCNT_OUT : OUT std_logic_vector(16 downto 0); + DBG_SF_DATA_OUT : OUT std_logic_vector(15 downto 0); + DBG_SF_RD_EN_OUT : OUT std_logic; + DBG_SF_WR_EN_OUT : OUT std_logic; + DBG_SF_EMPTY_OUT : OUT std_logic; + DBG_SF_FULL_OUT : OUT std_logic; + DBG_SF_AFULL_OUT : OUT std_logic; + DEBUG_OUT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL CLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL CTS_NUMBER_IN : std_logic_vector(15 downto 0); + SIGNAL CTS_CODE_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_INFORMATION_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_READOUT_TYPE_IN : std_logic_vector(3 downto 0); + SIGNAL CTS_START_READOUT_IN : std_logic; + SIGNAL CTS_READ_IN : std_logic; + SIGNAL CTS_DATA_OUT : std_logic_vector(31 downto 0); + SIGNAL CTS_DATAREADY_OUT : std_logic; + SIGNAL CTS_READOUT_FINISHED_OUT : std_logic; + SIGNAL CTS_LENGTH_OUT : std_logic_vector(15 downto 0); + SIGNAL CTS_ERROR_PATTERN_OUT : std_logic_vector(31 downto 0); + SIGNAL FEE_DATA_IN : std_logic_vector(15 downto 0); + SIGNAL FEE_DATAREADY_IN : std_logic; + SIGNAL FEE_READ_OUT : std_logic; + SIGNAL FEE_BUSY_IN : std_logic; + SIGNAL FEE_STATUS_BITS_IN : std_logic_vector(31 downto 0); + SIGNAL PC_WR_EN_OUT : std_logic; + SIGNAL PC_DATA_OUT : std_logic_vector(7 downto 0); + SIGNAL PC_READY_IN : std_logic; + SIGNAL PC_SOS_OUT : std_logic; + SIGNAL PC_EOD_OUT : std_logic; + SIGNAL PC_SUB_SIZE_OUT : std_logic_vector(31 downto 0); + SIGNAL PC_TRIG_NR_OUT : std_logic_vector(31 downto 0); + SIGNAL PC_PADDING_OUT : std_logic; + SIGNAL BSM_SAVE_OUT : std_logic_vector(3 downto 0); + SIGNAL BSM_LOAD_OUT : std_logic_vector(3 downto 0); + SIGNAL DBG_REM_CTR_OUT : std_logic_vector(3 downto 0); + SIGNAL DBG_CTS_CTR_OUT : std_logic_vector(2 downto 0); + SIGNAL DBG_SF_WCNT_OUT : std_logic_vector(15 downto 0); + SIGNAL DBG_SF_RCNT_OUT : std_logic_vector(16 downto 0); + SIGNAL DBG_SF_DATA_OUT : std_logic_vector(15 downto 0); + SIGNAL DBG_SF_RD_EN_OUT : std_logic; + SIGNAL DBG_SF_WR_EN_OUT : std_logic; + SIGNAL DBG_SF_EMPTY_OUT : std_logic; + SIGNAL DBG_SF_FULL_OUT : std_logic; + SIGNAL DBG_SF_AFULL_OUT : std_logic; + SIGNAL DEBUG_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: feeder PORT MAP( + CLK => CLK, + RESET => RESET, + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + CTS_READ_IN => CTS_READ_IN, + CTS_DATA_OUT => CTS_DATA_OUT, + CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, + CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, + CTS_LENGTH_OUT => CTS_LENGTH_OUT, + CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => FEE_READ_OUT, + FEE_BUSY_IN => FEE_BUSY_IN, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + PC_WR_EN_OUT => PC_WR_EN_OUT, + PC_DATA_OUT => PC_DATA_OUT, + PC_READY_IN => PC_READY_IN, + PC_SOS_OUT => PC_SOS_OUT, + PC_EOD_OUT => PC_EOD_OUT, + PC_SUB_SIZE_OUT => PC_SUB_SIZE_OUT, + PC_TRIG_NR_OUT => PC_TRIG_NR_OUT, + PC_PADDING_OUT => PC_PADDING_OUT, + BSM_SAVE_OUT => BSM_SAVE_OUT, + BSM_LOAD_OUT => BSM_LOAD_OUT, + DBG_REM_CTR_OUT => DBG_REM_CTR_OUT, + DBG_CTS_CTR_OUT => DBG_CTS_CTR_OUT, + DBG_SF_WCNT_OUT => DBG_SF_WCNT_OUT, + DBG_SF_RCNT_OUT => DBG_SF_RCNT_OUT, + DBG_SF_DATA_OUT => DBG_SF_DATA_OUT, + DBG_SF_RD_EN_OUT => DBG_SF_RD_EN_OUT, + DBG_SF_WR_EN_OUT => DBG_SF_WR_EN_OUT, + DBG_SF_EMPTY_OUT => DBG_SF_EMPTY_OUT, + DBG_SF_FULL_OUT => DBG_SF_FULL_OUT, + DBG_SF_AFULL_OUT => DBG_SF_AFULL_OUT, + DEBUG_OUT => DEBUG_OUT + ); + +CLOCK_GEN: process +begin + clk <= '1'; wait for 5.0 ns; + clk <= '0'; wait for 5.0 ns; +end process CLOCK_GEN; + +-- Testbench +TESTBENCH_PROC: process +variable test_data_len : integer range 0 to 65535 := 49; +variable test_loop_len : integer range 0 to 65535 := 0; +variable test_hdr_len : unsigned(15 downto 0) := x"0000"; +variable test_evt_len : unsigned(15 downto 0) := x"0000"; +variable test_data : unsigned(15 downto 0) := x"ffff"; + +variable trigger_counter : unsigned(15 downto 0) := x"4710"; +variable trigger_loop : integer range 0 to 65535 := 15; +begin + -- Setup signals + reset <= '0'; + cts_number_in <= x"0000"; + cts_code_in <= x"00"; + cts_information_in <= x"00"; + cts_readout_type_in <= x"0"; + cts_start_readout_in <= '0'; + cts_read_in <= '0'; + fee_data_in <= x"0000"; + fee_dataready_in <= '0'; + fee_status_bits_in <= x"0000_0000"; + fee_busy_in <= '0'; + pc_ready_in <= '0'; + + wait for 22 ns; + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + wait until rising_edge(clk); + wait for 200 ns; + + +------------------------------------------------------------------------------- +-- Loop the transmissions +------------------------------------------------------------------------------- + trigger_counter := x"4710"; + trigger_loop := 9; + test_data_len := 14; + + MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop + -- IPU transmission starts + wait until rising_edge(clk); + cts_number_in <= std_logic_vector( trigger_counter ); + cts_code_in <= x"aa"; + cts_information_in <= x"de"; + cts_readout_type_in <= x"1"; + cts_start_readout_in <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + fee_busy_in <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + -- ONE DATA TRANSMISSION + -- calculate the needed variables +-- test_data_len := 4096; + test_loop_len := 2*(test_data_len - 1) + 1; + test_hdr_len := to_unsigned( test_data_len + 1, 16 ); + test_evt_len := to_unsigned( test_data_len, 16 ); + + -- original data block (trigger 1, random 0xaa, number 0x4711, source 0x21) + fee_dataready_in <= '1'; + fee_data_in <= x"10aa"; + wait until rising_edge(clk); + fee_data_in <= std_logic_vector( trigger_counter ); + wait until rising_edge(clk); + fee_data_in <= std_logic_vector( test_hdr_len ); + wait until rising_edge(clk); + fee_data_in <= x"ff21"; + wait until rising_edge(clk); + fee_data_in <= std_logic_vector( test_evt_len ); + wait until rising_edge(clk); + fee_data_in <= x"ff22"; + + test_data := x"ffff"; + MY_DATA_LOOP: for J in 0 to test_loop_len loop + test_data := test_data + 1; + wait until rising_edge(clk); + fee_data_in <= std_logic_vector(test_data); + end loop MY_DATA_LOOP; + + fee_busy_in <= '0'; -- correct? + wait until rising_edge(clk); + fee_dataready_in <= '0'; + fee_data_in <= x"0000"; + + trigger_loop := trigger_loop + 1; + trigger_counter := trigger_counter + 1; + + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_read_in <= '1'; + wait until rising_edge(clk); + cts_read_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_start_readout_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + end loop MY_TRIGGER_LOOP; +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + + + wait for 300 ns; + + -- Start packet_constructor + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_ready_in <= '1'; + wait until rising_edge(clk); + + wait; + + wait until rising_edge(clk); + wait until pc_eod_out = '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_ready_in <= '0'; + + -- Stay a while... stay forever!!! + wait; + +end process TESTBENCH_PROC; + + +END; diff --git a/gbe_ecp2m/tb_gbe_buf.vhd b/gbe_ecp2m/tb_gbe_buf.vhd new file mode 100755 index 0000000..a472efa --- /dev/null +++ b/gbe_ecp2m/tb_gbe_buf.vhd @@ -0,0 +1,688 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.math_real.all; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT trb_net16_gbe_buf + GENERIC( DO_SIMULATION : integer range 0 to 1 := 1 ); + PORT( + CLK : IN std_logic; + TEST_CLK : IN std_logic; + RESET : IN std_logic; + GSR_N : IN std_logic; + STAGE_CTRL_REGS_IN : IN std_logic_vector(31 downto 0); + ------------------------ + IP_CFG_START_IN : IN std_logic; + IP_CFG_BANK_SEL_IN : IN std_logic_vector(3 downto 0); + IP_CFG_MEM_DATA_IN : IN std_logic_vector(31 downto 0); + MR_RESET_IN : IN std_logic; + MR_MODE_IN : IN std_logic; + MR_RESTART_IN : IN std_logic; + IP_CFG_MEM_CLK_OUT : OUT std_logic; + IP_CFG_DONE_OUT : OUT std_logic; + IP_CFG_MEM_ADDR_OUT : OUT std_logic_vector(7 downto 0); + -- gk 29.03.10 + SLV_ADDR_IN : in std_logic_vector(7 downto 0); + SLV_READ_IN : in std_logic; + SLV_WRITE_IN : in std_logic; + SLV_BUSY_OUT : out std_logic; + SLV_ACK_OUT : out std_logic; + SLV_DATA_IN : in std_logic_vector(31 downto 0); + SLV_DATA_OUT : out std_logic_vector(31 downto 0); + ------------------------ + CTS_NUMBER_IN : IN std_logic_vector(15 downto 0); + CTS_CODE_IN : IN std_logic_vector(7 downto 0); + CTS_INFORMATION_IN : IN std_logic_vector(7 downto 0); + CTS_READOUT_TYPE_IN : IN std_logic_vector(3 downto 0); + CTS_START_READOUT_IN : IN std_logic; + CTS_READ_IN : IN std_logic; + FEE_DATA_IN : IN std_logic_vector(15 downto 0); + FEE_DATAREADY_IN : IN std_logic; + FEE_STATUS_BITS_IN : IN std_logic_vector(31 downto 0); + FEE_BUSY_IN : IN std_logic; + SFP_RXD_P_IN : IN std_logic; + SFP_RXD_N_IN : IN std_logic; + SFP_REFCLK_P_IN : IN std_logic; + SFP_REFCLK_N_IN : IN std_logic; + SFP_PRSNT_N_IN : IN std_logic; + SFP_LOS_IN : IN std_logic; + STAGE_STAT_REGS_OUT : OUT std_logic_vector(31 downto 0); + CTS_DATA_OUT : OUT std_logic_vector(31 downto 0); + CTS_DATAREADY_OUT : OUT std_logic; + CTS_READOUT_FINISHED_OUT : OUT std_logic; + CTS_LENGTH_OUT : OUT std_logic_vector(15 downto 0); + CTS_ERROR_PATTERN_OUT : OUT std_logic_vector(31 downto 0); + FEE_READ_OUT : OUT std_logic; + SFP_TXD_P_OUT : OUT std_logic; + SFP_TXD_N_OUT : OUT std_logic; + SFP_TXDIS_OUT : OUT std_logic; + IG_CTS_CTR_TST : OUT std_logic_vector(2 downto 0); + IG_REM_CTR_TST : OUT std_logic_vector(3 downto 0); + IG_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0); + IG_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0); + IG_DATA_TST : OUT std_logic_vector(15 downto 0); + IG_WCNT_TST : OUT std_logic_vector(15 downto 0); + IG_RCNT_TST : OUT std_logic_vector(16 downto 0); + IG_RD_EN_TST : OUT std_logic; + IG_WR_EN_TST : OUT std_logic; + IG_EMPTY_TST : OUT std_logic; + IG_AEMPTY_TST : OUT std_logic; + IG_FULL_TST : OUT std_logic; + IG_AFULL_TST : OUT std_logic; + PC_WR_EN_TST : OUT std_logic; + PC_DATA_TST : OUT std_logic_vector(7 downto 0); + PC_READY_TST : OUT std_logic; + PC_START_OF_SUB_TST : OUT std_logic; + PC_END_OF_DATA_TST : OUT std_logic; + PC_ALL_CTR_TST : OUT std_logic_vector(4 downto 0); + PC_SUB_CTR_TST : OUT std_logic_vector(4 downto 0); + PC_SUB_SIZE_TST : OUT std_logic_vector(31 downto 0); + PC_TRIG_NR_TST : OUT std_logic_vector(31 downto 0); + PC_PADDING_TST : OUT std_logic; + PC_DECODING_TST : OUT std_logic_vector(31 downto 0); + PC_EVENT_ID_TST : OUT std_logic_vector(31 downto 0); + PC_QUEUE_DEC_TST : OUT std_logic_vector(31 downto 0); + PC_BSM_CONSTR_TST : OUT std_logic_vector(3 downto 0); + PC_BSM_LOAD_TST : OUT std_logic_vector(3 downto 0); + PC_BSM_SAVE_TST : OUT std_logic_vector(3 downto 0); + PC_SHF_EMPTY_TST : OUT std_logic; + PC_SHF_FULL_TST : OUT std_logic; + PC_SHF_WR_EN_TST : OUT std_logic; + PC_SHF_RD_EN_TST : OUT std_logic; + PC_SHF_Q_TST : OUT std_logic_vector(7 downto 0); + PC_DF_EMPTY_TST : OUT std_logic; + PC_DF_FULL_TST : OUT std_logic; + PC_DF_WR_EN_TST : OUT std_logic; + PC_DF_RD_EN_TST : OUT std_logic; + PC_DF_Q_TST : OUT std_logic_vector(7 downto 0); + PC_BYTES_LOADED_TST : OUT std_logic_vector(15 downto 0); + PC_SIZE_LEFT_TST : OUT std_logic_vector(31 downto 0); + PC_SUB_SIZE_TO_SAVE_TST : OUT std_logic_vector(31 downto 0); + PC_SUB_SIZE_LOADED_TST : OUT std_logic_vector(31 downto 0); + PC_SUB_BYTES_LOADED_TST : OUT std_logic_vector(31 downto 0); + PC_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0); + PC_ACT_QUEUE_SIZE_TST : OUT std_logic_vector(31 downto 0); + FC_WR_EN_TST : OUT std_logic; + FC_DATA_TST : OUT std_logic_vector(7 downto 0); + FC_H_READY_TST : OUT std_logic; + FC_READY_TST : OUT std_logic; + FC_IP_SIZE_TST : OUT std_logic_vector(15 downto 0); + FC_UDP_SIZE_TST : OUT std_logic_vector(15 downto 0); + FC_IDENT_TST : OUT std_logic_vector(15 downto 0); + FC_FLAGS_OFFSET_TST : OUT std_logic_vector(15 downto 0); + FC_SOD_TST : OUT std_logic; + FC_EOD_TST : OUT std_logic; + FC_BSM_CONSTR_TST : OUT std_logic_vector(7 downto 0); + FC_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0); + FT_DATA_TST : OUT std_logic_vector(8 downto 0); + FT_TX_EMPTY_TST : OUT std_logic; + FT_START_OF_PACKET_TST : OUT std_logic; + FT_BSM_INIT_TST : OUT std_logic_vector(3 downto 0); + FT_BSM_MAC_TST : OUT std_logic_vector(3 downto 0); + FT_BSM_TRANS_TST : OUT std_logic_vector(3 downto 0); + MAC_HADDR_TST : OUT std_logic_vector(7 downto 0); + MAC_HDATA_TST : OUT std_logic_vector(7 downto 0); + MAC_HCS_TST : OUT std_logic; + MAC_HWRITE_TST : OUT std_logic; + MAC_HREAD_TST : OUT std_logic; + MAC_HREADY_TST : OUT std_logic; + MAC_HDATA_EN_TST : OUT std_logic; + MAC_FIFOAVAIL_TST : OUT std_logic; + MAC_FIFOEOF_TST : OUT std_logic; + MAC_FIFOEMPTY_TST : OUT std_logic; + MAC_TX_READ_TST : OUT std_logic; + MAC_TX_DONE_TST : OUT std_logic; + PCS_AN_LP_ABILITY_TST : OUT std_logic_vector(15 downto 0); + PCS_AN_COMPLETE_TST : OUT std_logic; + PCS_AN_PAGE_RX_TST : OUT std_logic; + ANALYZER_DEBUG_OUT : OUT std_logic_vector(63 downto 0) + ); + END COMPONENT; + + SIGNAL CLK : std_logic; + SIGNAL TEST_CLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL GSR_N : std_logic; + SIGNAL STAGE_STAT_REGS_OUT : std_logic_vector(31 downto 0); + SIGNAL STAGE_CTRL_REGS_IN : std_logic_vector(31 downto 0); + SIGNAL IP_CFG_START_IN : std_logic; + SIGNAL IP_CFG_BANK_SEL_IN : std_logic_vector(3 downto 0); + SIGNAL IP_CFG_MEM_DATA_IN : std_logic_vector(31 downto 0); + SIGNAL MR_RESET_IN : std_logic; + SIGNAL MR_MODE_IN : std_logic; + SIGNAL MR_RESTART_IN : std_logic; + SIGNAL IP_CFG_MEM_CLK_OUT : std_logic; + SIGNAL IP_CFG_DONE_OUT : std_logic; + SIGNAL IP_CFG_MEM_ADDR_OUT : std_logic_vector(7 downto 0); + SIGNAL CTS_NUMBER_IN : std_logic_vector(15 downto 0); + SIGNAL CTS_CODE_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_INFORMATION_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_READOUT_TYPE_IN : std_logic_vector(3 downto 0); + SIGNAL CTS_START_READOUT_IN : std_logic; + SIGNAL CTS_DATA_OUT : std_logic_vector(31 downto 0); + SIGNAL CTS_DATAREADY_OUT : std_logic; + SIGNAL CTS_READOUT_FINISHED_OUT : std_logic; + SIGNAL CTS_READ_IN : std_logic; + SIGNAL CTS_LENGTH_OUT : std_logic_vector(15 downto 0); + SIGNAL CTS_ERROR_PATTERN_OUT : std_logic_vector(31 downto 0); + SIGNAL FEE_DATA_IN : std_logic_vector(15 downto 0); + SIGNAL FEE_DATAREADY_IN : std_logic; + SIGNAL FEE_READ_OUT : std_logic; + SIGNAL FEE_STATUS_BITS_IN : std_logic_vector(31 downto 0); + SIGNAL FEE_BUSY_IN : std_logic; + SIGNAL SFP_RXD_P_IN : std_logic; + SIGNAL SFP_RXD_N_IN : std_logic; + SIGNAL SFP_TXD_P_OUT : std_logic; + SIGNAL SFP_TXD_N_OUT : std_logic; + SIGNAL SFP_REFCLK_P_IN : std_logic; + SIGNAL SFP_REFCLK_N_IN : std_logic; + SIGNAL SFP_PRSNT_N_IN : std_logic; + SIGNAL SFP_LOS_IN : std_logic; + SIGNAL SFP_TXDIS_OUT : std_logic; + SIGNAL IG_CTS_CTR_TST : std_logic_vector(2 downto 0); + SIGNAL IG_REM_CTR_TST : std_logic_vector(3 downto 0); + SIGNAL IG_BSM_LOAD_TST : std_logic_vector(3 downto 0); + SIGNAL IG_BSM_SAVE_TST : std_logic_vector(3 downto 0); + SIGNAL IG_DATA_TST : std_logic_vector(15 downto 0); + SIGNAL IG_WCNT_TST : std_logic_vector(15 downto 0); + SIGNAL IG_RCNT_TST : std_logic_vector(16 downto 0); + SIGNAL IG_RD_EN_TST : std_logic; + SIGNAL IG_WR_EN_TST : std_logic; + SIGNAL IG_EMPTY_TST : std_logic; + SIGNAL IG_AEMPTY_TST : std_logic; + SIGNAL IG_FULL_TST : std_logic; + SIGNAL IG_AFULL_TST : std_logic; + SIGNAL PC_WR_EN_TST : std_logic; + SIGNAL PC_DATA_TST : std_logic_vector(7 downto 0); + SIGNAL PC_READY_TST : std_logic; + SIGNAL PC_START_OF_SUB_TST : std_logic; + SIGNAL PC_END_OF_DATA_TST : std_logic; + SIGNAL PC_SUB_SIZE_TST : std_logic_vector(31 downto 0); + SIGNAL PC_TRIG_NR_TST : std_logic_vector(31 downto 0); + SIGNAL PC_PADDING_TST : std_logic; + SIGNAL PC_DECODING_TST : std_logic_vector(31 downto 0); + SIGNAL PC_EVENT_ID_TST : std_logic_vector(31 downto 0); + SIGNAL PC_QUEUE_DEC_TST : std_logic_vector(31 downto 0); + SIGNAL PC_BSM_CONSTR_TST : std_logic_vector(3 downto 0); + SIGNAL PC_BSM_LOAD_TST : std_logic_vector(3 downto 0); + SIGNAL PC_BSM_SAVE_TST : std_logic_vector(3 downto 0); + SIGNAL PC_SHF_EMPTY_TST : std_logic; + SIGNAL PC_SHF_FULL_TST : std_logic; + SIGNAL PC_SHF_WR_EN_TST : std_logic; + SIGNAL PC_SHF_RD_EN_TST : std_logic; + SIGNAL PC_SHF_Q_TST : std_logic_vector(7 downto 0); + SIGNAL PC_DF_EMPTY_TST : std_logic; + SIGNAL PC_DF_FULL_TST : std_logic; + SIGNAL PC_DF_WR_EN_TST : std_logic; + SIGNAL PC_DF_RD_EN_TST : std_logic; + SIGNAL PC_DF_Q_TST : std_logic_vector(7 downto 0); + SIGNAL PC_ALL_CTR_TST : std_logic_vector(4 downto 0); + SIGNAL PC_SUB_CTR_TST : std_logic_vector(4 downto 0); + SIGNAL PC_BYTES_LOADED_TST : std_logic_vector(15 downto 0); + SIGNAL PC_SIZE_LEFT_TST : std_logic_vector(31 downto 0); + SIGNAL PC_SUB_SIZE_TO_SAVE_TST : std_logic_vector(31 downto 0); + SIGNAL PC_SUB_SIZE_LOADED_TST : std_logic_vector(31 downto 0); + SIGNAL PC_SUB_BYTES_LOADED_TST : std_logic_vector(31 downto 0); + SIGNAL PC_QUEUE_SIZE_TST : std_logic_vector(31 downto 0); + SIGNAL PC_ACT_QUEUE_SIZE_TST : std_logic_vector(31 downto 0); + SIGNAL FC_WR_EN_TST : std_logic; + SIGNAL FC_DATA_TST : std_logic_vector(7 downto 0); + SIGNAL FC_H_READY_TST : std_logic; + SIGNAL FC_READY_TST : std_logic; + SIGNAL FC_IP_SIZE_TST : std_logic_vector(15 downto 0); + SIGNAL FC_UDP_SIZE_TST : std_logic_vector(15 downto 0); + SIGNAL FC_IDENT_TST : std_logic_vector(15 downto 0); + SIGNAL FC_FLAGS_OFFSET_TST : std_logic_vector(15 downto 0); + SIGNAL FC_SOD_TST : std_logic; + SIGNAL FC_EOD_TST : std_logic; + SIGNAL FC_BSM_CONSTR_TST : std_logic_vector(7 downto 0); + SIGNAL FC_BSM_TRANS_TST : std_logic_vector(3 downto 0); + SIGNAL FT_DATA_TST : std_logic_vector(8 downto 0); + SIGNAL FT_TX_EMPTY_TST : std_logic; + SIGNAL FT_START_OF_PACKET_TST : std_logic; + SIGNAL FT_BSM_INIT_TST : std_logic_vector(3 downto 0); + SIGNAL FT_BSM_MAC_TST : std_logic_vector(3 downto 0); + SIGNAL FT_BSM_TRANS_TST : std_logic_vector(3 downto 0); + SIGNAL MAC_HADDR_TST : std_logic_vector(7 downto 0); + SIGNAL MAC_HDATA_TST : std_logic_vector(7 downto 0); + SIGNAL MAC_HCS_TST : std_logic; + SIGNAL MAC_HWRITE_TST : std_logic; + SIGNAL MAC_HREAD_TST : std_logic; + SIGNAL MAC_HREADY_TST : std_logic; + SIGNAL MAC_HDATA_EN_TST : std_logic; + SIGNAL MAC_FIFOAVAIL_TST : std_logic; + SIGNAL MAC_FIFOEOF_TST : std_logic; + SIGNAL MAC_FIFOEMPTY_TST : std_logic; + SIGNAL MAC_TX_READ_TST : std_logic; + SIGNAL MAC_TX_DONE_TST : std_logic; + SIGNAL PCS_AN_LP_ABILITY_TST : std_logic_vector(15 downto 0); + SIGNAL PCS_AN_COMPLETE_TST : std_logic; + SIGNAL PCS_AN_PAGE_RX_TST : std_logic; + SIGNAL ANALYZER_DEBUG_OUT : std_logic_vector(63 downto 0); + --gk 29.03.10 + signal SLV_ADDR_IN : std_logic_vector(7 downto 0); + signal SLV_READ_IN : std_logic; + signal SLV_WRITE_IN : std_logic; + signal SLV_BUSY_OUT : std_logic; + signal SLV_ACK_OUT : std_logic; + signal SLV_DATA_IN : std_logic_vector(31 downto 0); + signal SLV_DATA_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: trb_net16_gbe_buf + GENERIC MAP( DO_SIMULATION => 1 ) + PORT MAP( + CLK => CLK, + TEST_CLK => TEST_CLK, + RESET => RESET, + GSR_N => GSR_N, + STAGE_STAT_REGS_OUT => STAGE_STAT_REGS_OUT, + STAGE_CTRL_REGS_IN => STAGE_CTRL_REGS_IN, + IP_CFG_START_IN => IP_CFG_START_IN, + IP_CFG_BANK_SEL_IN => IP_CFG_BANK_SEL_IN, + IP_CFG_MEM_DATA_IN => IP_CFG_MEM_DATA_IN, + MR_RESET_IN => MR_RESET_IN, + MR_MODE_IN => MR_MODE_IN, + MR_RESTART_IN => MR_RESTART_IN, + IP_CFG_MEM_CLK_OUT => IP_CFG_MEM_CLK_OUT, + IP_CFG_DONE_OUT => IP_CFG_DONE_OUT, + IP_CFG_MEM_ADDR_OUT => IP_CFG_MEM_ADDR_OUT, + -- gk 29.03.10 + SLV_ADDR_IN => SLV_ADDR_IN, + SLV_READ_IN => SLV_READ_IN, + SLV_WRITE_IN => SLV_WRITE_IN, + SLV_BUSY_OUT => SLV_BUSY_OUT, + SLV_ACK_OUT => SLV_ACK_OUT, + SLV_DATA_IN => SLV_DATA_IN, + SLV_DATA_OUT => SLV_DATA_OUT, + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + CTS_DATA_OUT => CTS_DATA_OUT, + CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, + CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, + CTS_READ_IN => CTS_READ_IN, + CTS_LENGTH_OUT => CTS_LENGTH_OUT, + CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => FEE_READ_OUT, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + FEE_BUSY_IN => FEE_BUSY_IN, + SFP_RXD_P_IN => SFP_RXD_P_IN, + SFP_RXD_N_IN => SFP_RXD_N_IN, + SFP_TXD_P_OUT => SFP_TXD_P_OUT, + SFP_TXD_N_OUT => SFP_TXD_N_OUT, + SFP_REFCLK_P_IN => SFP_REFCLK_P_IN, + SFP_REFCLK_N_IN => SFP_REFCLK_N_IN, + SFP_PRSNT_N_IN => SFP_PRSNT_N_IN, + SFP_LOS_IN => SFP_LOS_IN, + SFP_TXDIS_OUT => SFP_TXDIS_OUT, + IG_CTS_CTR_TST => IG_CTS_CTR_TST, + IG_REM_CTR_TST => IG_REM_CTR_TST, + IG_BSM_LOAD_TST => IG_BSM_LOAD_TST, + IG_BSM_SAVE_TST => IG_BSM_SAVE_TST, + IG_DATA_TST => IG_DATA_TST, + IG_WCNT_TST => IG_WCNT_TST, + IG_RCNT_TST => IG_RCNT_TST, + IG_RD_EN_TST => IG_RD_EN_TST, + IG_WR_EN_TST => IG_WR_EN_TST, + IG_EMPTY_TST => IG_EMPTY_TST, + IG_AEMPTY_TST => IG_AEMPTY_TST, + IG_FULL_TST => IG_FULL_TST, + IG_AFULL_TST => IG_AFULL_TST, + PC_WR_EN_TST => PC_WR_EN_TST, + PC_DATA_TST => PC_DATA_TST, + PC_READY_TST => PC_READY_TST, + PC_START_OF_SUB_TST => PC_START_OF_SUB_TST, + PC_END_OF_DATA_TST => PC_END_OF_DATA_TST, + PC_SUB_SIZE_TST => PC_SUB_SIZE_TST, + PC_TRIG_NR_TST => PC_TRIG_NR_TST, + PC_PADDING_TST => PC_PADDING_TST, + PC_DECODING_TST => PC_DECODING_TST, + PC_EVENT_ID_TST => PC_EVENT_ID_TST, + PC_QUEUE_DEC_TST => PC_QUEUE_DEC_TST, + PC_BSM_CONSTR_TST => PC_BSM_CONSTR_TST, + PC_BSM_LOAD_TST => PC_BSM_LOAD_TST, + PC_BSM_SAVE_TST => PC_BSM_SAVE_TST, + PC_SHF_EMPTY_TST => PC_SHF_EMPTY_TST, + PC_SHF_FULL_TST => PC_SHF_FULL_TST, + PC_SHF_WR_EN_TST => PC_SHF_WR_EN_TST, + PC_SHF_RD_EN_TST => PC_SHF_RD_EN_TST, + PC_SHF_Q_TST => PC_SHF_Q_TST, + PC_DF_EMPTY_TST => PC_DF_EMPTY_TST, + PC_DF_FULL_TST => PC_DF_FULL_TST, + PC_DF_WR_EN_TST => PC_DF_WR_EN_TST, + PC_DF_RD_EN_TST => PC_DF_RD_EN_TST, + PC_DF_Q_TST => PC_DF_Q_TST, + PC_ALL_CTR_TST => PC_ALL_CTR_TST, + PC_SUB_CTR_TST => PC_SUB_CTR_TST, + PC_BYTES_LOADED_TST => PC_BYTES_LOADED_TST, + PC_SIZE_LEFT_TST => PC_SIZE_LEFT_TST, + PC_SUB_SIZE_TO_SAVE_TST => PC_SUB_SIZE_TO_SAVE_TST, + PC_SUB_SIZE_LOADED_TST => PC_SUB_SIZE_LOADED_TST, + PC_SUB_BYTES_LOADED_TST => PC_SUB_BYTES_LOADED_TST, + PC_QUEUE_SIZE_TST => PC_QUEUE_SIZE_TST, + PC_ACT_QUEUE_SIZE_TST => PC_ACT_QUEUE_SIZE_TST, + FC_WR_EN_TST => FC_WR_EN_TST, + FC_DATA_TST => FC_DATA_TST, + FC_H_READY_TST => FC_H_READY_TST, + FC_READY_TST => FC_READY_TST, + FC_IP_SIZE_TST => FC_IP_SIZE_TST, + FC_UDP_SIZE_TST => FC_UDP_SIZE_TST, + FC_IDENT_TST => FC_IDENT_TST, + FC_FLAGS_OFFSET_TST => FC_FLAGS_OFFSET_TST, + FC_SOD_TST => FC_SOD_TST, + FC_EOD_TST => FC_EOD_TST, + FC_BSM_CONSTR_TST => FC_BSM_CONSTR_TST, + FC_BSM_TRANS_TST => FC_BSM_TRANS_TST, + FT_DATA_TST => FT_DATA_TST, + FT_TX_EMPTY_TST => FT_TX_EMPTY_TST, + FT_START_OF_PACKET_TST => FT_START_OF_PACKET_TST, + FT_BSM_INIT_TST => FT_BSM_INIT_TST, + FT_BSM_MAC_TST => FT_BSM_MAC_TST, + FT_BSM_TRANS_TST => FT_BSM_TRANS_TST, + MAC_HADDR_TST => MAC_HADDR_TST, + MAC_HDATA_TST => MAC_HDATA_TST, + MAC_HCS_TST => MAC_HCS_TST, + MAC_HWRITE_TST => MAC_HWRITE_TST, + MAC_HREAD_TST => MAC_HREAD_TST, + MAC_HREADY_TST => MAC_HREADY_TST, + MAC_HDATA_EN_TST => MAC_HDATA_EN_TST, + MAC_FIFOAVAIL_TST => MAC_FIFOAVAIL_TST, + MAC_FIFOEOF_TST => MAC_FIFOEOF_TST, + MAC_FIFOEMPTY_TST => MAC_FIFOEMPTY_TST, + MAC_TX_READ_TST => MAC_TX_READ_TST, + MAC_TX_DONE_TST => MAC_TX_DONE_TST, + PCS_AN_LP_ABILITY_TST => PCS_AN_LP_ABILITY_TST, + PCS_AN_COMPLETE_TST => PCS_AN_COMPLETE_TST, + PCS_AN_PAGE_RX_TST => PCS_AN_PAGE_RX_TST, + ANALYZER_DEBUG_OUT => ANALYZER_DEBUG_OUT + ); + + + +-- 100 MHz system clock +CLOCK_GEN_PROC: process +begin + clk <= '1'; wait for 5.0 ns; + clk <= '0'; wait for 5.0 ns; +end process CLOCK_GEN_PROC; + +-- 125 MHz MAC clock +CLOCK2_GEN_PROC: process +begin + test_clk <= '1'; wait for 4.0 ns; + test_clk <= '0'; wait for 3.0 ns; +end process CLOCK2_GEN_PROC; + +-- Testbench +TESTBENCH_PROC: process +-- test data from TRBnet +variable test_data_len : integer range 0 to 65535 := 1; +variable test_loop_len : integer range 0 to 65535 := 0; +variable test_hdr_len : unsigned(15 downto 0) := x"0000"; +variable test_evt_len : unsigned(15 downto 0) := x"0000"; +variable test_data : unsigned(15 downto 0) := x"ffff"; + +variable trigger_counter : unsigned(15 downto 0) := x"4710"; +variable trigger_loop : integer range 0 to 65535 := 15; + +-- 1400 bytes MTU => 350 as limit for fragmentation +variable max_event_size : real := 512.0; + +variable seed1 : positive; -- seed for random generator +variable seed2 : positive; -- seed for random generator +variable rand : real; -- random value (0.0 ... 1.0) +variable int_rand : integer; -- random value, scaled to your needs +variable cts_random_number : std_logic_vector(7 downto 0); + +variable stim : std_logic_vector(15 downto 0); + +-- RND test +--UNIFORM(seed1, seed2, rand); +--int_rand := INTEGER(TRUNC(rand*65536.0)); +--stim := std_logic_vector(to_unsigned(int_rand, stim'LENGTH)); + +begin + -- Setup signals + reset <= '0'; + gsr_n <= '1'; + + stage_ctrl_regs_in <= x"0000_0000"; + + --ip_cfg_start_in <= '0'; + --ip_cfg_bank_sel_in <= x"0"; + --ip_cfg_mem_data_in <= x"0000_0000"; + mr_reset_in <= '0'; + mr_mode_in <= '0'; + mr_restart_in <= '0'; + SLV_ADDR_IN <= x"00"; + SLV_READ_IN <= '0'; + SLV_WRITE_IN <= '0'; + SLV_DATA_IN <= x"0000_0000"; + + sfp_los_in <= '0'; -- signal from SFP is present + sfp_prsnt_n_in <= '0'; -- SFP itself is present + sfp_refclk_n_in <= '0'; + sfp_refclk_p_in <= '1'; + + cts_number_in <= x"0000"; + cts_code_in <= x"00"; + cts_information_in <= x"00"; + cts_readout_type_in <= x"0"; + cts_start_readout_in <= '0'; + cts_read_in <= '0'; + + fee_data_in <= x"0000"; + fee_dataready_in <= '0'; + fee_status_bits_in <= x"1234_5678"; + fee_busy_in <= '0'; + + wait for 22 ns; + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + gsr_n <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + gsr_n <= '1'; + wait until rising_edge(clk); + --wait for 100 ns; + + -- Tests may start here + wait until ft_bsm_init_tst = x"7"; + + --ip_cfg_start_in <= '1'; + + wait for 500 ns; + +------------------------------------------------------------------------------- +-- Loop the transmissions +------------------------------------------------------------------------------- + trigger_counter := x"4710"; + trigger_loop := 10; + + MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop + -- generate a real random byte for CTS + UNIFORM(seed1, seed2, rand); + int_rand := INTEGER(TRUNC(rand*256.0)); + cts_random_number := std_logic_vector(to_unsigned(int_rand, cts_random_number'LENGTH)); + + -- IPU transmission starts + wait until rising_edge(clk); + cts_number_in <= std_logic_vector( trigger_counter ); + cts_code_in <= cts_random_number; + cts_information_in <= x"d1"; -- cts_information_in <= x"de"; -- gk 29.03.10 + cts_readout_type_in <= x"1"; + cts_start_readout_in <= '1'; + wait until rising_edge(clk); + wait for 400 ns; + + wait until rising_edge(clk); + fee_busy_in <= '1'; + wait for 300 ns; + wait until rising_edge(clk); + + -- ONE DATA TRANSMISSION + -- dice a length + UNIFORM(seed1, seed2, rand); + test_data_len := INTEGER(TRUNC(rand*max_event_size)) + 1; + + --test_data_len := 9685; + test_data_len := 200; + + -- calculate the needed variables + test_loop_len := 2*(test_data_len - 1) + 1; + test_hdr_len := to_unsigned( test_data_len + 1, 16 ); + test_evt_len := to_unsigned( test_data_len, 16 ); + + -- original data block (trigger 1, random 0xaa, number 0x4711, source 0x21) + fee_dataready_in <= '1'; + fee_data_in <= x"10" & cts_random_number; + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of first data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( trigger_counter ); + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of second data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( test_hdr_len ); + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of third data word + fee_data_in <= x"ff21"; + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of fourth data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( test_evt_len ); + wait until rising_edge(clk) and (fee_read_out = '1'); + fee_data_in <= x"ff22"; + wait until rising_edge(clk) and (fee_read_out = '1'); + fee_dataready_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + test_data := x"ffff"; + MY_DATA_LOOP: for J in 0 to test_loop_len loop + test_data := test_data + 1; + wait until rising_edge(clk); + fee_data_in <= std_logic_vector(test_data); + if( (test_data MOD 5) = 0 ) then + fee_dataready_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + else + fee_dataready_in <= '1'; + end if; + end loop MY_DATA_LOOP; + -- there must be padding words to get multiple of four LWs + + wait until rising_edge(clk); + fee_dataready_in <= '0'; + fee_data_in <= x"0000"; + + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_busy_in <= '0'; + + + trigger_loop := trigger_loop + 1; + trigger_counter := trigger_counter + 1; + + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_read_in <= '1'; + wait until rising_edge(clk); + cts_read_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_start_readout_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + --wait for 8 us; + + end loop MY_TRIGGER_LOOP; + +-- wait for 8 us; +------------------------------------------------------------------------------- +-- end of loop +------------------------------------------------------------------------------- + -- Stay a while... stay forever!!! + wait; + +end process TESTBENCH_PROC; + +END; + diff --git a/gbe_ecp2m/tb_ip_configurator.vhd b/gbe_ecp2m/tb_ip_configurator.vhd new file mode 100755 index 0000000..6188d42 --- /dev/null +++ b/gbe_ecp2m/tb_ip_configurator.vhd @@ -0,0 +1,145 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT ip_configurator + PORT( + CLK : IN std_logic; + RESET : IN std_logic; + START_CONFIG_IN : IN std_logic; + BANK_SELECT_IN : IN std_logic_vector(3 downto 0); + MEM_DATA_IN : IN std_logic_vector(31 downto 0); + CONFIG_DONE_OUT : OUT std_logic; + MEM_ADDR_OUT : OUT std_logic_vector(7 downto 0); + MEM_CLK_OUT : OUT std_logic; + DEST_MAC_OUT : OUT std_logic_vector(47 downto 0); + DEST_IP_OUT : OUT std_logic_vector(31 downto 0); + DEST_UDP_OUT : OUT std_logic_vector(15 downto 0); + SRC_MAC_OUT : OUT std_logic_vector(47 downto 0); + SRC_IP_OUT : OUT std_logic_vector(31 downto 0); + SRC_UDP_OUT : OUT std_logic_vector(15 downto 0); + MTU_OUT : OUT std_logic_vector(15 downto 0); + DEBUG_OUT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL CLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL START_CONFIG_IN : std_logic; + SIGNAL BANK_SELECT_IN : std_logic_vector(3 downto 0); + SIGNAL CONFIG_DONE_OUT : std_logic; + SIGNAL MEM_ADDR_OUT : std_logic_vector(7 downto 0); + SIGNAL MEM_DATA_IN : std_logic_vector(31 downto 0); + SIGNAL MEM_CLK_OUT : std_logic; + SIGNAL DEST_MAC_OUT : std_logic_vector(47 downto 0); + SIGNAL DEST_IP_OUT : std_logic_vector(31 downto 0); + SIGNAL DEST_UDP_OUT : std_logic_vector(15 downto 0); + SIGNAL SRC_MAC_OUT : std_logic_vector(47 downto 0); + SIGNAL SRC_IP_OUT : std_logic_vector(31 downto 0); + SIGNAL SRC_UDP_OUT : std_logic_vector(15 downto 0); + SIGNAL MTU_OUT : std_logic_vector(15 downto 0); + SIGNAL DEBUG_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: ip_configurator PORT MAP( + CLK => CLK, + RESET => RESET, + START_CONFIG_IN => START_CONFIG_IN, + BANK_SELECT_IN => BANK_SELECT_IN, + CONFIG_DONE_OUT => CONFIG_DONE_OUT, + MEM_ADDR_OUT => MEM_ADDR_OUT, + MEM_DATA_IN => MEM_DATA_IN, + MEM_CLK_OUT => MEM_CLK_OUT, + DEST_MAC_OUT => DEST_MAC_OUT, + DEST_IP_OUT => DEST_IP_OUT, + DEST_UDP_OUT => DEST_UDP_OUT, + SRC_MAC_OUT => SRC_MAC_OUT, + SRC_IP_OUT => SRC_IP_OUT, + SRC_UDP_OUT => SRC_UDP_OUT, + MTU_OUT => MTU_OUT, + DEBUG_OUT => DEBUG_OUT + ); + + +CLK_GEN_PROC: process +begin + clk <= '0'; wait for 5.0 ns; + clk <= '1'; wait for 5.0 ns; +end process CLK_GEN_PROC; + +THE_TESTBENCH: process +begin + -- Setup signals + reset <= '0'; + start_config_in <= '0'; + bank_select_in <= x"0"; + mem_data_in <= x"0000_0000"; + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + wait for 100 ns; + wait until rising_edge(clk); + + -- Tests may start now + wait until rising_edge(clk); + start_config_in <= '1'; + wait until mem_addr_out(3 downto 0) = x"1"; + wait until rising_edge(clk); + mem_data_in <= x"4902d745"; -- dest MAC low + wait until rising_edge(clk); + mem_data_in <= x"00006cf0"; -- dest MAC high + wait until rising_edge(clk); + mem_data_in <= x"c0a80002"; -- dest IP + wait until rising_edge(clk); + mem_data_in <= x"0000c350"; -- dest port + wait until rising_edge(clk); + mem_data_in <= x"eeeeeeee"; -- src MAC low + wait until rising_edge(clk); + mem_data_in <= x"0000eeee"; -- src MAC high + wait until rising_edge(clk); + mem_data_in <= x"c0a80005"; -- src IP + wait until rising_edge(clk); + mem_data_in <= x"0000c350"; -- src port + wait until rising_edge(clk); + mem_data_in <= x"00000578"; -- MTU + wait until rising_edge(clk); + mem_data_in <= x"99999999"; + wait until rising_edge(clk); + mem_data_in <= x"aaaaaaaa"; + wait until rising_edge(clk); + mem_data_in <= x"bbbbbbbb"; + wait until rising_edge(clk); + mem_data_in <= x"cccccccc"; + wait until rising_edge(clk); + mem_data_in <= x"dddddddd"; + wait until rising_edge(clk); + mem_data_in <= x"eeeeeeee"; + wait until rising_edge(clk); + mem_data_in <= x"ffffffff"; + wait until rising_edge(clk); + mem_data_in <= x"00000000"; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + start_config_in <= '0'; + + -- Stay a while... stay forever!!! Muahahaha!!!!! + wait; +end process THE_TESTBENCH; + + +END; diff --git a/gbe_ecp2m/tb_ipu2gbe.vhd b/gbe_ecp2m/tb_ipu2gbe.vhd new file mode 100755 index 0000000..065e674 --- /dev/null +++ b/gbe_ecp2m/tb_ipu2gbe.vhd @@ -0,0 +1,428 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.math_real.all; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT trb_net16_ipu2gbe + PORT( + CLK : IN std_logic; + RESET : IN std_logic; + START_CONFIG_OUT : OUT std_logic; + BANK_SELECT_OUT : OUT std_logic_vector(3 downto 0); + CONFIG_DONE_IN : IN std_logic; + DATA_GBE_ENABLE_IN : IN std_logic; + DATA_IPU_ENABLE_IN : IN std_logic; + MULTI_EVT_ENABLE_IN : IN std_logic; + CTS_NUMBER_IN : IN std_logic_vector(15 downto 0); + CTS_CODE_IN : IN std_logic_vector(7 downto 0); + CTS_INFORMATION_IN : IN std_logic_vector(7 downto 0); + CTS_READOUT_TYPE_IN : IN std_logic_vector(3 downto 0); + CTS_START_READOUT_IN : IN std_logic; + CTS_READ_IN : IN std_logic; + FEE_DATA_IN : IN std_logic_vector(15 downto 0); + FEE_DATAREADY_IN : IN std_logic; + FEE_BUSY_IN : IN std_logic; + FEE_STATUS_BITS_IN : IN std_logic_vector(31 downto 0); + PC_READY_IN : IN std_logic; + CTS_DATA_OUT : OUT std_logic_vector(31 downto 0); + CTS_DATAREADY_OUT : OUT std_logic; + CTS_READOUT_FINISHED_OUT : OUT std_logic; + CTS_LENGTH_OUT : OUT std_logic_vector(15 downto 0); + CTS_ERROR_PATTERN_OUT : OUT std_logic_vector(31 downto 0); + FEE_READ_OUT : OUT std_logic; + PC_WR_EN_OUT : OUT std_logic; + PC_DATA_OUT : OUT std_logic_vector(7 downto 0); + PC_SOS_OUT : OUT std_logic; + PC_EOD_OUT : OUT std_logic; + PC_SUB_SIZE_OUT : OUT std_logic_vector(31 downto 0); + PC_TRIG_NR_OUT : OUT std_logic_vector(31 downto 0); + PC_PADDING_OUT : OUT std_logic; + BSM_SAVE_OUT : OUT std_logic_vector(3 downto 0); + BSM_LOAD_OUT : OUT std_logic_vector(3 downto 0); + DBG_REM_CTR_OUT : OUT std_logic_vector(3 downto 0); + DBG_CTS_CTR_OUT : OUT std_logic_vector(2 downto 0); + DBG_SF_WCNT_OUT : OUT std_logic_vector(15 downto 0); + DBG_SF_RCNT_OUT : OUT std_logic_vector(16 downto 0); + DBG_SF_DATA_OUT : OUT std_logic_vector(15 downto 0); + DBG_SF_RD_EN_OUT : OUT std_logic; + DBG_SF_WR_EN_OUT : OUT std_logic; + DBG_SF_EMPTY_OUT : OUT std_logic; + DBG_SF_AEMPTY_OUT : OUT std_logic; + DBG_SF_FULL_OUT : OUT std_logic; + DBG_SF_AFULL_OUT : OUT std_logic; + DEBUG_OUT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL CLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL START_CONFIG_OUT : std_logic; + SIGNAL BANK_SELECT_OUT : std_logic_vector(3 downto 0); + SIGNAL CONFIG_DONE_IN : std_logic; + SIGNAL DATA_GBE_ENABLE_IN : std_logic; + SIGNAL DATA_IPU_ENABLE_IN : std_logic; + SIGNAL MULTI_EVT_ENABLE_IN : std_logic; + SIGNAL CTS_NUMBER_IN : std_logic_vector(15 downto 0); + SIGNAL CTS_CODE_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_INFORMATION_IN : std_logic_vector(7 downto 0); + SIGNAL CTS_READOUT_TYPE_IN : std_logic_vector(3 downto 0); + SIGNAL CTS_START_READOUT_IN : std_logic; + SIGNAL CTS_READ_IN : std_logic; + SIGNAL CTS_DATA_OUT : std_logic_vector(31 downto 0); + SIGNAL CTS_DATAREADY_OUT : std_logic; + SIGNAL CTS_READOUT_FINISHED_OUT : std_logic; + SIGNAL CTS_LENGTH_OUT : std_logic_vector(15 downto 0); + SIGNAL CTS_ERROR_PATTERN_OUT : std_logic_vector(31 downto 0); + SIGNAL FEE_DATA_IN : std_logic_vector(15 downto 0); + SIGNAL FEE_DATAREADY_IN : std_logic; + SIGNAL FEE_READ_OUT : std_logic; + SIGNAL FEE_BUSY_IN : std_logic; + SIGNAL FEE_STATUS_BITS_IN : std_logic_vector(31 downto 0); + SIGNAL PC_WR_EN_OUT : std_logic; + SIGNAL PC_DATA_OUT : std_logic_vector(7 downto 0); + SIGNAL PC_READY_IN : std_logic; + SIGNAL PC_SOS_OUT : std_logic; + SIGNAL PC_EOD_OUT : std_logic; + SIGNAL PC_SUB_SIZE_OUT : std_logic_vector(31 downto 0); + SIGNAL PC_TRIG_NR_OUT : std_logic_vector(31 downto 0); + SIGNAL PC_PADDING_OUT : std_logic; + SIGNAL BSM_SAVE_OUT : std_logic_vector(3 downto 0); + SIGNAL BSM_LOAD_OUT : std_logic_vector(3 downto 0); + SIGNAL DBG_REM_CTR_OUT : std_logic_vector(3 downto 0); + SIGNAL DBG_CTS_CTR_OUT : std_logic_vector(2 downto 0); + SIGNAL DBG_SF_WCNT_OUT : std_logic_vector(15 downto 0); + SIGNAL DBG_SF_RCNT_OUT : std_logic_vector(16 downto 0); + SIGNAL DBG_SF_DATA_OUT : std_logic_vector(15 downto 0); + SIGNAL DBG_SF_RD_EN_OUT : std_logic; + SIGNAL DBG_SF_WR_EN_OUT : std_logic; + SIGNAL DBG_SF_EMPTY_OUT : std_logic; + SIGNAL DBG_SF_AEMPTY_OUT : std_logic; + SIGNAL DBG_SF_FULL_OUT : std_logic; + SIGNAL DBG_SF_AFULL_OUT : std_logic; + SIGNAL DEBUG_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: trb_net16_ipu2gbe PORT MAP( + CLK => CLK, + RESET => RESET, + START_CONFIG_OUT => START_CONFIG_OUT, + BANK_SELECT_OUT => BANK_SELECT_OUT, + CONFIG_DONE_IN => CONFIG_DONE_IN, + DATA_GBE_ENABLE_IN => DATA_GBE_ENABLE_IN, + DATA_IPU_ENABLE_IN => DATA_IPU_ENABLE_IN, + MULTI_EVT_ENABLE_IN => MULTI_EVT_ENABLE_IN, + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + CTS_READ_IN => CTS_READ_IN, + CTS_DATA_OUT => CTS_DATA_OUT, + CTS_DATAREADY_OUT => CTS_DATAREADY_OUT, + CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT, + CTS_LENGTH_OUT => CTS_LENGTH_OUT, + CTS_ERROR_PATTERN_OUT => CTS_ERROR_PATTERN_OUT, + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => FEE_READ_OUT, + FEE_BUSY_IN => FEE_BUSY_IN, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + PC_WR_EN_OUT => PC_WR_EN_OUT, + PC_DATA_OUT => PC_DATA_OUT, + PC_READY_IN => PC_READY_IN, + PC_SOS_OUT => PC_SOS_OUT, + PC_EOD_OUT => PC_EOD_OUT, + PC_SUB_SIZE_OUT => PC_SUB_SIZE_OUT, + PC_TRIG_NR_OUT => PC_TRIG_NR_OUT, + PC_PADDING_OUT => PC_PADDING_OUT, + BSM_SAVE_OUT => BSM_SAVE_OUT, + BSM_LOAD_OUT => BSM_LOAD_OUT, + DBG_REM_CTR_OUT => DBG_REM_CTR_OUT, + DBG_CTS_CTR_OUT => DBG_CTS_CTR_OUT, + DBG_SF_WCNT_OUT => DBG_SF_WCNT_OUT, + DBG_SF_RCNT_OUT => DBG_SF_RCNT_OUT, + DBG_SF_DATA_OUT => DBG_SF_DATA_OUT, + DBG_SF_RD_EN_OUT => DBG_SF_RD_EN_OUT, + DBG_SF_WR_EN_OUT => DBG_SF_WR_EN_OUT, + DBG_SF_EMPTY_OUT => DBG_SF_EMPTY_OUT, + DBG_SF_AEMPTY_OUT => DBG_SF_AEMPTY_OUT, + DBG_SF_FULL_OUT => DBG_SF_FULL_OUT, + DBG_SF_AFULL_OUT => DBG_SF_AFULL_OUT, + DEBUG_OUT => DEBUG_OUT + ); + +CLOCK_GEN: process +begin + clk <= '1'; wait for 5.0 ns; + clk <= '0'; wait for 5.0 ns; +end process CLOCK_GEN; + +PC_READY_PROC: process +begin + pc_ready_in <= '0'; + wait for 500 ns; + pc_ready_in <= '1'; + wait for 500 ns; + pc_ready_in <= '0'; + wait for 99 us; +end process PC_READY_PROC; + +-- Testbench +TESTBENCH_PROC: process +-- test data from TRBnet +variable test_data_len : integer range 0 to 65535 := 1; +variable test_loop_len : integer range 0 to 65535 := 0; +variable test_hdr_len : unsigned(15 downto 0) := x"0000"; +variable test_evt_len : unsigned(15 downto 0) := x"0000"; +variable test_data : unsigned(15 downto 0) := x"ffff"; + +variable trigger_counter : unsigned(15 downto 0) := x"4710"; +variable trigger_loop : integer range 0 to 65535 := 15; + +-- 1400 bytes MTU => 350 as limit for fragmentation +--variable max_event_size : real := 512.0; +variable max_event_size : real := 17.0; + +variable seed1 : positive; -- seed for random generator +variable seed2 : positive; -- seed for random generator +variable rand : real; -- random value (0.0 ... 1.0) +variable int_rand : integer; -- random value, scaled to your needs +variable cts_random_number : std_logic_vector(7 downto 0); + +variable stim : std_logic_vector(15 downto 0); + +begin + -- Setup signals + reset <= '0'; + cts_number_in <= x"0000"; + cts_code_in <= x"00"; + cts_information_in <= x"00"; + cts_readout_type_in <= x"0"; + cts_start_readout_in <= '0'; + cts_read_in <= '0'; + fee_data_in <= x"0000"; + fee_dataready_in <= '0'; + fee_status_bits_in <= x"0000_0000"; + fee_busy_in <= '0'; +-- pc_ready_in <= '0'; + + config_done_in <= '1'; + data_gbe_enable_in <= '1'; + data_ipu_enable_in <= '0'; + multi_evt_enable_in <= '0'; + + wait for 22 ns; + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + wait until rising_edge(clk); + wait for 200 ns; + +--------------------------- + +------------------------------------------------------------------------------- +-- Loop the transmissions +------------------------------------------------------------------------------- + trigger_counter := x"4710"; + trigger_loop := 2; + + MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop + -- generate a real random byte for CTS + UNIFORM(seed1, seed2, rand); + int_rand := INTEGER(TRUNC(rand*256.0)); + cts_random_number := std_logic_vector(to_unsigned(int_rand, cts_random_number'LENGTH)); + + -- IPU transmission starts + wait until rising_edge(clk); + cts_number_in <= std_logic_vector( trigger_counter ); + cts_code_in <= cts_random_number; + cts_information_in <= x"de"; + cts_readout_type_in <= x"1"; + cts_start_readout_in <= '1'; + wait until rising_edge(clk); + wait for 400 ns; + + wait until rising_edge(clk); + fee_busy_in <= '1'; + wait for 300 ns; + wait until rising_edge(clk); + + -- ONE DATA TRANSMISSION + -- dice a length + UNIFORM(seed1, seed2, rand); + test_data_len := INTEGER(TRUNC(rand*max_event_size)) + 1; + +-- test_data_len := 9685; + + -- calculate the needed variables + test_loop_len := 2*(test_data_len - 1) + 1; + test_hdr_len := to_unsigned( test_data_len + 1, 16 ); + test_evt_len := to_unsigned( test_data_len, 16 ); + + -- original data block (trigger 1, random 0xaa, number 0x4711, source 0x21) + fee_dataready_in <= '1'; + fee_data_in <= x"10" & cts_random_number; + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of first data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( trigger_counter ); + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of second data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); -- BLA + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( test_hdr_len ); + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of third data word + fee_data_in <= x"ff21"; + wait until rising_edge(clk) and (fee_read_out = '1'); -- transfer of fourth data word + fee_dataready_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + fee_data_in <= std_logic_vector( test_evt_len ); + wait until rising_edge(clk) and (fee_read_out = '1'); + fee_data_in <= x"ff22"; + wait until rising_edge(clk) and (fee_read_out = '1'); + fee_dataready_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + test_data := x"ffff"; + MY_DATA_LOOP: for J in 0 to test_loop_len loop + test_data := test_data + 1; + wait until rising_edge(clk) and (fee_read_out = '1'); -- + fee_data_in <= std_logic_vector(test_data); + if( (test_data MOD 5) = 0 ) then + fee_dataready_in <= '0'; +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_dataready_in <= '1'; + else + fee_dataready_in <= '1'; + end if; + end loop MY_DATA_LOOP; + -- there must be padding words to get multiple of four LWs + + wait until rising_edge(clk); + fee_dataready_in <= '0'; + fee_data_in <= x"0000"; + + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fee_busy_in <= '0'; + + + trigger_loop := trigger_loop + 1; + trigger_counter := trigger_counter + 1; + + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_read_in <= '1'; + wait until rising_edge(clk); + cts_read_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + cts_start_readout_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + --wait for 8 us; + + end loop MY_TRIGGER_LOOP; + + + +--------------------------- +--------------------------- + wait for 300 ns; + + wait; + + -- Start packet_constructor + wait until rising_edge(clk); + wait until rising_edge(clk); +-- pc_ready_in <= '1'; + wait until rising_edge(clk); + + wait until rising_edge(clk); + wait until pc_eod_out = '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); +-- pc_ready_in <= '0'; + + -- Stay a while... stay forever!!! + wait; + +end process TESTBENCH_PROC; + + +END; diff --git a/gbe_ecp2m/tb_lsm.vhd b/gbe_ecp2m/tb_lsm.vhd new file mode 100755 index 0000000..6e86029 --- /dev/null +++ b/gbe_ecp2m/tb_lsm.vhd @@ -0,0 +1,113 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT trb_net16_lsm_sfp_gbe + PORT( + SYSCLK : IN std_logic; + RESET : IN std_logic; + CLEAR : IN std_logic; + SFP_MISSING_IN : IN std_logic; + SFP_LOS_IN : IN std_logic; + SD_LINK_OK_IN : IN std_logic; + SD_LOS_IN : IN std_logic; + SD_TXCLK_BAD_IN : IN std_logic; + SD_RXCLK_BAD_IN : IN std_logic; + FULL_RESET_OUT : OUT std_logic; + LANE_RESET_OUT : OUT std_logic; + USER_RESET_OUT : OUT std_logic; + TIMING_CTR_OUT : OUT std_logic_vector(18 downto 0); + BSM_OUT : OUT std_logic_vector(3 downto 0); + DEBUG_OUT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL SYSCLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL CLEAR : std_logic; + SIGNAL SFP_MISSING_IN : std_logic; + SIGNAL SFP_LOS_IN : std_logic; + SIGNAL SD_LINK_OK_IN : std_logic; + SIGNAL SD_LOS_IN : std_logic; + SIGNAL SD_TXCLK_BAD_IN : std_logic; + SIGNAL SD_RXCLK_BAD_IN : std_logic; + SIGNAL FULL_RESET_OUT : std_logic; + SIGNAL LANE_RESET_OUT : std_logic; + SIGNAL USER_RESET_OUT : std_logic; + SIGNAL TIMING_CTR_OUT : std_logic_vector(18 downto 0); + SIGNAL BSM_OUT : std_logic_vector(3 downto 0); + SIGNAL DEBUG_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: trb_net16_lsm_sfp_gbe PORT MAP( + SYSCLK => SYSCLK, + RESET => RESET, + CLEAR => CLEAR, + SFP_MISSING_IN => SFP_MISSING_IN, + SFP_LOS_IN => SFP_LOS_IN, + SD_LINK_OK_IN => SD_LINK_OK_IN, + SD_LOS_IN => SD_LOS_IN, + SD_TXCLK_BAD_IN => SD_TXCLK_BAD_IN, + SD_RXCLK_BAD_IN => SD_RXCLK_BAD_IN, + FULL_RESET_OUT => FULL_RESET_OUT, + LANE_RESET_OUT => LANE_RESET_OUT, + USER_RESET_OUT => USER_RESET_OUT, + TIMING_CTR_OUT => TIMING_CTR_OUT, + BSM_OUT => BSM_OUT, + DEBUG_OUT => DEBUG_OUT + ); + + +CLOCK_GEN: process +begin + sysclk <= '1'; wait for 4.0 ns; + sysclk <= '0'; wait for 4.0 ns; +end process CLOCK_GEN; + +THE_TESTBENCH: process +begin + -- Setup signals + reset <= '0'; + clear <= '0'; + sfp_missing_in <= '0'; + sfp_los_in <= '0'; + sd_link_ok_in <= '0'; + sd_los_in <= '0'; + sd_txclk_bad_in <= '1'; + sd_rxclk_bad_in <= '1'; + wait for 100 ns; + + -- Reset + clear <= '1'; + wait for 100 ns; + clear <= '0'; + wait for 10 ns; + + -- Tests may start now + wait until falling_edge(full_reset_out); + wait for 123 ns; + sd_txclk_bad_in <= '0'; + wait for 433 ns; + sd_rxclk_bad_in <= '0'; + + wait for 1.1 us; + sd_rxclk_bad_in <= '1'; + wait for 33 ns; + sd_rxclk_bad_in <= '0'; + + + wait until rising_edge(sysclk); + + -- Stay a while.... stay forever!!! Muahahaha!!!! + wait; + +end process THE_TESTBENCH; + +END; \ No newline at end of file diff --git a/gbe_ecp2m/tb_pc.vhd b/gbe_ecp2m/tb_pc.vhd new file mode 100755 index 0000000..ac85375 --- /dev/null +++ b/gbe_ecp2m/tb_pc.vhd @@ -0,0 +1,310 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT trb_net16_gbe_packet_constr + PORT( + RESET : IN std_logic; + CLK : IN std_logic; + PC_WR_EN_IN : IN std_logic; + PC_DATA_IN : IN std_logic_vector(7 downto 0); + PC_START_OF_SUB_IN : IN std_logic; + PC_END_OF_DATA_IN : IN std_logic; + PC_SUB_SIZE_IN : IN std_logic_vector(31 downto 0); + PC_DECODING_IN : IN std_logic_vector(31 downto 0); + PC_EVENT_ID_IN : IN std_logic_vector(31 downto 0); + PC_TRIG_NR_IN : IN std_logic_vector(31 downto 0); + PC_QUEUE_DEC_IN : IN std_logic_vector(31 downto 0); + PC_MAX_FRAME_SIZE_IN : IN std_logic_vector(15 downto 0); + FC_H_READY_IN : IN std_logic; + FC_READY_IN : IN std_logic; + PC_READY_OUT : OUT std_logic; + FC_WR_EN_OUT : OUT std_logic; + FC_DATA_OUT : OUT std_logic_vector(7 downto 0); + FC_IP_SIZE_OUT : OUT std_logic_vector(15 downto 0); + FC_UDP_SIZE_OUT : OUT std_logic_vector(15 downto 0); + FC_IDENT_OUT : OUT std_logic_vector(15 downto 0); + FC_FLAGS_OFFSET_OUT : OUT std_logic_vector(15 downto 0); + FC_SOD_OUT : OUT std_logic; + FC_EOD_OUT : OUT std_logic; + BSM_CONSTR_OUT : OUT std_logic_vector(3 downto 0); + BSM_LOAD_OUT : OUT std_logic_vector(3 downto 0); + BSM_SAVE_OUT : OUT std_logic_vector(3 downto 0); + DBG_SHF_EMPTY : OUT std_logic; + DBG_SHF_FULL : OUT std_logic; + DBG_SHF_WR_EN : OUT std_logic; + DBG_SHF_RD_EN : OUT std_logic; + DBG_DF_EMPTY : OUT std_logic; + DBG_DF_FULL : OUT std_logic; + DBG_DF_WR_EN : OUT std_logic; + DBG_DF_RD_EN : OUT std_logic; + DBG_ALL_CTR : OUT std_logic_vector(4 downto 0); + DBG_SUB_CTR : OUT std_logic_vector(4 downto 0); + DBG_MY_CTR : OUT std_logic_vector(1 downto 0); + DBG_BYTES_LOADED : OUT std_logic_vector(15 downto 0); + DBG_SIZE_LEFT : OUT std_logic_vector(31 downto 0); + DBG_SUB_SIZE_TO_SAVE : OUT std_logic_vector(31 downto 0); + DBG_SUB_SIZE_LOADED : OUT std_logic_vector(31 downto 0); + DBG_SUB_BYTES_LOADED : OUT std_logic_vector(31 downto 0); + DBG_QUEUE_SIZE : OUT std_logic_vector(31 downto 0); + DBG_ACT_QUEUE_SIZE : OUT std_logic_vector(31 downto 0); + DEBUG_OUT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL RESET : std_logic; + SIGNAL CLK : std_logic; + SIGNAL PC_WR_EN_IN : std_logic; + SIGNAL PC_DATA_IN : std_logic_vector(7 downto 0); + SIGNAL PC_READY_OUT : std_logic; + SIGNAL PC_START_OF_SUB_IN : std_logic; + SIGNAL PC_END_OF_DATA_IN : std_logic; + SIGNAL PC_SUB_SIZE_IN : std_logic_vector(31 downto 0); + SIGNAL PC_DECODING_IN : std_logic_vector(31 downto 0); + SIGNAL PC_EVENT_ID_IN : std_logic_vector(31 downto 0); + SIGNAL PC_TRIG_NR_IN : std_logic_vector(31 downto 0); + SIGNAL PC_QUEUE_DEC_IN : std_logic_vector(31 downto 0); + SIGNAL PC_MAX_FRAME_SIZE_IN : std_logic_vector(15 downto 0); + SIGNAL FC_WR_EN_OUT : std_logic; + SIGNAL FC_DATA_OUT : std_logic_vector(7 downto 0); + SIGNAL FC_H_READY_IN : std_logic; + SIGNAL FC_READY_IN : std_logic; + SIGNAL FC_IP_SIZE_OUT : std_logic_vector(15 downto 0); + SIGNAL FC_UDP_SIZE_OUT : std_logic_vector(15 downto 0); + SIGNAL FC_IDENT_OUT : std_logic_vector(15 downto 0); + SIGNAL FC_FLAGS_OFFSET_OUT : std_logic_vector(15 downto 0); + SIGNAL FC_SOD_OUT : std_logic; + SIGNAL FC_EOD_OUT : std_logic; + SIGNAL BSM_CONSTR_OUT : std_logic_vector(3 downto 0); + SIGNAL BSM_LOAD_OUT : std_logic_vector(3 downto 0); + SIGNAL BSM_SAVE_OUT : std_logic_vector(3 downto 0); + SIGNAL DBG_SHF_EMPTY : std_logic; + SIGNAL DBG_SHF_FULL : std_logic; + SIGNAL DBG_SHF_WR_EN : std_logic; + SIGNAL DBG_SHF_RD_EN : std_logic; + SIGNAL DBG_DF_EMPTY : std_logic; + SIGNAL DBG_DF_FULL : std_logic; + SIGNAL DBG_DF_WR_EN : std_logic; + SIGNAL DBG_DF_RD_EN : std_logic; + SIGNAL DBG_ALL_CTR : std_logic_vector(4 downto 0); + SIGNAL DBG_SUB_CTR : std_logic_vector(4 downto 0); + SIGNAL DBG_MY_CTR : std_logic_vector(1 downto 0); + SIGNAL DBG_BYTES_LOADED : std_logic_vector(15 downto 0); + SIGNAL DBG_SIZE_LEFT : std_logic_vector(31 downto 0); + SIGNAL DBG_SUB_SIZE_TO_SAVE : std_logic_vector(31 downto 0); + SIGNAL DBG_SUB_SIZE_LOADED : std_logic_vector(31 downto 0); + SIGNAL DBG_SUB_BYTES_LOADED : std_logic_vector(31 downto 0); + SIGNAL DBG_QUEUE_SIZE : std_logic_vector(31 downto 0); + SIGNAL DBG_ACT_QUEUE_SIZE : std_logic_vector(31 downto 0); + SIGNAL DEBUG_OUT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: trb_net16_gbe_packet_constr PORT MAP( + RESET => RESET, + CLK => CLK, + PC_WR_EN_IN => PC_WR_EN_IN, + PC_DATA_IN => PC_DATA_IN, + PC_READY_OUT => PC_READY_OUT, + PC_START_OF_SUB_IN => PC_START_OF_SUB_IN, + PC_END_OF_DATA_IN => PC_END_OF_DATA_IN, + PC_SUB_SIZE_IN => PC_SUB_SIZE_IN, + PC_DECODING_IN => PC_DECODING_IN, + PC_EVENT_ID_IN => PC_EVENT_ID_IN, + PC_TRIG_NR_IN => PC_TRIG_NR_IN, + PC_QUEUE_DEC_IN => PC_QUEUE_DEC_IN, + PC_MAX_FRAME_SIZE_IN => PC_MAX_FRAME_SIZE_IN, + FC_WR_EN_OUT => FC_WR_EN_OUT, + FC_DATA_OUT => FC_DATA_OUT, + FC_H_READY_IN => FC_H_READY_IN, + FC_READY_IN => FC_READY_IN, + FC_IP_SIZE_OUT => FC_IP_SIZE_OUT, + FC_UDP_SIZE_OUT => FC_UDP_SIZE_OUT, + FC_IDENT_OUT => FC_IDENT_OUT, + FC_FLAGS_OFFSET_OUT => FC_FLAGS_OFFSET_OUT, + FC_SOD_OUT => FC_SOD_OUT, + FC_EOD_OUT => FC_EOD_OUT, + BSM_CONSTR_OUT => BSM_CONSTR_OUT, + BSM_LOAD_OUT => BSM_LOAD_OUT, + BSM_SAVE_OUT => BSM_SAVE_OUT, + DBG_SHF_EMPTY => DBG_SHF_EMPTY, + DBG_SHF_FULL => DBG_SHF_FULL, + DBG_SHF_WR_EN => DBG_SHF_WR_EN, + DBG_SHF_RD_EN => DBG_SHF_RD_EN, + DBG_DF_EMPTY => DBG_DF_EMPTY, + DBG_DF_FULL => DBG_DF_FULL, + DBG_DF_WR_EN => DBG_DF_WR_EN, + DBG_DF_RD_EN => DBG_DF_RD_EN, + DBG_ALL_CTR => DBG_ALL_CTR, + DBG_SUB_CTR => DBG_SUB_CTR, + DBG_MY_CTR => DBG_MY_CTR, + DBG_BYTES_LOADED => DBG_BYTES_LOADED, + DBG_SIZE_LEFT => DBG_SIZE_LEFT, + DBG_SUB_SIZE_TO_SAVE => DBG_SUB_SIZE_TO_SAVE, + DBG_SUB_SIZE_LOADED => DBG_SUB_SIZE_LOADED, + DBG_SUB_BYTES_LOADED => DBG_SUB_BYTES_LOADED, + DBG_QUEUE_SIZE => DBG_QUEUE_SIZE, + DBG_ACT_QUEUE_SIZE => DBG_ACT_QUEUE_SIZE, + DEBUG_OUT => DEBUG_OUT + ); + +CLK_GEN: process +begin + clk <= '1'; wait for 5.0 ns; + clk <= '0'; wait for 5.0 ns; +end process CLK_GEN; + +THE_TESTBENCH: process +variable test_data_len : integer range 0 to 65535 := 1; +variable test_loop_len : integer range 0 to 65535 := 0; +variable test_evt_len : unsigned(15 downto 0) := x"0000"; +variable test_evt_len_vec : std_logic_vector(15 downto 0); +variable test_sub_len : unsigned(15 downto 0) := x"0000"; +variable test_sub_len_vec : std_logic_vector(15 downto 0); +variable test_data : unsigned(15 downto 0) := x"ffff"; +variable test_data_vec : std_logic_vector(15 downto 0); + +variable trigger_counter : unsigned(15 downto 0) := x"4710"; +variable trigger_loop : integer range 0 to 65535 := 15; +begin + -- Set up signals + reset <= '0'; + pc_wr_en_in <= '0'; + pc_data_in <= x"00"; + pc_start_of_sub_in <= '0'; + pc_end_of_data_in <= '0'; + pc_sub_size_in <= x"0000_0000"; + pc_trig_nr_in <= x"0000_0000"; + pc_decoding_in <= x"0002_0001"; -- static + pc_event_id_in <= x"0000_00ca"; -- static + pc_queue_dec_in <= x"0003_0062"; -- static + pc_max_frame_size_in <= x"0578"; -- static + fc_h_ready_in <= '0'; + fc_ready_in <= '0'; + wait until rising_edge(clk); + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + wait until rising_edge(clk); + wait for 200 ns; + wait until rising_edge(clk); + + -- Tests may start now + +------------------------------------------------------------------------------- +-- Loop the transmissions +------------------------------------------------------------------------------- + trigger_counter := x"4710"; + trigger_loop := 0; + + test_data_len := 14; + + MY_TRIGGER_LOOP: for J in 0 to trigger_loop loop + + -- calculate the needed variables + test_loop_len := 2*(test_data_len - 1) + 1; + test_evt_len := to_unsigned( test_data_len, 16 ); + test_evt_len_vec := std_logic_vector(test_evt_len); + test_sub_len := test_evt_len + 1; + test_sub_len_vec := std_logic_vector(test_sub_len); + + -- start of subevent marker + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_trig_nr_in <= x"0000" & std_logic_vector(trigger_counter); + pc_sub_size_in <= b"0000_0000_0000_00" & test_sub_len_vec & b"00"; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_start_of_sub_in <= '1'; + wait until rising_edge(clk); + pc_start_of_sub_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_data_in <= test_evt_len_vec(15 downto 8); + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_data_in <= test_evt_len_vec(7 downto 0); + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_wr_en_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + pc_data_in <= x"ff"; -- source address high byte + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_data_in <= x"22"; -- source address low byte + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_wr_en_in <= '0'; + wait until rising_edge(clk); + wait until rising_edge(clk); + + test_data := x"ffff"; + MY_DATA_LOOP: for J in 0 to test_loop_len loop + test_data := test_data + 1; + test_data_vec := std_logic_vector(test_data); + wait until rising_edge(clk); + pc_data_in <= test_data_vec(15 downto 8); + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_data_in <= test_data_vec(7 downto 0); + pc_wr_en_in <= '1'; + wait until rising_edge(clk); + pc_wr_en_in <= '0'; +-- wait until rising_edge(clk); +-- wait until rising_edge(clk); + end loop MY_DATA_LOOP; + + -- end of subevent marker +-- wait until rising_edge(clk); + pc_end_of_data_in <= '1'; + wait until rising_edge(clk); + pc_end_of_data_in <= '0'; + pc_sub_size_in <= x"0000_0000"; + pc_trig_nr_in <= x"0000_0000"; + wait until rising_edge(clk); + wait until rising_edge(clk); + + trigger_loop := trigger_loop + 1; + trigger_counter := trigger_counter + 1; + + wait for 500 ns; + wait until rising_edge(clk); + end loop MY_TRIGGER_LOOP; + +-- wait for 8 us; +------------------------------------------------------------------------------- +-- end of loop +------------------------------------------------------------------------------- + + wait until rising_edge(clk); + fc_ready_in <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + fc_h_ready_in <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + wait until rising_edge(clk); + + -- Stay a while... stay forever!!!Muahahah!!! + wait; + +end process THE_TESTBENCH; + +END; \ No newline at end of file diff --git a/gbe_ecp2m/tb_slv_mac_memory.vhd b/gbe_ecp2m/tb_slv_mac_memory.vhd new file mode 100755 index 0000000..00293c3 --- /dev/null +++ b/gbe_ecp2m/tb_slv_mac_memory.vhd @@ -0,0 +1,114 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +ENTITY testbench IS +END testbench; + +ARCHITECTURE behavior OF testbench IS + + COMPONENT slv_mac_memory + PORT( + CLK : IN std_logic; + RESET : IN std_logic; + BUSY_IN : IN std_logic; + SLV_ADDR_IN : IN std_logic_vector(7 downto 0); + SLV_READ_IN : IN std_logic; + SLV_WRITE_IN : IN std_logic; + SLV_DATA_IN : IN std_logic_vector(31 downto 0); + MEM_CLK_IN : IN std_logic; + MEM_ADDR_IN : IN std_logic_vector(7 downto 0); + SLV_BUSY_OUT : OUT std_logic; + SLV_ACK_OUT : OUT std_logic; + SLV_DATA_OUT : OUT std_logic_vector(31 downto 0); + MEM_DATA_OUT : OUT std_logic_vector(31 downto 0); + STAT : OUT std_logic_vector(31 downto 0) + ); + END COMPONENT; + + SIGNAL CLK : std_logic; + SIGNAL RESET : std_logic; + SIGNAL BUSY_IN : std_logic; + SIGNAL SLV_ADDR_IN : std_logic_vector(7 downto 0); + SIGNAL SLV_READ_IN : std_logic; + SIGNAL SLV_WRITE_IN : std_logic; + SIGNAL SLV_BUSY_OUT : std_logic; + SIGNAL SLV_ACK_OUT : std_logic; + SIGNAL SLV_DATA_IN : std_logic_vector(31 downto 0); + SIGNAL SLV_DATA_OUT : std_logic_vector(31 downto 0); + SIGNAL MEM_CLK_IN : std_logic; + SIGNAL MEM_ADDR_IN : std_logic_vector(7 downto 0); + SIGNAL MEM_DATA_OUT : std_logic_vector(31 downto 0); + SIGNAL STAT : std_logic_vector(31 downto 0); + +BEGIN + +-- Please check and add your generic clause manually + uut: slv_mac_memory PORT MAP( + CLK => CLK, + RESET => RESET, + BUSY_IN => BUSY_IN, + SLV_ADDR_IN => SLV_ADDR_IN, + SLV_READ_IN => SLV_READ_IN, + SLV_WRITE_IN => SLV_WRITE_IN, + SLV_BUSY_OUT => SLV_BUSY_OUT, + SLV_ACK_OUT => SLV_ACK_OUT, + SLV_DATA_IN => SLV_DATA_IN, + SLV_DATA_OUT => SLV_DATA_OUT, + MEM_CLK_IN => MEM_CLK_IN, + MEM_ADDR_IN => MEM_ADDR_IN, + MEM_DATA_OUT => MEM_DATA_OUT, + STAT => STAT + ); + +CLK_GEN_PROC: process +begin + clk <= '0'; mem_clk_in <= '0'; wait for 5.0 ns; + clk <= '1'; mem_clk_in <= '1'; wait for 5.0 ns; +end process CLK_GEN_PROC; + +THE_TESTBENCH: process +begin + -- Setup signals + reset <= '0'; + busy_in <= '0'; + slv_addr_in <= x"00"; + slv_read_in <= '0'; + slv_write_in <= '0'; + slv_data_in <= x"dead_beef"; + mem_addr_in <= x"f0"; + wait until rising_edge(clk); + + -- Reset the whole stuff + wait until rising_edge(clk); + reset <= '1'; + wait until rising_edge(clk); + wait until rising_edge(clk); + reset <= '0'; + wait until rising_edge(clk); + + -- Tests may start now + wait until rising_edge(clk); + mem_addr_in <= x"00"; + wait until rising_edge(clk); + mem_addr_in <= x"01"; + wait until rising_edge(clk); + mem_addr_in <= x"02"; + wait until rising_edge(clk); + mem_addr_in <= x"03"; + wait until rising_edge(clk); + mem_addr_in <= x"04"; + wait until rising_edge(clk); + mem_addr_in <= x"05"; + wait until rising_edge(clk); + mem_addr_in <= x"06"; + wait until rising_edge(clk); + mem_addr_in <= x"07"; + wait until rising_edge(clk); + mem_addr_in <= x"08"; + + -- Stay a while... stay forever!!! Muahahaha!!!!! + wait; +end process THE_TESTBENCH; + +END; diff --git a/gbe_ecp2m/trb_net16_gbe_buf.vhd b/gbe_ecp2m/trb_net16_gbe_buf.vhd new file mode 100755 index 0000000..5011959 --- /dev/null +++ b/gbe_ecp2m/trb_net16_gbe_buf.vhd @@ -0,0 +1,1268 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; +use work.trb_net_std.all; +use work.trb_net_components.all; +use work.trb_net16_hub_func.all; +use work.version.all; + +entity trb_net16_gbe_buf is +generic( + DO_SIMULATION : integer range 0 to 1 := 1 +); +port( + CLK : in std_logic; + TEST_CLK : in std_logic; -- only for simulation! + RESET : in std_logic; + GSR_N : in std_logic; + -- Debug + STAGE_STAT_REGS_OUT : out std_logic_vector(31 downto 0); + STAGE_CTRL_REGS_IN : in std_logic_vector(31 downto 0); + -- configuration interface + IP_CFG_START_IN : in std_logic; + IP_CFG_BANK_SEL_IN : in std_logic_vector(3 downto 0); + IP_CFG_DONE_OUT : out std_logic; + IP_CFG_MEM_ADDR_OUT : out std_logic_vector(7 downto 0); + IP_CFG_MEM_DATA_IN : in std_logic_vector(31 downto 0); + IP_CFG_MEM_CLK_OUT : out std_logic; + MR_RESET_IN : in std_logic; + MR_MODE_IN : in std_logic; + MR_RESTART_IN : in std_logic; + -- gk 29.03.10 + SLV_ADDR_IN : in std_logic_vector(7 downto 0); + SLV_READ_IN : in std_logic; + SLV_WRITE_IN : in std_logic; + SLV_BUSY_OUT : out std_logic; + SLV_ACK_OUT : out std_logic; + SLV_DATA_IN : in std_logic_vector(31 downto 0); + SLV_DATA_OUT : out std_logic_vector(31 downto 0); + -- CTS interface + CTS_NUMBER_IN : in std_logic_vector (15 downto 0); + CTS_CODE_IN : in std_logic_vector (7 downto 0); + CTS_INFORMATION_IN : in std_logic_vector (7 downto 0); + CTS_READOUT_TYPE_IN : in std_logic_vector (3 downto 0); + CTS_START_READOUT_IN : in std_logic; + CTS_DATA_OUT : out std_logic_vector (31 downto 0); + CTS_DATAREADY_OUT : out std_logic; + CTS_READOUT_FINISHED_OUT : out std_logic; + CTS_READ_IN : in std_logic; + CTS_LENGTH_OUT : out std_logic_vector (15 downto 0); + CTS_ERROR_PATTERN_OUT : out std_logic_vector (31 downto 0); + -- Data payload interface + FEE_DATA_IN : in std_logic_vector (15 downto 0); + FEE_DATAREADY_IN : in std_logic; + FEE_READ_OUT : out std_logic; + FEE_STATUS_BITS_IN : in std_logic_vector (31 downto 0); + FEE_BUSY_IN : in std_logic; + --SFP Connection + SFP_RXD_P_IN : in std_logic; + SFP_RXD_N_IN : in std_logic; + SFP_TXD_P_OUT : out std_logic; + SFP_TXD_N_OUT : out std_logic; + SFP_REFCLK_P_IN : in std_logic; + SFP_REFCLK_N_IN : in std_logic; + SFP_PRSNT_N_IN : in std_logic; -- SFP Present ('0' = SFP in place, '1' = no SFP mounted) + SFP_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal) + SFP_TXDIS_OUT : out std_logic; -- SFP disable + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- PacketConstructor interface + IG_CTS_CTR_TST : out std_logic_vector(2 downto 0); + IG_REM_CTR_TST : out std_logic_vector(3 downto 0); + IG_BSM_LOAD_TST : out std_logic_vector(3 downto 0); + IG_BSM_SAVE_TST : out std_logic_vector(3 downto 0); + IG_DATA_TST : out std_logic_vector(15 downto 0); + IG_WCNT_TST : out std_logic_vector(15 downto 0); + IG_RCNT_TST : out std_logic_vector(16 downto 0); + IG_RD_EN_TST : out std_logic; + IG_WR_EN_TST : out std_logic; + IG_EMPTY_TST : out std_logic; + IG_AEMPTY_TST : out std_logic; + IG_FULL_TST : out std_logic; + IG_AFULL_TST : out std_logic; + PC_WR_EN_TST : out std_logic; + PC_DATA_TST : out std_logic_vector (7 downto 0); + PC_READY_TST : out std_logic; + PC_START_OF_SUB_TST : out std_logic; + PC_END_OF_DATA_TST : out std_logic; + PC_SUB_SIZE_TST : out std_logic_vector(31 downto 0); + PC_TRIG_NR_TST : out std_logic_vector(31 downto 0); + PC_PADDING_TST : out std_logic; + PC_DECODING_TST : out std_logic_vector(31 downto 0); + PC_EVENT_ID_TST : out std_logic_vector(31 downto 0); + PC_QUEUE_DEC_TST : out std_logic_vector(31 downto 0); + PC_BSM_CONSTR_TST : out std_logic_vector(3 downto 0); + PC_BSM_LOAD_TST : out std_logic_vector(3 downto 0); + PC_BSM_SAVE_TST : out std_logic_vector(3 downto 0); + PC_SHF_EMPTY_TST : out std_logic; + PC_SHF_FULL_TST : out std_logic; + PC_SHF_WR_EN_TST : out std_logic; + PC_SHF_RD_EN_TST : out std_logic; + PC_SHF_Q_TST : out std_logic_vector(7 downto 0); + PC_DF_EMPTY_TST : out std_logic; + PC_DF_FULL_TST : out std_logic; + PC_DF_WR_EN_TST : out std_logic; + PC_DF_RD_EN_TST : out std_logic; + PC_DF_Q_TST : out std_logic_vector(7 downto 0); + PC_ALL_CTR_TST : out std_logic_vector(4 downto 0); + PC_SUB_CTR_TST : out std_logic_vector(4 downto 0); + PC_BYTES_LOADED_TST : out std_logic_vector(15 downto 0); + PC_SIZE_LEFT_TST : out std_logic_vector(31 downto 0); + PC_SUB_SIZE_TO_SAVE_TST : out std_logic_vector(31 downto 0); + PC_SUB_SIZE_LOADED_TST : out std_logic_vector(31 downto 0); + PC_SUB_BYTES_LOADED_TST : out std_logic_vector(31 downto 0); + PC_QUEUE_SIZE_TST : out std_logic_vector(31 downto 0); + PC_ACT_QUEUE_SIZE_TST : out std_logic_vector(31 downto 0); + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- FrameConstructor interface + FC_WR_EN_TST : out std_logic; + FC_DATA_TST : out std_logic_vector(7 downto 0); + FC_H_READY_TST : out std_logic; + FC_READY_TST : out std_logic; + FC_IP_SIZE_TST : out std_logic_vector(15 downto 0); + FC_UDP_SIZE_TST : out std_logic_vector(15 downto 0); + FC_IDENT_TST : out std_logic_vector(15 downto 0); + FC_FLAGS_OFFSET_TST : out std_logic_vector(15 downto 0); + FC_SOD_TST : out std_logic; + FC_EOD_TST : out std_logic; + FC_BSM_CONSTR_TST : out std_logic_vector(7 downto 0); + FC_BSM_TRANS_TST : out std_logic_vector(3 downto 0); + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- FrameTransmitter interface + FT_DATA_TST : out std_logic_vector(8 downto 0); + FT_TX_EMPTY_TST : out std_logic; + FT_START_OF_PACKET_TST : out std_logic; + FT_BSM_INIT_TST : out std_logic_vector(3 downto 0); + FT_BSM_MAC_TST : out std_logic_vector(3 downto 0); + FT_BSM_TRANS_TST : out std_logic_vector(3 downto 0); + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- MAC interface + MAC_HADDR_TST : out std_logic_vector(7 downto 0); + MAC_HDATA_TST : out std_logic_vector(7 downto 0); + MAC_HCS_TST : out std_logic; + MAC_HWRITE_TST : out std_logic; + MAC_HREAD_TST : out std_logic; + MAC_HREADY_TST : out std_logic; + MAC_HDATA_EN_TST : out std_logic; + MAC_FIFOAVAIL_TST : out std_logic; + MAC_FIFOEOF_TST : out std_logic; + MAC_FIFOEMPTY_TST : out std_logic; + MAC_TX_READ_TST : out std_logic; + MAC_TX_DONE_TST : out std_logic; + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- pcs and serdes + PCS_AN_LP_ABILITY_TST : out std_logic_vector(15 downto 0); + PCS_AN_COMPLETE_TST : out std_logic; + PCS_AN_PAGE_RX_TST : out std_logic; + ------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------- + -- debug ports + ANALYZER_DEBUG_OUT : out std_logic_vector(63 downto 0) +); +end entity trb_net16_gbe_buf; + +architecture trb_net16_gbe_buf of trb_net16_gbe_buf is + +-- Placer Directives +attribute HGROUP : string; +-- for whole architecture +attribute HGROUP of trb_net16_gbe_buf : architecture is "GBE_BUF_group"; + +-- Interface between IPU channel and packet constructor +component trb_net16_ipu2gbe is +port( + CLK : in std_logic; + RESET : in std_logic; + --Event information coming from CTS + CTS_NUMBER_IN : in std_logic_vector (15 downto 0); + CTS_CODE_IN : in std_logic_vector (7 downto 0); + CTS_INFORMATION_IN : in std_logic_vector (7 downto 0); + CTS_READOUT_TYPE_IN : in std_logic_vector (3 downto 0); + CTS_START_READOUT_IN : in std_logic; + --Information sent to CTS + --status data, equipped with DHDR + CTS_DATA_OUT : out std_logic_vector (31 downto 0); + CTS_DATAREADY_OUT : out std_logic; + CTS_READOUT_FINISHED_OUT : out std_logic; --no more data, end transfer, send TRM + CTS_READ_IN : in std_logic; + CTS_LENGTH_OUT : out std_logic_vector (15 downto 0); + CTS_ERROR_PATTERN_OUT : out std_logic_vector (31 downto 0); + -- Data from Frontends + FEE_DATA_IN : in std_logic_vector (15 downto 0); + FEE_DATAREADY_IN : in std_logic; + FEE_READ_OUT : out std_logic; --must be high when idle, otherwise you will never get a dataready + FEE_STATUS_BITS_IN : in std_logic_vector (31 downto 0); + FEE_BUSY_IN : in std_logic; + -- slow control interface + START_CONFIG_OUT : out std_logic; -- reconfigure MACs/IPs/ports/packet size + BANK_SELECT_OUT : out std_logic_vector(3 downto 0); -- configuration page address + CONFIG_DONE_IN : in std_logic; -- configuration finished + DATA_GBE_ENABLE_IN : in std_logic; -- IPU data is forwarded to GbE + DATA_IPU_ENABLE_IN : in std_logic; -- IPU data is forwarded to CTS / TRBnet + MULTI_EVT_ENABLE_IN : in std_logic; -- enable multi event packets + MAX_MESSAGE_SIZE_IN : in std_logic_vector(31 downto 0); -- the maximum size of one HadesQueue -- gk 08.04.10 + -- PacketConstructor interface + PC_WR_EN_OUT : out std_logic; + PC_DATA_OUT : out std_logic_vector (7 downto 0); + PC_READY_IN : in std_logic; + PC_SOS_OUT : out std_logic; + PC_EOD_OUT : out std_logic; + PC_SUB_SIZE_OUT : out std_logic_vector(31 downto 0); + PC_TRIG_NR_OUT : out std_logic_vector(31 downto 0); + PC_PADDING_OUT : out std_logic; + -- Debug + BSM_SAVE_OUT : out std_logic_vector(3 downto 0); + BSM_LOAD_OUT : out std_logic_vector(3 downto 0); + DBG_CTS_CTR_OUT : out std_logic_vector(2 downto 0); + DBG_REM_CTR_OUT : out std_logic_vector(3 downto 0); + DBG_SF_WCNT_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RCNT_OUT : out std_logic_vector(16 downto 0); + DBG_SF_DATA_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RD_EN_OUT : out std_logic; + DBG_SF_WR_EN_OUT : out std_logic; + DBG_SF_EMPTY_OUT : out std_logic; + DBG_SF_AEMPTY_OUT : out std_logic; + DBG_SF_FULL_OUT : out std_logic; + DBG_SF_AFULL_OUT : out std_logic; + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end component; + +component ip_configurator is +port( + CLK : in std_logic; + RESET : in std_logic; + -- configuration interface + START_CONFIG_IN : in std_logic; -- start configuration run + BANK_SELECT_IN : in std_logic_vector(3 downto 0); -- selects config bank + CONFIG_DONE_OUT : out std_logic; -- configuration run ended, new values can be used + MEM_ADDR_OUT : out std_logic_vector(7 downto 0); -- address for + MEM_DATA_IN : in std_logic_vector(31 downto 0); -- data from IP memory + MEM_CLK_OUT : out std_logic; -- clock for BlockRAM + -- information for IP cores + DEST_MAC_OUT : out std_logic_vector(47 downto 0); -- destination MAC address + DEST_IP_OUT : out std_logic_vector(31 downto 0); -- destination IP address + DEST_UDP_OUT : out std_logic_vector(15 downto 0); -- destination port + SRC_MAC_OUT : out std_logic_vector(47 downto 0); -- source MAC address + SRC_IP_OUT : out std_logic_vector(31 downto 0); -- source IP address + SRC_UDP_OUT : out std_logic_vector(15 downto 0); -- source port + MTU_OUT : out std_logic_vector(15 downto 0); -- MTU size (max frame size) + -- Debug + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end component; + +-- PacketConstructor for UDP packet +component trb_net16_gbe_packet_constr is +port ( + -- ports for user logic + RESET : in std_logic; + CLK : in std_logic; + PC_WR_EN_IN : in std_logic; + PC_DATA_IN : in std_logic_vector(7 downto 0); + PC_READY_OUT : out std_logic; + PC_START_OF_SUB_IN : in std_logic; + PC_END_OF_DATA_IN : in std_logic; + -- queue and subevent layer headers + PC_SUB_SIZE_IN : in std_logic_vector(31 downto 0); + PC_PADDING_IN : in std_logic; -- gk 29.03.10 + PC_DECODING_IN : in std_logic_vector(31 downto 0); + PC_EVENT_ID_IN : in std_logic_vector(31 downto 0); + PC_TRIG_NR_IN : in std_logic_vector(31 downto 0); + PC_QUEUE_DEC_IN : in std_logic_vector(31 downto 0); + PC_MAX_FRAME_SIZE_IN : in std_logic_vector(15 downto 0); + -- NEW PORTS + FC_WR_EN_OUT : out std_logic; + FC_DATA_OUT : out std_logic_vector(7 downto 0); + FC_H_READY_IN : in std_logic; + FC_READY_IN : in std_logic; + FC_IP_SIZE_OUT : out std_logic_vector(15 downto 0); + FC_UDP_SIZE_OUT : out std_logic_vector(15 downto 0); + FC_IDENT_OUT : out std_logic_vector(15 downto 0); + FC_FLAGS_OFFSET_OUT : out std_logic_vector(15 downto 0); + FC_SOD_OUT : out std_logic; + FC_EOD_OUT : out std_logic; + -- debug ports + BSM_CONSTR_OUT : out std_logic_vector(3 downto 0); + BSM_LOAD_OUT : out std_logic_vector(3 downto 0); + BSM_SAVE_OUT : out std_logic_vector(3 downto 0); + DBG_SHF_EMPTY : out std_logic; + DBG_SHF_FULL : out std_logic; + DBG_SHF_WR_EN : out std_logic; + DBG_SHF_RD_EN : out std_logic; + DBG_SHF_Q : out std_logic_vector(7 downto 0); + DBG_DF_EMPTY : out std_logic; + DBG_DF_FULL : out std_logic; + DBG_DF_WR_EN : out std_logic; + DBG_DF_RD_EN : out std_logic; + DBG_DF_Q : out std_logic_vector(7 downto 0); + DBG_ALL_CTR : out std_logic_vector(4 downto 0); + DBG_SUB_CTR : out std_logic_vector(4 downto 0); + DBG_MY_CTR : out std_logic_vector(1 downto 0); + DBG_BYTES_LOADED : out std_logic_vector(15 downto 0); + DBG_SIZE_LEFT : out std_logic_vector(31 downto 0); + DBG_SUB_SIZE_TO_SAVE : out std_logic_vector(31 downto 0); + DBG_SUB_SIZE_LOADED : out std_logic_vector(31 downto 0); + DBG_SUB_BYTES_LOADED : out std_logic_vector(31 downto 0); + DBG_QUEUE_SIZE : out std_logic_vector(31 downto 0); + DBG_ACT_QUEUE_SIZE : out std_logic_vector(31 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end component; + +-- FrameConstructor for IP packets +component trb_net16_gbe_frame_constr is +port ( + -- ports for user logic + CLK : in std_logic; + RESET : in std_logic; + -- + WR_EN_IN : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + START_OF_DATA_IN : in std_logic; + END_OF_DATA_IN : in std_logic; + IP_F_SIZE_IN : in std_logic_vector(15 downto 0); + UDP_P_SIZE_IN : in std_logic_vector(15 downto 0); -- needed for fragmentation + HEADERS_READY_OUT : out std_logic; + READY_OUT : out std_logic; + DEST_MAC_ADDRESS_IN : in std_logic_vector(47 downto 0); + DEST_IP_ADDRESS_IN : in std_logic_vector(31 downto 0); + DEST_UDP_PORT_IN : in std_logic_vector(15 downto 0); + SRC_MAC_ADDRESS_IN : in std_logic_vector(47 downto 0); + SRC_IP_ADDRESS_IN : in std_logic_vector(31 downto 0); + SRC_UDP_PORT_IN : in std_logic_vector(15 downto 0); + FRAME_TYPE_IN : in std_logic_vector(15 downto 0); + IHL_VERSION_IN : in std_logic_vector(7 downto 0); + TOS_IN : in std_logic_vector(7 downto 0); + IDENTIFICATION_IN : in std_logic_vector(15 downto 0); + FLAGS_OFFSET_IN : in std_logic_vector(15 downto 0); + TTL_IN : in std_logic_vector(7 downto 0); + PROTOCOL_IN : in std_logic_vector(7 downto 0); + -- ports for packetTransmitter + RD_CLK : in std_logic; + FT_DATA_OUT : out std_logic_vector(8 downto 0); + FT_TX_EMPTY_OUT : out std_logic; + FT_TX_RD_EN_IN : in std_logic; + FT_START_OF_PACKET_OUT : out std_logic; + FT_TX_DONE_IN : in std_logic; + -- debug ports + BSM_CONSTR_OUT : out std_logic_vector(7 downto 0); + BSM_TRANS_OUT : out std_logic_vector(3 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end component; + +component trb_net16_gbe_frame_trans is +port ( + CLK : in std_logic; + RESET : in std_logic; + TX_MAC_CLK : in std_logic; + TX_EMPTY_IN : in std_logic; + START_OF_PACKET_IN : in std_logic; + DATA_ENDFLAG_IN : in std_logic; -- (8) is end flag, rest is only for TSMAC + -- NEW PORTS + HADDR_OUT : out std_logic_vector(7 downto 0); + HDATA_OUT : out std_logic_vector(7 downto 0); + HCS_OUT : out std_logic; + HWRITE_OUT : out std_logic; + HREAD_OUT : out std_logic; + HREADY_IN : in std_logic; + HDATA_EN_IN : in std_logic; + TX_FIFOAVAIL_OUT : out std_logic; + TX_FIFOEOF_OUT : out std_logic; + TX_FIFOEMPTY_OUT : out std_logic; + TX_DONE_IN : in std_logic; + -- Debug + BSM_INIT_OUT : out std_logic_vector(3 downto 0); + BSM_MAC_OUT : out std_logic_vector(3 downto 0); + BSM_TRANS_OUT : out std_logic_vector(3 downto 0); + DBG_RD_DONE_OUT : out std_logic; + DBG_INIT_DONE_OUT : out std_logic; + DBG_ENABLED_OUT : out std_logic; + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end component; + +component tsmac3 +port( + --------------- clock and reset port declarations ------------------ + hclk : in std_logic; + txmac_clk : in std_logic; + rxmac_clk : in std_logic; + reset_n : in std_logic; + txmac_clk_en : in std_logic; + rxmac_clk_en : in std_logic; + ------------------- Input signals to the GMII ---------------- + rxd : in std_logic_vector(7 downto 0); + rx_dv : in std_logic; + rx_er : in std_logic; + col : in std_logic; + crs : in std_logic; + -------------------- Input signals to the CPU I/F ------------------- + haddr : in std_logic_vector(7 downto 0); + hdatain : in std_logic_vector(7 downto 0); + hcs_n : in std_logic; + hwrite_n : in std_logic; + hread_n : in std_logic; + ---------------- Input signals to the Tx MAC FIFO I/F --------------- + tx_fifodata : in std_logic_vector(7 downto 0); + tx_fifoavail : in std_logic; + tx_fifoeof : in std_logic; + tx_fifoempty : in std_logic; + tx_sndpaustim : in std_logic_vector(15 downto 0); + tx_sndpausreq : in std_logic; + tx_fifoctrl : in std_logic; + ---------------- Input signals to the Rx MAC FIFO I/F --------------- + rx_fifo_full : in std_logic; + ignore_pkt : in std_logic; + -------------------- Output signals from the GMII ----------------------- + txd : out std_logic_vector(7 downto 0); + tx_en : out std_logic; + tx_er : out std_logic; + -------------------- Output signals from the CPU I/F ------------------- + hdataout : out std_logic_vector(7 downto 0); + hdataout_en_n : out std_logic; + hready_n : out std_logic; + cpu_if_gbit_en : out std_logic; + ---------------- Output signals from the Tx MAC FIFO I/F --------------- + tx_macread : out std_logic; + tx_discfrm : out std_logic; + tx_staten : out std_logic; + tx_done : out std_logic; + tx_statvec : out std_logic_vector(30 downto 0); + ---------------- Output signals from the Rx MAC FIFO I/F --------------- + rx_fifo_error : out std_logic; + rx_stat_vector : out std_logic_vector(31 downto 0); + rx_dbout : out std_logic_vector(7 downto 0); + rx_write : out std_logic; + rx_stat_en : out std_logic; + rx_eof : out std_logic; + rx_error : out std_logic +); +end component; + +component mb_mac_sim is +port ( + -------------------------------------------------------------------------- + --------------- clock, reset, clock enable ------------------------------- + HCLK : in std_logic; + TX_MAC_CLK : in std_logic; + RX_MAC_CLK : in std_logic; + RESET_N : in std_logic; + TXMAC_CLK_EN : in std_logic; + RXMAC_CLK_EN : in std_logic; + -------------------------------------------------------------------------- + --------------- SGMII receive interface ---------------------------------- + RXD : in std_logic_vector(7 downto 0); + RX_DV : in std_logic; + RX_ER : in std_logic; + COL : in std_logic; + CRS : in std_logic; + -------------------------------------------------------------------------- + --------------- SGMII transmit interface --------------------------------- + TXD : out std_logic_vector(7 downto 0); + TX_EN : out std_logic; + TX_ER : out std_logic; + -------------------------------------------------------------------------- + --------------- CPU configuration interface ------------------------------ + HADDR : in std_logic_vector(7 downto 0); + HDATAIN : in std_logic_vector(7 downto 0); + HCS_N : in std_logic; + HWRITE_N : in std_logic; + HREAD_N : in std_logic; + HDATAOUT : out std_logic_vector(7 downto 0); + HDATAOUT_EN_N : out std_logic; + HREADY_N : out std_logic; + CPU_IF_GBIT_EN : out std_logic; + -------------------------------------------------------------------------- + --------------- Transmit FIFO interface ---------------------------------- + TX_FIFODATA : in std_logic_vector(7 downto 0); + TX_FIFOAVAIL : in std_logic; + TX_FIFOEOF : in std_logic; + TX_FIFOEMPTY : in std_logic; + TX_MACREAD : out std_logic; + TX_DONE : out std_logic; + TX_SNDPAUSTIM : in std_logic_vector(15 downto 0); + TX_SNDPAUSREQ : in std_logic; + TX_FIFOCTRL : in std_logic; + TX_DISCFRM : out std_logic; + TX_STATEN : out std_logic; + TX_STATVEC : out std_logic_vector(30 downto 0); + -------------------------------------------------------------------------- + --------------- Receive FIFO interface ----------------------------------- + RX_DBOUT : out std_logic_vector(7 downto 0); + RX_FIFO_FULL : in std_logic; + IGNORE_PKT : in std_logic; + RX_FIFO_ERROR : out std_logic; + RX_STAT_VECTOR : out std_logic_vector(31 downto 0); + RX_STAT_EN : out std_logic; + RX_WRITE : out std_logic; + RX_EOF : out std_logic; + RX_ERROR : out std_logic +); +end component; + +component trb_net16_med_ecp_sfp_gbe_8b is +port( + RESET : in std_logic; + GSR_N : in std_logic; + CLK_125_OUT : out std_logic; + CLK_RX_OUT : out std_logic; + CLK_TX_OUT : out std_logic; + --SGMII connection to frame transmitter (tsmac) + FT_TX_CLK_EN_OUT : out std_logic; + FT_RX_CLK_EN_OUT : out std_logic; + FT_COL_OUT : out std_logic; + FT_CRS_OUT : out std_logic; + FT_TXD_IN : in std_logic_vector(7 downto 0); + FT_TX_EN_IN : in std_logic; + FT_TX_ER_IN : in std_logic; + --SFP Connection + SD_RXD_P_IN : in std_logic; + SD_RXD_N_IN : in std_logic; + SD_TXD_P_OUT : out std_logic; + SD_TXD_N_OUT : out std_logic; + SD_REFCLK_P_IN : in std_logic; + SD_REFCLK_N_IN : in std_logic; + SD_PRSNT_N_IN : in std_logic; -- SFP Present ('0' = SFP in place, '1' = no SFP mounted) + SD_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal) + SD_TXDIS_OUT : out std_logic; -- SFP disable + -- Autonegotiation stuff + MR_RESET_IN : in std_logic; + MR_MODE_IN : in std_logic; + MR_ADV_ABILITY_IN : in std_logic_vector(15 downto 0); + MR_AN_LP_ABILITY_OUT : out std_logic_vector(15 downto 0); + MR_AN_PAGE_RX_OUT : out std_logic; + MR_AN_COMPLETE_OUT : out std_logic; + MR_AN_ENABLE_IN : in std_logic; + MR_RESTART_AN_IN : in std_logic; + -- Status and control port + STAT_OP : out std_logic_vector (15 downto 0); + CTRL_OP : in std_logic_vector (15 downto 0); + STAT_DEBUG : out std_logic_vector (63 downto 0); + CTRL_DEBUG : in std_logic_vector (63 downto 0) +); +end component; + +component slv_mac_memory is +port( + CLK : in std_logic; + RESET : in std_logic; + BUSY_IN : in std_logic; + -- Slave bus + SLV_ADDR_IN : in std_logic_vector(7 downto 0); + SLV_READ_IN : in std_logic; + SLV_WRITE_IN : in std_logic; + SLV_BUSY_OUT : out std_logic; + SLV_ACK_OUT : out std_logic; + SLV_DATA_IN : in std_logic_vector(31 downto 0); + SLV_DATA_OUT : out std_logic_vector(31 downto 0); + -- I/O to the backend + MEM_CLK_IN : in std_logic; + MEM_ADDR_IN : in std_logic_vector(7 downto 0); + MEM_DATA_OUT : out std_logic_vector(31 downto 0); + -- Status lines + STAT : out std_logic_vector(31 downto 0) -- DEBUG +); +end component; + + +signal ig_bsm_save : std_logic_vector(3 downto 0); +signal ig_bsm_load : std_logic_vector(3 downto 0); +signal ig_cts_ctr : std_logic_vector(2 downto 0); +signal ig_rem_ctr : std_logic_vector(3 downto 0); +signal ig_debug : std_logic_vector(31 downto 0); +signal ig_data : std_logic_vector(15 downto 0); +signal ig_wcnt : std_logic_vector(15 downto 0); +signal ig_rcnt : std_logic_vector(16 downto 0); +signal ig_rd_en : std_logic; +signal ig_wr_en : std_logic; +signal ig_empty : std_logic; +signal ig_aempty : std_logic; +signal ig_full : std_logic; +signal ig_afull : std_logic; + +signal pc_wr_en : std_logic; +signal pc_data : std_logic_vector(7 downto 0); +signal pc_eod : std_logic; +signal pc_sos : std_logic; +signal pc_ready : std_logic; +signal pc_padding : std_logic; +signal pc_decoding : std_logic_vector(31 downto 0); +signal pc_event_id : std_logic_vector(31 downto 0); +signal pc_queue_dec : std_logic_vector(31 downto 0); +signal pc_max_frame_size : std_logic_vector(15 downto 0); +signal pc_bsm_constr : std_logic_vector(3 downto 0); +signal pc_bsm_load : std_logic_vector(3 downto 0); +signal pc_bsm_save : std_logic_vector(3 downto 0); +signal pc_shf_empty : std_logic; +signal pc_shf_full : std_logic; +signal pc_shf_wr_en : std_logic; +signal pc_shf_rd_en : std_logic; +signal pc_shf_q : std_logic_vector(7 downto 0); +signal pc_df_empty : std_logic; +signal pc_df_full : std_logic; +signal pc_df_wr_en : std_logic; +signal pc_df_rd_en : std_logic; +signal pc_df_q : std_logic_vector(7 downto 0); +signal pc_all_ctr : std_logic_vector(4 downto 0); +signal pc_sub_ctr : std_logic_vector(4 downto 0); +signal pc_bytes_loaded : std_logic_vector(15 downto 0); +signal pc_size_left : std_logic_vector(31 downto 0); +signal pc_sub_size_to_save : std_logic_vector(31 downto 0); +signal pc_sub_size_loaded : std_logic_vector(31 downto 0); +signal pc_sub_bytes_loaded : std_logic_vector(31 downto 0); +signal pc_queue_size : std_logic_vector(31 downto 0); +signal pc_act_queue_size : std_logic_vector(31 downto 0); + +signal fee_read : std_logic; +signal cts_readout_finished : std_logic; +signal cts_dataready : std_logic; +signal cts_length : std_logic_vector(15 downto 0); +signal cts_data : std_logic_vector(31 downto 0); -- DHDR of rest packet +signal cts_error_pattern : std_logic_vector(31 downto 0); + +signal pc_sub_size : std_logic_vector(31 downto 0); +signal pc_trig_nr : std_logic_vector(31 downto 0); + +signal fc_wr_en : std_logic; +signal fc_data : std_logic_vector(7 downto 0); +signal fc_ip_size : std_logic_vector(15 downto 0); +signal fc_udp_size : std_logic_vector(15 downto 0); +signal fc_ident : std_logic_vector(15 downto 0); +signal fc_flags_offset : std_logic_vector(15 downto 0); +signal fc_sod : std_logic; +signal fc_eod : std_logic; +signal fc_h_ready : std_logic; +signal fc_ready : std_logic; +signal fc_dest_mac : std_logic_vector(47 downto 0); +signal fc_dest_ip : std_logic_vector(31 downto 0); +signal fc_dest_udp : std_logic_vector(15 downto 0); +signal fc_src_mac : std_logic_vector(47 downto 0); +signal fc_src_ip : std_logic_vector(31 downto 0); +signal fc_src_udp : std_logic_vector(15 downto 0); +signal fc_type : std_logic_vector(15 downto 0); +signal fc_ihl_version : std_logic_vector(7 downto 0); +signal fc_tos : std_logic_vector(7 downto 0); +signal fc_ttl : std_logic_vector(7 downto 0); +signal fc_protocol : std_logic_vector(7 downto 0); +signal fc_bsm_constr : std_logic_vector(7 downto 0); +signal fc_bsm_trans : std_logic_vector(3 downto 0); + +signal ft_data : std_logic_vector(8 downto 0); +signal ft_tx_empty : std_logic; +signal ft_start_of_packet : std_logic; +signal ft_bsm_init : std_logic_vector(3 downto 0); +signal ft_bsm_mac : std_logic_vector(3 downto 0); +signal ft_bsm_trans : std_logic_vector(3 downto 0); + +signal mac_haddr : std_logic_vector(7 downto 0); +signal mac_hdataout : std_logic_vector(7 downto 0); +signal mac_hcs : std_logic; +signal mac_hwrite : std_logic; +signal mac_hread : std_logic; +signal mac_fifoavail : std_logic; +signal mac_fifoempty : std_logic; +signal mac_fifoeof : std_logic; +signal mac_hready : std_logic; +signal mac_hdata_en : std_logic; +signal mac_tx_done : std_logic; +signal mac_tx_read : std_logic; + +signal serdes_clk_125 : std_logic; +signal mac_tx_clk_en : std_logic; +signal mac_rx_clk_en : std_logic; +signal mac_col : std_logic; +signal mac_crs : std_logic; +signal pcs_txd : std_logic_vector(7 downto 0); +signal pcs_tx_en : std_logic; +signal pcs_tx_er : std_logic; +signal pcs_an_lp_ability : std_logic_vector(15 downto 0); +signal pcs_an_complete : std_logic; +signal pcs_an_page_rx : std_logic; + +signal pcs_stat_debug : std_logic_vector(63 downto 0); + +signal stage_stat_regs : std_logic_vector(31 downto 0); +signal stage_ctrl_regs : std_logic_vector(31 downto 0); + +signal analyzer_debug : std_logic_vector(63 downto 0); + +signal ip_cfg_start : std_logic; +signal ip_cfg_bank : std_logic_vector(3 downto 0); +signal ip_cfg_done : std_logic; + +signal ip_cfg_mem_addr : std_logic_vector(7 downto 0); +signal ip_cfg_mem_data : std_logic_vector(31 downto 0); +signal ip_cfg_mem_clk : std_logic; + +begin + +stage_ctrl_regs <= STAGE_CTRL_REGS_IN; + +-- PacketConstructor fixed magic values +pc_decoding <= x"00020001"; -- !!!! swap it!!!! +pc_event_id <= x"000000ca"; -- !!!! swap it!!!! +pc_queue_dec <= x"00030062"; -- !!!! swap it!!!! +-- FrameConstructor fixed magic values +fc_type <= x"0008"; +fc_ihl_version <= x"45"; +fc_tos <= x"10"; +fc_ttl <= x"ff"; +fc_protocol <= x"11"; + +-- IP configurator: allows IP config to change for each event builder +THE_IP_CONFIGURATOR: ip_configurator +port map( + CLK => CLK, + RESET => RESET, + -- configuration interface + START_CONFIG_IN => ip_cfg_start, --IP_CFG_START_IN, -- new -- gk 7.03.10 + BANK_SELECT_IN => ip_cfg_bank, --IP_CFG_BANK_SEL_IN, -- new -- gk 27.03.10 + CONFIG_DONE_OUT => ip_cfg_done, --IP_CFG_DONE_OUT, -- new -- gk 27.03.10 + MEM_ADDR_OUT => ip_cfg_mem_addr, --IP_CFG_MEM_ADDR_OUT, -- new -- gk 27.03.10 + MEM_DATA_IN => ip_cfg_mem_data, --IP_CFG_MEM_DATA_IN, -- new -- gk 27.03.10 + MEM_CLK_OUT => ip_cfg_mem_clk, --IP_CFG_MEM_CLK_OUT, -- new -- gk 27.03.10 + -- information for IP cores + DEST_MAC_OUT => fc_dest_mac, + DEST_IP_OUT => fc_dest_ip, + DEST_UDP_OUT => fc_dest_udp, + SRC_MAC_OUT => fc_src_mac, + SRC_IP_OUT => fc_src_ip, + SRC_UDP_OUT => fc_src_udp, + MTU_OUT => pc_max_frame_size, + -- Debug + DEBUG_OUT => open +); + +-- gk 27.03.01 +MB_IP_CONFIG: slv_mac_memory +port map( + CLK => CLK, -- clk_100, + RESET => RESET, --reset_i, + BUSY_IN => '0', + -- Slave bus + SLV_ADDR_IN => SLV_ADDR_IN, --x"00", --mb_ip_mem_addr(7 downto 0), + SLV_READ_IN => SLV_READ_IN, --'0', --mb_ip_mem_read, + SLV_WRITE_IN => SLV_WRITE_IN, --mb_ip_mem_write, + SLV_BUSY_OUT => SLV_BUSY_OUT, + SLV_ACK_OUT => SLV_ACK_OUT, --mb_ip_mem_ack, + SLV_DATA_IN => SLV_DATA_IN, --mb_ip_mem_data_wr, + SLV_DATA_OUT => SLV_DATA_OUT, --mb_ip_mem_data_rd, + -- I/O to the backend + MEM_CLK_IN => ip_cfg_mem_clk, + MEM_ADDR_IN => ip_cfg_mem_addr, + MEM_DATA_OUT => ip_cfg_mem_data, + -- Status lines + STAT => open +); + + +-- First stage: get data from IPU channel, buffer it and terminate the IPU transmission to CTS +THE_IPU_INTERFACE: trb_net16_ipu2gbe +port map( + CLK => CLK, + RESET => RESET, + --Event information coming from CTS + CTS_NUMBER_IN => CTS_NUMBER_IN, + CTS_CODE_IN => CTS_CODE_IN, + CTS_INFORMATION_IN => CTS_INFORMATION_IN, + CTS_READOUT_TYPE_IN => CTS_READOUT_TYPE_IN, + CTS_START_READOUT_IN => CTS_START_READOUT_IN, + --Information sent to CTS + --status data, equipped with DHDR + CTS_DATA_OUT => cts_data, + CTS_DATAREADY_OUT => cts_dataready, + CTS_READOUT_FINISHED_OUT => cts_readout_finished, + CTS_READ_IN => CTS_READ_IN, + CTS_LENGTH_OUT => cts_length, + CTS_ERROR_PATTERN_OUT => cts_error_pattern, + -- Data from Frontends + FEE_DATA_IN => FEE_DATA_IN, + FEE_DATAREADY_IN => FEE_DATAREADY_IN, + FEE_READ_OUT => fee_read, + FEE_STATUS_BITS_IN => FEE_STATUS_BITS_IN, + FEE_BUSY_IN => FEE_BUSY_IN, + -- slow control interface + START_CONFIG_OUT => ip_cfg_start, --open, --: out std_logic; -- reconfigure MACs/IPs/ports/packet size -- gk 27.03.10 + BANK_SELECT_OUT => ip_cfg_bank, --open, --: out std_logic_vector(3 downto 0); -- configuration page address -- gk 27.03.10 + CONFIG_DONE_IN => ip_cfg_done, --'1', --: in std_logic; -- configuration finished -- gk 27.03.10 + DATA_GBE_ENABLE_IN => '1', --: in std_logic; -- IPU data is forwarded to GbE + DATA_IPU_ENABLE_IN => '0', --: in std_logic; -- IPU data is forwarded to CTS / TRBnet + MULTI_EVT_ENABLE_IN => '0', --: in std_logic; -- enable multi event packets + MAX_MESSAGE_SIZE_IN => x"0000_1000", -- gk 08.04.10 -- temporarily fixed here, to be set by slow ctrl + -- PacketConstructor interface + PC_WR_EN_OUT => pc_wr_en, + PC_DATA_OUT => pc_data, + PC_READY_IN => pc_ready, + PC_SOS_OUT => pc_sos, + PC_EOD_OUT => pc_eod, + PC_SUB_SIZE_OUT => pc_sub_size, + PC_TRIG_NR_OUT => pc_trig_nr, + PC_PADDING_OUT => pc_padding, + -- Debug + BSM_SAVE_OUT => ig_bsm_save, + BSM_LOAD_OUT => ig_bsm_load, + DBG_CTS_CTR_OUT => ig_cts_ctr, + DBG_REM_CTR_OUT => ig_rem_ctr, + DBG_SF_WCNT_OUT => ig_wcnt, + DBG_SF_RCNT_OUT => ig_rcnt, + DBG_SF_DATA_OUT => ig_data, + DBG_SF_RD_EN_OUT => ig_rd_en, + DBG_SF_WR_EN_OUT => ig_wr_en, + DBG_SF_EMPTY_OUT => ig_empty, + DBG_SF_AEMPTY_OUT => ig_aempty, + DBG_SF_FULL_OUT => ig_full, + DBG_SF_AFULL_OUT => ig_afull, + DEBUG_OUT => ig_debug +); + +-- Second stage: Packet constructor +PACKET_CONSTRUCTOR : trb_net16_gbe_packet_constr +port map( + -- ports for user logic + RESET => RESET, + CLK => CLK, + PC_WR_EN_IN => pc_wr_en, + PC_DATA_IN => pc_data, + PC_READY_OUT => pc_ready, + PC_START_OF_SUB_IN => pc_sos, + PC_END_OF_DATA_IN => pc_eod, + -- queue and subevent layer headers + PC_SUB_SIZE_IN => pc_sub_size, + PC_PADDING_IN => pc_padding, -- gk 29.03.10 + PC_DECODING_IN => pc_decoding, + PC_EVENT_ID_IN => pc_event_id, + PC_TRIG_NR_IN => pc_trig_nr, + PC_QUEUE_DEC_IN => pc_queue_dec, + PC_MAX_FRAME_SIZE_IN => pc_max_frame_size, + -- NEW PORTS + FC_WR_EN_OUT => fc_wr_en, + FC_DATA_OUT => fc_data, + FC_H_READY_IN => fc_h_ready, + FC_READY_IN => fc_ready, + FC_IP_SIZE_OUT => fc_ip_size, + FC_UDP_SIZE_OUT => fc_udp_size, + FC_IDENT_OUT => fc_ident, + FC_FLAGS_OFFSET_OUT => fc_flags_offset, + FC_SOD_OUT => fc_sod, + FC_EOD_OUT => fc_eod, + -- debug ports + BSM_CONSTR_OUT => pc_bsm_constr, + BSM_LOAD_OUT => pc_bsm_load, + BSM_SAVE_OUT => pc_bsm_save, + DBG_SHF_EMPTY => pc_shf_empty, + DBG_SHF_FULL => pc_shf_full, + DBG_SHF_WR_EN => pc_shf_wr_en, + DBG_SHF_RD_EN => pc_shf_rd_en, + DBG_SHF_Q => pc_shf_q, + DBG_DF_EMPTY => pc_df_empty, + DBG_DF_FULL => pc_df_full, + DBG_DF_WR_EN => pc_df_wr_en, + DBG_DF_RD_EN => pc_df_rd_en, + DBG_DF_Q => pc_df_q, + DBG_ALL_CTR => pc_all_ctr, + DBG_SUB_CTR => pc_sub_ctr, + DBG_MY_CTR => open, + DBG_BYTES_LOADED => pc_bytes_loaded, + DBG_SIZE_LEFT => pc_size_left, + DBG_SUB_SIZE_TO_SAVE => pc_sub_size_to_save, + DBG_SUB_SIZE_LOADED => pc_sub_size_loaded, + DBG_SUB_BYTES_LOADED => pc_sub_bytes_loaded, + DBG_QUEUE_SIZE => pc_queue_size, + DBG_ACT_QUEUE_SIZE => pc_act_queue_size, + DEBUG_OUT => open +); + +-- Third stage: Frame Constructor +FRAME_CONSTRUCTOR: trb_net16_gbe_frame_constr +port map( + -- ports for user logic + RESET => RESET, + CLK => CLK, + -- + WR_EN_IN => fc_wr_en, + DATA_IN => fc_data, + START_OF_DATA_IN => fc_sod, + END_OF_DATA_IN => fc_eod, + IP_F_SIZE_IN => fc_ip_size, + UDP_P_SIZE_IN => fc_udp_size, + HEADERS_READY_OUT => fc_h_ready, + READY_OUT => fc_ready, + DEST_MAC_ADDRESS_IN => fc_dest_mac, + DEST_IP_ADDRESS_IN => fc_dest_ip, + DEST_UDP_PORT_IN => fc_dest_udp, + SRC_MAC_ADDRESS_IN => fc_src_mac, + SRC_IP_ADDRESS_IN => fc_src_ip, + SRC_UDP_PORT_IN => fc_src_udp, + FRAME_TYPE_IN => fc_type, + IHL_VERSION_IN => fc_ihl_version, + TOS_IN => fc_tos, + IDENTIFICATION_IN => fc_ident, + FLAGS_OFFSET_IN => fc_flags_offset, + TTL_IN => fc_ttl, + PROTOCOL_IN => fc_protocol, + -- ports for packetTransmitter + RD_CLK => serdes_clk_125, + FT_DATA_OUT => ft_data, + FT_TX_EMPTY_OUT => ft_tx_empty, + FT_TX_RD_EN_IN => mac_tx_read, + FT_START_OF_PACKET_OUT => ft_start_of_packet, + FT_TX_DONE_IN => mac_tx_done, + -- debug ports + BSM_CONSTR_OUT => fc_bsm_constr, + BSM_TRANS_OUT => fc_bsm_trans, + DEBUG_OUT => open +); + +FRAME_TRANSMITTER: trb_net16_gbe_frame_trans +port map( + CLK => CLK, + RESET => RESET, + TX_MAC_CLK => serdes_clk_125, + TX_EMPTY_IN => ft_tx_empty, + START_OF_PACKET_IN => ft_start_of_packet, + DATA_ENDFLAG_IN => ft_data(8), + -- MAC interface + HADDR_OUT => mac_haddr, + HDATA_OUT => mac_hdataout, + HCS_OUT => mac_hcs, + HWRITE_OUT => mac_hwrite, + HREAD_OUT => mac_hread, + HREADY_IN => mac_hready, + HDATA_EN_IN => mac_hdata_en, + TX_FIFOAVAIL_OUT => mac_fifoavail, + TX_FIFOEOF_OUT => mac_fifoeof, + TX_FIFOEMPTY_OUT => mac_fifoempty, + TX_DONE_IN => mac_tx_done, + -- Debug + BSM_INIT_OUT => ft_bsm_init, + BSM_MAC_OUT => ft_bsm_mac, + BSM_TRANS_OUT => ft_bsm_trans, + DBG_RD_DONE_OUT => open, + DBG_INIT_DONE_OUT => open, + DBG_ENABLED_OUT => open, + DEBUG_OUT => open +); + +-- in case of real hardware, we use the IP cores for MAC and PHY, and also put a SerDes in +imp_gen: if (DO_SIMULATION = 0) generate + -------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------- + -- Implementation + -------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------- + + -- MAC part + MAC: tsmac3 + port map( + ----------------- clock and reset port declarations ------------------ + hclk => CLK, + txmac_clk => serdes_clk_125, + rxmac_clk => serdes_clk_125, + reset_n => GSR_N, + txmac_clk_en => mac_tx_clk_en, + rxmac_clk_en => mac_rx_clk_en, + ------------------- Input signals to the GMII ---------------- NOT USED + rxd => x"00", + rx_dv => '0', + rx_er => '0', + col => mac_col, + crs => mac_crs, + -------------------- Input signals to the CPU I/F ------------------- + haddr => mac_haddr, + hdatain => mac_hdataout, + hcs_n => mac_hcs, + hwrite_n => mac_hwrite, + hread_n => mac_hread, + ---------------- Input signals to the Tx MAC FIFO I/F --------------- + tx_fifodata => ft_data(7 downto 0), + tx_fifoavail => mac_fifoavail, + tx_fifoeof => mac_fifoeof, + tx_fifoempty => mac_fifoempty, + tx_sndpaustim => x"0000", + tx_sndpausreq => '0', + tx_fifoctrl => '0', -- always data frame + ---------------- Input signals to the Rx MAC FIFO I/F --------------- + rx_fifo_full => '0', + ignore_pkt => '0', + ---------------- Output signals from the GMII ----------------------- + txd => pcs_txd, + tx_en => pcs_tx_en, + tx_er => pcs_tx_er, + ----------------- Output signals from the CPU I/F ------------------- + hdataout => open, + hdataout_en_n => mac_hdata_en, + hready_n => mac_hready, + cpu_if_gbit_en => open, + ------------- Output signals from the Tx MAC FIFO I/F --------------- + tx_macread => mac_tx_read, + tx_discfrm => open, + tx_staten => open, + tx_statvec => open, + tx_done => mac_tx_done, + ------------- Output signals from the Rx MAC FIFO I/F --------------- + rx_fifo_error => open, + rx_stat_vector => open, + rx_dbout => open, + rx_write => open, + rx_stat_en => open, + rx_eof => open, + rx_error => open + ); + + -- PHY part + PCS_SERDES : trb_net16_med_ecp_sfp_gbe_8b + port map( RESET => RESET, + GSR_N => GSR_N, + CLK_125_OUT => serdes_clk_125, + CLK_RX_OUT => open, + CLK_TX_OUT => open, + FT_TX_CLK_EN_OUT => mac_tx_clk_en, + FT_RX_CLK_EN_OUT => mac_rx_clk_en, + --connection to frame transmitter (tsmac) + FT_COL_OUT => mac_col, + FT_CRS_OUT => mac_crs, + FT_TXD_IN => pcs_txd, + FT_TX_EN_IN => pcs_tx_en, + FT_TX_ER_IN => pcs_tx_er, + --SFP Connection + SD_RXD_P_IN => SFP_RXD_P_IN, + SD_RXD_N_IN => SFP_RXD_N_IN, + SD_TXD_P_OUT => SFP_TXD_P_OUT, + SD_TXD_N_OUT => SFP_TXD_N_OUT, + SD_REFCLK_P_IN => SFP_REFCLK_P_IN, + SD_REFCLK_N_IN => SFP_REFCLK_N_IN, + SD_PRSNT_N_IN => SFP_PRSNT_N_IN, + SD_LOS_IN => SFP_LOS_IN, + SD_TXDIS_OUT => SFP_TXDIS_OUT, + -- Autonegotiation stuff + MR_ADV_ABILITY_IN => x"0020", -- full duplex only + MR_AN_LP_ABILITY_OUT => pcs_an_lp_ability, + MR_AN_PAGE_RX_OUT => pcs_an_page_rx, + MR_AN_COMPLETE_OUT => pcs_an_complete, + MR_RESET_IN => MR_RESET_IN, + MR_MODE_IN => MR_MODE_IN, + MR_AN_ENABLE_IN => '1', -- do autonegotiation + MR_RESTART_AN_IN => MR_RESTART_IN, + -- Status and control port + STAT_OP => open, + CTRL_OP => x"0000", + STAT_DEBUG => pcs_stat_debug, --open, + CTRL_DEBUG => x"0000_0000_0000_0000" + ); + + stage_stat_regs(31 downto 28) <= x"d"; + stage_stat_regs(27 downto 24) <= pcs_stat_debug(25 downto 22); -- link status + stage_stat_regs(23 downto 20) <= pcs_stat_debug(35 downto 32); -- reset bsm + stage_stat_regs(19 downto 18) <= (others => '0'); + stage_stat_regs(17) <= pcs_an_complete; + stage_stat_regs(16) <= pcs_an_page_rx; + stage_stat_regs(15 downto 0) <= pcs_an_lp_ability; + +end generate imp_gen; + +-- in case of simulation we include a fake MAC and no PHY/SerDes. +sim_gen: if (DO_SIMULATION = 1) generate + -------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------- + -- Simulation + -------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------- + MAC: mb_mac_sim + port map( -------------------------------------------------------------------------- + --------------- clock, reset, clock enable ------------------------------- + HCLK => CLK, + TX_MAC_CLK => serdes_clk_125, + RX_MAC_CLK => serdes_clk_125, + RESET_N => GSR_N, + TXMAC_CLK_EN => mac_tx_clk_en, + RXMAC_CLK_EN => mac_rx_clk_en, + -------------------------------------------------------------------------- + --------------- SGMII receive interface ---------------------------------- + RXD => x"00", + RX_DV => '0', + RX_ER => '0', + COL => mac_col, + CRS => mac_crs, + -------------------------------------------------------------------------- + --------------- SGMII transmit interface --------------------------------- + TXD => pcs_txd, + TX_EN => pcs_tx_en, + TX_ER => pcs_tx_er, + -------------------------------------------------------------------------- + --------------- CPU configuration interface ------------------------------ + HADDR => mac_haddr, + HDATAIN => mac_hdataout, + HCS_N => mac_hcs, + HWRITE_N => mac_hwrite, + HREAD_N => mac_hread, + HDATAOUT => open, + HDATAOUT_EN_N => mac_hdata_en, + HREADY_N => mac_hready, + CPU_IF_GBIT_EN => open, + -------------------------------------------------------------------------- + --------------- Transmit FIFO interface ---------------------------------- + TX_FIFODATA => ft_data(7 downto 0), + TX_FIFOAVAIL => mac_fifoavail, + TX_FIFOEOF => mac_fifoeof, + TX_FIFOEMPTY => mac_fifoempty, + TX_MACREAD => mac_tx_read, + TX_DONE => mac_tx_done, + TX_SNDPAUSTIM => x"0000", + TX_SNDPAUSREQ => '0', + TX_FIFOCTRL => '0', + TX_DISCFRM => open, + TX_STATEN => open, + TX_STATVEC => open, + -------------------------------------------------------------------------- + --------------- Receive FIFO interface ----------------------------------- + RX_DBOUT => open, + RX_FIFO_FULL => '0', + IGNORE_PKT => '0', + RX_FIFO_ERROR => open, + RX_STAT_VECTOR => open, + RX_STAT_EN => open, + RX_WRITE => open, + RX_EOF => open, + RX_ERROR => open + ); + + -- add external test clock for the MAC part + serdes_clk_125 <= TEST_CLK; + + -- fake signals + pcs_an_lp_ability <= x"4060"; + pcs_an_page_rx <= '0'; + pcs_an_complete <= '1'; + mac_tx_clk_en <= '1'; + mac_rx_clk_en <= '1'; + + stage_stat_regs(31 downto 0) <= (others => '0'); + + pcs_stat_debug(63 downto 0) <= (others => '0'); + + SFP_TXD_P_OUT <= '1'; + SFP_TXD_N_OUT <= '0'; + SFP_TXDIS_OUT <= '0'; + +end generate sim_gen; + + +------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------ + +--*************** +-- LOGIC ANALYZER SIGNALS +--*************** +analyzer_debug <= pcs_stat_debug; + +-- Interconnection signals +IG_CTS_CTR_TST <= ig_cts_ctr; +IG_REM_CTR_TST <= ig_rem_ctr; +IG_BSM_LOAD_TST <= ig_bsm_load; +IG_BSM_SAVE_TST <= ig_bsm_save; +IG_DATA_TST <= ig_data; +IG_WCNT_TST <= ig_wcnt; +IG_RCNT_TST <= ig_rcnt; +IG_RD_EN_TST <= ig_rd_en; +IG_WR_EN_TST <= ig_wr_en; +IG_EMPTY_TST <= ig_empty; +IG_AEMPTY_TST <= ig_aempty; +IG_FULL_TST <= ig_full; +IG_AFULL_TST <= ig_afull; +-- PacketConstructor signals +PC_WR_EN_TST <= pc_wr_en; +PC_DATA_TST <= pc_data; +PC_READY_TST <= pc_ready; +PC_START_OF_SUB_TST <= pc_sos; +PC_END_OF_DATA_TST <= pc_eod; +PC_SUB_SIZE_TST <= pc_sub_size; +PC_TRIG_NR_TST <= pc_trig_nr; +PC_PADDING_TST <= pc_padding; +PC_DECODING_TST <= pc_decoding; +PC_EVENT_ID_TST <= pc_event_id; +PC_QUEUE_DEC_TST <= pc_queue_dec; +PC_BSM_CONSTR_TST <= pc_bsm_constr; +PC_BSM_LOAD_TST <= pc_bsm_load; +PC_BSM_SAVE_TST <= pc_bsm_save; +PC_SHF_EMPTY_TST <= pc_shf_empty; +PC_SHF_FULL_TST <= pc_shf_full; +PC_SHF_WR_EN_TST <= pc_shf_wr_en; +PC_SHF_RD_EN_TST <= pc_shf_rd_en; +PC_SHF_Q_TST <= pc_shf_q; +PC_DF_EMPTY_TST <= pc_df_empty; +PC_DF_FULL_TST <= pc_df_full; +PC_DF_WR_EN_TST <= pc_df_wr_en; +PC_DF_RD_EN_TST <= pc_df_rd_en; +PC_DF_Q_TST <= pc_df_q; +PC_ALL_CTR_TST <= pc_all_ctr; +PC_SUB_CTR_TST <= pc_sub_ctr; +PC_BYTES_LOADED_TST <= pc_bytes_loaded; +PC_SIZE_LEFT_TST <= pc_size_left; +PC_SUB_SIZE_TO_SAVE_TST <= pc_sub_size_to_save; +PC_SUB_SIZE_LOADED_TST <= pc_sub_size_loaded; +PC_SUB_BYTES_LOADED_TST <= pc_sub_bytes_loaded; +PC_QUEUE_SIZE_TST <= pc_queue_size; +PC_ACT_QUEUE_SIZE_TST <= pc_act_queue_size; +-- FrameConstructor signals +FC_WR_EN_TST <= fc_wr_en; +FC_DATA_TST <= fc_data; +FC_SOD_TST <= fc_sod; +FC_EOD_TST <= fc_eod; +FC_IP_SIZE_TST <= fc_ip_size; +FC_UDP_SIZE_TST <= fc_udp_size; +FC_H_READY_TST <= fc_h_ready; +FC_READY_TST <= fc_ready; +FC_IDENT_TST <= fc_ident; +FC_FLAGS_OFFSET_TST <= fc_flags_offset; +FC_BSM_CONSTR_TST <= fc_bsm_constr; +FC_BSM_TRANS_TST <= fc_bsm_trans; +-- FrameTransmitter signals +FT_TX_EMPTY_TST <= ft_tx_empty; +FT_DATA_TST <= ft_data; +FT_START_OF_PACKET_TST <= ft_start_of_packet; +FT_BSM_INIT_TST <= ft_bsm_init; +FT_BSM_MAC_TST <= ft_bsm_mac; +FT_BSM_TRANS_TST <= ft_bsm_trans; +-- MAC +MAC_HADDR_TST <= mac_haddr; +MAC_HDATA_TST <= mac_hdataout; +MAC_HCS_TST <= mac_hcs; +MAC_HWRITE_TST <= mac_hwrite; +MAC_HREAD_TST <= mac_hread; +MAC_HREADY_TST <= mac_hready; +MAC_HDATA_EN_TST <= mac_hdata_en; +MAC_FIFOAVAIL_TST <= mac_fifoavail; +MAC_FIFOEOF_TST <= mac_fifoeof; +MAC_FIFOEMPTY_TST <= mac_fifoempty; +MAC_TX_DONE_TST <= mac_tx_done; +MAC_TX_READ_TST <= mac_tx_read; +PCS_AN_LP_ABILITY_TST <= pcs_an_lp_ability; +PCS_AN_COMPLETE_TST <= pcs_an_complete; +PCS_AN_PAGE_RX_TST <= pcs_an_page_rx; + +-- Outputs +FEE_READ_OUT <= fee_read; + +CTS_READOUT_FINISHED_OUT <= cts_readout_finished; +CTS_DATAREADY_OUT <= cts_dataready; +CTS_DATA_OUT <= cts_data; +CTS_LENGTH_OUT <= cts_length; +CTS_ERROR_PATTERN_OUT <= cts_error_pattern; + +STAGE_STAT_REGS_OUT <= stage_stat_regs; + +ANALYZER_DEBUG_OUT <= analyzer_debug; + +end architecture; diff --git a/gbe_ecp2m/trb_net16_gbe_frame_constr.vhd b/gbe_ecp2m/trb_net16_gbe_frame_constr.vhd new file mode 100755 index 0000000..ce1ff3c --- /dev/null +++ b/gbe_ecp2m/trb_net16_gbe_frame_constr.vhd @@ -0,0 +1,500 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +use work.trb_net_std.all; +use work.trb_net_components.all; +use work.trb_net16_hub_func.all; + +entity trb_net16_gbe_frame_constr is +port( + -- ports for user logic + RESET : in std_logic; + CLK : in std_logic; + -- + WR_EN_IN : in std_logic; + DATA_IN : in std_logic_vector(7 downto 0); + START_OF_DATA_IN : in std_logic; + END_OF_DATA_IN : in std_logic; + IP_F_SIZE_IN : in std_logic_vector(15 downto 0); + UDP_P_SIZE_IN : in std_logic_vector(15 downto 0); -- needed for fragmentation + HEADERS_READY_OUT : out std_logic; + READY_OUT : out std_logic; + DEST_MAC_ADDRESS_IN : in std_logic_vector(47 downto 0); + DEST_IP_ADDRESS_IN : in std_logic_vector(31 downto 0); + DEST_UDP_PORT_IN : in std_logic_vector(15 downto 0); + SRC_MAC_ADDRESS_IN : in std_logic_vector(47 downto 0); + SRC_IP_ADDRESS_IN : in std_logic_vector(31 downto 0); + SRC_UDP_PORT_IN : in std_logic_vector(15 downto 0); + FRAME_TYPE_IN : in std_logic_vector(15 downto 0); + IHL_VERSION_IN : in std_logic_vector(7 downto 0); + TOS_IN : in std_logic_vector(7 downto 0); + IDENTIFICATION_IN : in std_logic_vector(15 downto 0); + FLAGS_OFFSET_IN : in std_logic_vector(15 downto 0); + TTL_IN : in std_logic_vector(7 downto 0); + PROTOCOL_IN : in std_logic_vector(7 downto 0); + -- ports for packetTransmitter + RD_CLK : in std_logic; -- 125MHz clock!!! + FT_DATA_OUT : out std_logic_vector(8 downto 0); + FT_TX_EMPTY_OUT : out std_logic; + FT_TX_RD_EN_IN : in std_logic; + FT_START_OF_PACKET_OUT : out std_logic; + FT_TX_DONE_IN : in std_logic; + -- debug ports + BSM_CONSTR_OUT : out std_logic_vector(7 downto 0); + BSM_TRANS_OUT : out std_logic_vector(3 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end trb_net16_gbe_frame_constr; + +architecture trb_net16_gbe_frame_constr of trb_net16_gbe_frame_constr is + +component fifo_4096x9 is +port( + Data : in std_logic_vector(8 downto 0); + WrClock : in std_logic; + RdClock : in std_logic; + WrEn : in std_logic; + RdEn : in std_logic; + Reset : in std_logic; + RPReset : in std_logic; + Q : out std_logic_vector(8 downto 0); + Empty : out std_logic; + Full : out std_logic +); +end component; + +attribute sys_encoding : string; + +type constructStates is (IDLE, DEST_MAC_ADDR, SRC_MAC_ADDR, FRAME_TYPE_S, VERSION, + TOS_S, IP_LENGTH, IDENT, FLAGS, TTL_S, PROTO, HEADER_CS, + SRC_IP_ADDR, DEST_IP_ADDR, SRC_PORT, DEST_PORT, UDP_LENGTH, + UDP_CS, SAVE_DATA, CLEANUP); +signal constructCurrentState, constructNextState : constructStates; +signal bsm_constr : std_logic_vector(7 downto 0); +attribute sys_encoding of constructCurrentState: signal is "safe,gray"; + +type transmitStates is (T_IDLE, T_LOAD, T_TRANSMIT, T_CLEANUP); +signal transmitCurrentState, transmitNextState : transmitStates; +signal bsm_trans : std_logic_vector(3 downto 0); + +signal headers_int_counter : integer range 0 to 6; +signal fpf_data : std_logic_vector(7 downto 0); +signal fpf_empty : std_logic; +signal fpf_full : std_logic; +signal fpf_wr_en : std_logic; +signal fpf_q : std_logic_vector(8 downto 0); +signal ip_size : std_logic_vector(15 downto 0); +signal ip_checksum : std_logic_vector(31 downto 0); +signal udp_size : std_logic_vector(15 downto 0); +signal udp_checksum : std_logic_vector(15 downto 0); +signal ft_sop : std_logic; +signal put_udp_headers : std_logic; +signal ready_frames_ctr : std_logic_vector(15 downto 0); +signal sent_frames_ctr : std_logic_vector(15 downto 0); +signal debug : std_logic_vector(31 downto 0); +signal ready : std_logic; +signal headers_ready : std_logic; + +signal cur_max : integer range 0 to 10; + +signal ready_frames_ctr_q : std_logic_vector(15 downto 0); +signal ip_cs_temp_right : std_logic_vector(15 downto 0); -- gk 29.03.10 + +begin + +-- Fakes +udp_checksum <= x"0000"; -- no checksum test needed +debug <= (others => '0'); + +ready <= '1' when (constructCurrentState = IDLE) + else '0'; +headers_ready <= '1' when (constructCurrentState = SAVE_DATA) + else '0'; + +sizeProc: process( put_udp_headers, IP_F_SIZE_IN, UDP_P_SIZE_IN ) +begin + if( put_udp_headers = '1' ) then + ip_size <= IP_F_SIZE_IN + x"14" + x"8"; + udp_size <= UDP_P_SIZE_IN + x"8"; + else + ip_size <= IP_F_SIZE_IN + x"14"; + udp_size <= UDP_P_SIZE_IN; + end if; +end process sizeProc; + +ipCsProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (constructCurrentState = IDLE) then + ip_checksum <= x"00000000"; + else + case constructCurrentState is + when DEST_MAC_ADDR => + case headers_int_counter is + when 0 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + SRC_IP_ADDRESS_IN(7 downto 0); + when 1 => + ip_checksum <= ip_checksum + SRC_IP_ADDRESS_IN(15 downto 8); + when 2 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + SRC_IP_ADDRESS_IN(23 downto 16); + when 3 => + ip_checksum <= ip_checksum + SRC_IP_ADDRESS_IN(31 downto 24); + when 4 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + DEST_IP_ADDRESS_IN(7 downto 0); + when 5 => + ip_checksum <= ip_checksum + DEST_IP_ADDRESS_IN(15 downto 8); + when others => null; + end case; + when SRC_MAC_ADDR => + case headers_int_counter is + when 0 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + DEST_IP_ADDRESS_IN(23 downto 16); + when 1 => + ip_checksum <= ip_checksum + DEST_IP_ADDRESS_IN(31 downto 24); + when 2 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + IHL_VERSION_IN; + when 3 => + ip_checksum <= ip_checksum + TOS_IN; + when 4 => + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + ip_size(15 downto 8); + when 5 => + ip_checksum <= ip_checksum + ip_size(7 downto 0); + when others => null; + end case; + when VERSION => + if headers_int_counter = 0 then + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + IDENTIFICATION_IN(7 downto 0); + end if; + when TOS_S => + if headers_int_counter = 0 then + ip_checksum <= ip_checksum + IDENTIFICATION_IN(15 downto 8); + end if; + when IP_LENGTH => + if headers_int_counter = 0 then + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + FLAGS_OFFSET_IN(15 downto 8); + elsif headers_int_counter = 1 then + ip_checksum <= ip_checksum + FLAGS_OFFSET_IN(7 downto 0); + end if; + when IDENT => + if headers_int_counter = 0 then + ip_checksum(31 downto 8) <= ip_checksum(31 downto 8) + TTL_IN; + elsif headers_int_counter = 1 then + ip_checksum <= ip_checksum + PROTOCOL_IN; + end if; + -- gk 29.03.10 corrected the bug with bad checksums when sum larger than 16b + when FLAGS => + if headers_int_counter = 0 then + ip_cs_temp_right <= ip_checksum(31 downto 16); + elsif headers_int_counter = 1 then + ip_checksum(31 downto 16) <= (others => '0'); + end if; + when TTL_S => + if headers_int_counter = 0 then + ip_checksum <= ip_checksum + ip_cs_temp_right; + end if; + when PROTO => + if headers_int_counter = 0 then + ip_checksum(15 downto 0) <= ip_checksum(15 downto 0) + ip_checksum(31 downto 16); + end if; + when others => null; + end case; + end if; + end if; +end process ipCsProc; + + +constructMachineProc: process( CLK ) +begin + if( rising_edge(CLK) ) then + if( RESET = '1' ) then + constructCurrentState <= IDLE; + else + constructCurrentState <= constructNextState; + end if; + end if; +end process constructMachineProc; + + +--find next state of construct machine +constructMachine: process( constructCurrentState, START_OF_DATA_IN, END_OF_DATA_IN, headers_int_counter, put_udp_headers, CUR_MAX ) +begin + constructNextState <= constructCurrentState; + if( headers_int_counter = cur_max ) then --can be checked everytime - if not in use, counter and cur_max are 0 + case constructCurrentState is + when IDLE => + if( START_OF_DATA_IN = '1' ) then + constructNextState <= DEST_MAC_ADDR; + end if; + when DEST_MAC_ADDR => + constructNextState <= SRC_MAC_ADDR; + when SRC_MAC_ADDR => + constructNextState <= FRAME_TYPE_S; + when FRAME_TYPE_S => + constructNextState <= VERSION; + when VERSION => + constructNextState <= TOS_S; + when TOS_S => + constructNextState <= IP_LENGTH; + when IP_LENGTH => + constructNextState <= IDENT; + when IDENT => + constructNextState <= FLAGS; + when FLAGS => + constructNextState <= TTL_S; + when TTL_S => + constructNextState <= PROTO; + when PROTO => + constructNextState <= HEADER_CS; + when HEADER_CS => + constructNextState <= SRC_IP_ADDR; + when SRC_IP_ADDR => + constructNextState <= DEST_IP_ADDR; + when DEST_IP_ADDR => + if (put_udp_headers = '1') then + constructNextState <= SRC_PORT; + else + constructNextState <= SAVE_DATA; + end if; + when SRC_PORT => + constructNextState <= DEST_PORT; + when DEST_PORT => + constructNextState <= UDP_LENGTH; + when UDP_LENGTH => + constructNextState <= UDP_CS; + when UDP_CS => + constructNextState <= SAVE_DATA; + when SAVE_DATA => + if (END_OF_DATA_IN = '1') then + constructNextState <= CLEANUP; + end if; + when CLEANUP => + constructNextState <= IDLE; + when others => + constructNextState <= IDLE; + end case; + end if; +end process constructMachine; + + +bsmConstrProc : process(constructCurrentState) +begin +--find maximum time in each state & set state bits + case constructCurrentState is + when IDLE => cur_max <= 0; bsm_constr <= x"01"; + when DEST_MAC_ADDR => cur_max <= 5; bsm_constr <= x"02"; + when SRC_MAC_ADDR => cur_max <= 5; bsm_constr <= x"03"; + when FRAME_TYPE_S => cur_max <= 1; bsm_constr <= x"04"; + when VERSION => cur_max <= 0; bsm_constr <= x"05"; + when TOS_S => cur_max <= 0; bsm_constr <= x"06"; + when IP_LENGTH => cur_max <= 1; bsm_constr <= x"07"; + when IDENT => cur_max <= 1; bsm_constr <= x"08"; + when FLAGS => cur_max <= 1; bsm_constr <= x"09"; + when TTL_S => cur_max <= 0; bsm_constr <= x"0a"; + when PROTO => cur_max <= 0; bsm_constr <= x"0b"; + when HEADER_CS => cur_max <= 1; bsm_constr <= x"0c"; + when SRC_IP_ADDR => cur_max <= 3; bsm_constr <= x"0d"; + when DEST_IP_ADDR => cur_max <= 3; bsm_constr <= x"0e"; + when SRC_PORT => cur_max <= 1; bsm_constr <= x"0f"; + when DEST_PORT => cur_max <= 1; bsm_constr <= x"10"; + when UDP_LENGTH => cur_max <= 1; bsm_constr <= x"11"; + when UDP_CS => cur_max <= 1; bsm_constr <= x"12"; + when SAVE_DATA => cur_max <= 0; bsm_constr <= x"13"; + when CLEANUP => cur_max <= 0; bsm_constr <= x"14"; + when others => cur_max <= 0; bsm_constr <= x"1f"; + end case; +end process; + + +headersIntProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (constructCurrentState = IDLE) then + headers_int_counter <= 0; + else + if headers_int_counter = cur_max then + headers_int_counter <= 0; + else + headers_int_counter <= headers_int_counter + 1; + end if; + end if; + end if; +end process headersIntProc; + + + +putUdpHeadersProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (FLAGS_OFFSET_IN(12 downto 0) = "0000000000000") then + put_udp_headers <= '1'; + else + put_udp_headers <= '0'; + end if; + end if; +end process putUdpHeadersProc; + + +fpfWrEnProc : process(constructCurrentState, WR_EN_IN) +begin + if (constructCurrentState /= IDLE) and (constructCurrentState /= CLEANUP) and (constructCurrentState /= SAVE_DATA) then + fpf_wr_en <= '1'; + elsif (constructCurrentState = SAVE_DATA) and (WR_EN_IN = '1') then + fpf_wr_en <= '1'; + else + fpf_wr_en <= '0'; + end if; +end process fpfWrEnProc; + +fpfDataProc : process(constructCurrentState, DEST_MAC_ADDRESS_IN, SRC_MAC_ADDRESS_IN, FRAME_TYPE_IN, IHL_VERSION_IN, + TOS_IN, ip_size, IDENTIFICATION_IN, FLAGS_OFFSET_IN, TTL_IN, PROTOCOL_IN, + ip_checksum, SRC_IP_ADDRESS_IN, DEST_IP_ADDRESS_IN, + SRC_UDP_PORT_IN, DEST_UDP_PORT_IN, udp_size, udp_checksum, headers_int_counter, DATA_IN) +begin + case constructCurrentState is + when IDLE => fpf_data <= DEST_MAC_ADDRESS_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when DEST_MAC_ADDR => fpf_data <= DEST_MAC_ADDRESS_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when SRC_MAC_ADDR => fpf_data <= SRC_MAC_ADDRESS_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when FRAME_TYPE_S => fpf_data <= FRAME_TYPE_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when VERSION => fpf_data <= IHL_VERSION_IN; + when TOS_S => fpf_data <= TOS_IN; + when IP_LENGTH => fpf_data <= ip_size(15 - headers_int_counter * 8 downto 8 - headers_int_counter * 8); + when IDENT => fpf_data <= IDENTIFICATION_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when FLAGS => fpf_data <= FLAGS_OFFSET_IN(15 - headers_int_counter * 8 downto 8 - headers_int_counter * 8); + when TTL_S => fpf_data <= TTL_IN; + when PROTO => fpf_data <= PROTOCOL_IN; + when HEADER_CS => fpf_data <= x"ff" - ip_checksum(15 - headers_int_counter * 8 downto 8 - headers_int_counter * 8); + when SRC_IP_ADDR => fpf_data <= SRC_IP_ADDRESS_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when DEST_IP_ADDR => fpf_data <= DEST_IP_ADDRESS_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when SRC_PORT => fpf_data <= SRC_UDP_PORT_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when DEST_PORT => fpf_data <= DEST_UDP_PORT_IN(headers_int_counter * 8 + 7 downto headers_int_counter * 8); + when UDP_LENGTH => fpf_data <= udp_size(15 - headers_int_counter * 8 downto 8 - headers_int_counter * 8); + when UDP_CS => fpf_data <= udp_checksum(15 - headers_int_counter * 8 downto 8 - headers_int_counter * 8); + when SAVE_DATA => fpf_data <= DATA_IN; + when CLEANUP => fpf_data <= x"ab"; + when others => fpf_data <= x"00"; + end case; +end process fpfDataProc; + +readyFramesCtrProc: process( CLK ) +begin + if rising_edge(CLK) then + if (RESET = '1') then + ready_frames_ctr <= (others => '0'); + elsif (constructCurrentState = CLEANUP) then + ready_frames_ctr <= ready_frames_ctr + 1; + end if; + end if; +end process readyFramesCtrProc; + +FINAL_PACKET_FIFO: fifo_4096x9 +port map( + Data(7 downto 0) => fpf_data, + Data(8) => END_OF_DATA_IN, + WrClock => CLK, + RdClock => RD_CLK, + WrEn => fpf_wr_en, + RdEn => FT_TX_RD_EN_IN, + Reset => RESET, + RPReset => RESET, + Q => fpf_q, + Empty => fpf_empty, + Full => fpf_full +); + + +transferToRdClock : signal_sync + generic map( + DEPTH => 2, + WIDTH => 16 + ) + port map( + RESET => RESET, + D_IN => ready_frames_ctr, + CLK0 => RD_CLK, + CLK1 => RD_CLK, + D_OUT => ready_frames_ctr_q + ); + +transmitMachineProc: process( RD_CLK ) +begin + if( rising_edge(RD_CLK) ) then + if( RESET = '1' ) then + transmitCurrentState <= T_IDLE; + else + transmitCurrentState <= transmitNextState; + end if; + end if; +end process transmitMachineProc; + +transmitMachine: process( transmitCurrentState, fpf_q, FT_TX_DONE_IN, sent_frames_ctr, ready_frames_ctr_q ) +begin + case transmitCurrentState is + when T_IDLE => + bsm_trans <= x"0"; + if( sent_frames_ctr /= ready_frames_ctr_q ) then + transmitNextState <= T_LOAD; + else + transmitNextState <= T_IDLE; + end if; + when T_LOAD => + bsm_trans <= x"1"; + if( fpf_q(8) = '1' ) then + transmitNextState <= T_TRANSMIT; + else + transmitNextState <= T_LOAD; + end if; + when T_TRANSMIT => + bsm_trans <= x"2"; + if( ft_tx_done_in = '1' ) then + transmitNextState <= T_CLEANUP; + else + transmitNextState <= T_TRANSMIT; + end if; + when T_CLEANUP => + bsm_trans <= x"3"; + transmitNextState <= T_IDLE; + when others => + bsm_trans <= x"f"; + transmitNextState <= T_IDLE; + end case; +end process transmitMachine; + +sopProc: process( RD_CLK ) +begin + if rising_edge(RD_CLK) then + if ( RESET = '1' ) then + ft_sop <= '0'; + elsif( (transmitCurrentState = T_IDLE) and (sent_frames_ctr /= ready_frames_ctr_q) ) then + ft_sop <= '1'; + else + ft_sop <= '0'; + end if; + end if; +end process sopProc; + +sentFramesCtrProc: process( RD_CLK ) +begin + if rising_edge(RD_CLK) then + if ( RESET = '1' ) then + sent_frames_ctr <= (others => '0'); + elsif( ft_tx_done_in = '1' ) then + sent_frames_ctr <= sent_frames_ctr + 1; + end if; + end if; +end process sentFramesCtrProc; + +-- Outputs +FT_DATA_OUT <= fpf_q; +FT_TX_EMPTY_OUT <= fpf_empty; +FT_START_OF_PACKET_OUT <= ft_sop; +READY_OUT <= ready; +HEADERS_READY_OUT <= headers_ready; + +BSM_CONSTR_OUT <= bsm_constr; +BSM_TRANS_OUT <= bsm_trans; +DEBUG_OUT <= debug; + +end trb_net16_gbe_frame_constr; \ No newline at end of file diff --git a/gbe_ecp2m/trb_net16_gbe_frame_trans.vhd b/gbe_ecp2m/trb_net16_gbe_frame_trans.vhd new file mode 100755 index 0000000..3778f3e --- /dev/null +++ b/gbe_ecp2m/trb_net16_gbe_frame_trans.vhd @@ -0,0 +1,579 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +use work.trb_net_std.all; +use work.trb_net_components.all; +use work.trb_net16_hub_func.all; + +entity trb_net16_gbe_frame_trans is +port ( + CLK : in std_logic; + RESET : in std_logic; + TX_MAC_CLK : in std_logic; + TX_EMPTY_IN : in std_logic; + START_OF_PACKET_IN : in std_logic; + DATA_ENDFLAG_IN : in std_logic; -- (8) is end flag, rest is only for TSMAC + -- NEW PORTS + HADDR_OUT : out std_logic_vector(7 downto 0); + HDATA_OUT : out std_logic_vector(7 downto 0); + HCS_OUT : out std_logic; + HWRITE_OUT : out std_logic; + HREAD_OUT : out std_logic; + HREADY_IN : in std_logic; + HDATA_EN_IN : in std_logic; + TX_FIFOAVAIL_OUT : out std_logic; + TX_FIFOEOF_OUT : out std_logic; + TX_FIFOEMPTY_OUT : out std_logic; + TX_DONE_IN : in std_logic; + -- Debug + BSM_INIT_OUT : out std_logic_vector(3 downto 0); + BSM_MAC_OUT : out std_logic_vector(3 downto 0); + BSM_TRANS_OUT : out std_logic_vector(3 downto 0); + DBG_RD_DONE_OUT : out std_logic; + DBG_INIT_DONE_OUT : out std_logic; + DBG_ENABLED_OUT : out std_logic; + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end trb_net16_gbe_frame_trans; + +-- FifoRd ?!? + +architecture trb_net16_gbe_frame_trans of trb_net16_gbe_frame_trans is + +component mac_init_mem is +port ( + Address : in std_logic_vector(5 downto 0); + OutClock : in std_logic; + OutClockEn : in std_logic; + Reset : in std_logic; + Q : out std_logic_vector(7 downto 0) +); +end component; + +attribute syn_encoding : string; + +type macInitStates is (I_IDLE, I_INCRADDRESS, I_PAUSE, I_WRITE, I_PAUSE2, I_READ, I_PAUSE3, I_ENDED); +signal macInitState, macInitNextState : macInitStates; +attribute syn_encoding of macInitState: signal is "safe,gray"; +signal bsm_init : std_logic_vector(3 downto 0); + +type macStates is (M_RESETING, M_IDLE, M_INIT); +signal macCurrentState, macNextState : macStates; +signal bsm_mac : std_logic_vector(3 downto 0); + +type transmitStates is (T_IDLE, T_TRANSMIT, T_WAITFORFIFO); +signal transmitCurrentState, transmitNextState : transmitStates; +attribute syn_encoding of transmitCurrentState: signal is "safe,gray"; +signal bsm_trans : std_logic_vector(3 downto 0); + +signal tx_fifoavail_i : std_logic; +signal tx_fifoeof_i : std_logic; + +-- host interface signals +signal hcs_n_i : std_logic; +signal hwrite_n_i : std_logic; +signal hread_n_i : std_logic; + +-- MAC INITIALIZATION signals +signal macInitMemAddr : std_logic_vector(5 downto 0); +signal macInitMemQ : std_logic_vector(7 downto 0); +signal macInitMemEn : std_logic; +signal reading_done : std_logic; +signal init_done : std_logic; +signal enabled : std_logic; +signal addrSig : std_logic_vector(5 downto 0); +signal addr2 : std_logic_vector(5 downto 0); +signal resetAddr : std_logic; + +signal FifoEmpty : std_logic; +signal debug : std_logic_vector(31 downto 0); + +begin + +-- Fakes +debug <= (others => '0'); + + +TransmitStateMachineProc : process (TX_MAC_CLK) +begin + if rising_edge(TX_MAC_CLK) then + if RESET = '1' then + transmitCurrentState <= T_IDLE; + else + transmitCurrentState <= transmitNextState; + end if; + end if; +end process TransmitStatemachineProc; + +TransmitStateMachine : process (transmitCurrentState, macCurrentState, START_OF_PACKET_IN, DATA_ENDFLAG_IN, TX_DONE_IN) +begin + case transmitCurrentState is + when T_IDLE => + bsm_trans <= x"0"; + if ((START_OF_PACKET_IN = '1') and (macCurrentState = M_IDLE)) then + transmitNextState <= T_TRANSMIT; + else + transmitNextState <= T_IDLE; + end if; + when T_TRANSMIT => + bsm_trans <= x"1"; + if (DATA_ENDFLAG_IN = '1') then + transmitNextState <= T_WAITFORFIFO; + else + transmitNextState <= T_TRANSMIT; + end if; + when T_WAITFORFIFO => + bsm_trans <= x"2"; + if (TX_DONE_IN = '1') then + transmitNextState <= T_IDLE; + else + transmitNextState <= T_WAITFORFIFO; + end if; + when others => + bsm_trans <= x"f"; + transmitNextState <= T_IDLE; + end case; +end process TransmitStateMachine; + +FifoAvailProc : process (TX_MAC_CLK) +begin + if rising_edge(TX_MAC_CLK) then + if RESET = '1' then + tx_fifoavail_i <= '0'; + elsif (transmitCurrentState = T_TRANSMIT) then + tx_fifoavail_i <= '1'; + else + tx_fifoavail_i <= '0'; + end if; + end if; +end process FifoAvailProc; + +FifoEmptyProc : process(transmitCurrentState, START_OF_PACKET_IN, TX_EMPTY_IN) +begin + if (transmitCurrentState = T_WAITFORFIFO) then + FifoEmpty <= '1'; + elsif (transmitCurrentState = T_TRANSMIT) then + FifoEmpty <= TX_EMPTY_IN; + elsif (((transmitCurrentState = T_IDLE) or (transmitCurrentState = T_WAITFORFIFO)) and (START_OF_PACKET_IN = '1')) then + FifoEmpty <= '0'; + else + FifoEmpty <= '1'; + end if; +end process FifoEmptyProc; + +tx_fifoeof_i <= '1' when ((DATA_ENDFLAG_IN = '1') and (transmitCurrentState = T_TRANSMIT)) + else '0'; + +-- main MAC state machine +MacStateMachineProc : process (CLK) +begin + if rising_edge(CLK) then + if RESET = '1' then + macCurrentState <= M_RESETING; + else + macCurrentState <= macNextState; + end if; + end if; +end process MacStateMachineProc; + +MacStatesMachine: process(macCurrentState, reading_done) +begin + case macCurrentState is + when M_RESETING => + bsm_mac <= x"0"; + macNextState <= M_INIT; + when M_IDLE => + bsm_mac <= x"1"; + macNextState <= M_IDLE; + when M_INIT => + bsm_mac <= x"2"; + if (reading_done = '1') then + macNextState <= M_IDLE; + else + macNextState <= M_INIT; + end if; + when others => + bsm_mac <= x"f"; + macNextState <= M_RESETING; + end case; +end process MacStatesMachine; + + +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +-- MAC initialization statemachine, memory and address counters +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + +-- state machine used to initialize MAC registers with data saved in macInitDataInv2.mem via macInitMem +MacInitStateMachineProc : process (CLK) +begin + if rising_edge(CLK) then + if RESET = '1' then + macInitState <= I_IDLE; + else + macInitState <= macInitNextState; + end if; + end if; +end process MacInitStateMachineProc; + +MacInitStateMachine : process (macInitState, macCurrentState, init_done, HREADY_IN, reading_done, HDATA_EN_IN, enabled) +begin + case macInitState is + when I_IDLE => + bsm_init <= x"0"; + if (macCurrentState = M_INIT) then + macInitNextState <= I_WRITE; + else + macInitNextState <= I_IDLE; + end if; + when I_INCRADDRESS => + bsm_init <= x"1"; + if ((init_done = '0') and (enabled = '0') and (reading_done = '0')) then -- write to regs 2 and up + macInitNextState <= I_PAUSE; + elsif ((init_done = '1') and (enabled = '0') and (reading_done = '0')) then -- write to regs 0 and 1 + macInitNextState <= I_PAUSE3; + elsif ((init_done = '1') and (enabled = '1') and (reading_done = '0')) then -- read all regs to fifo + macInitNextState <= I_PAUSE2; + else + macInitNextState <= I_ENDED; + end if; + when I_PAUSE => + bsm_init <= x"2"; + if (HREADY_IN = '1') then + macInitNextState <= I_WRITE; + else + macInitNextState <= I_PAUSE; + end if; + when I_WRITE => + bsm_init <= x"3"; + if (HREADY_IN = '0') then + macInitNextState <= I_INCRADDRESS; + else + macInitNextState <= I_WRITE; + end if; + when I_PAUSE2 => + bsm_init <= x"4"; + if (HREADY_IN = '1') then + macInitNextState <= I_READ; + else + macInitNextState <= I_PAUSE2; + end if; + when I_READ => + bsm_init <= x"5"; + if (HDATA_EN_IN = '0') then + macInitNextState <= I_INCRADDRESS; + else + macInitNextState <= I_READ; + end if; + when I_PAUSE3 => + bsm_init <= x"6"; + if (HREADY_IN = '1') then + macInitNextState <= I_WRITE; + else + macInitNextState <= I_PAUSE3; + end if; + when I_ENDED => + bsm_init <= x"7"; + macInitNextState <= I_ENDED; + when others => + bsm_init <= x"f"; + macInitNextState <= I_IDLE; + end case; +end process MacInitStateMachine; + +addrSig <= addr2 when ((reading_done = '0') and (init_done = '1') and (enabled = '1')) + else macInitMemAddr; + +-- initialization ROM +MacInitMemory : mac_init_mem +port map ( + Address => macInitMemAddr, + OutClock => CLK, + OutClockEn => macInitMemEn, + Reset => RESET, + Q => macInitMemQ +); + +-- MAC ready signal (?) +enabledProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + enabled <= '0'; + elsif ((reading_done = '0') and (init_done = '1') and (macInitMemAddr = "000010")) then -- write only to the first register (mode) + enabled <= '1'; + elsif (macInitState = I_IDLE) then + enabled <= '0'; + end if; + end if; +end process enabledProc; + +add2 : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + addr2 <= "111111"; + elsif ((macInitState = I_INCRADDRESS) and (init_done = '1') and (enabled = '1')) then + addr2 <= addr2 + "1"; + elsif (macInitState = I_IDLE) then + addr2 <= "111111"; + end if; + end if; +end process add2; + +readingDoneProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + reading_done <= '0'; + elsif (macInitState = I_IDLE) then + reading_done <= '0'; + elsif (addr2 = "110101") then -- read all registers + reading_done <= '1'; + end if; + end if; +end process readingDoneProc; + +initDoneProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + init_done <= '0'; + elsif (macInitState = I_IDLE) then + init_done <= '0'; + elsif (macInitMemAddr = "110101") then -- write to all registers + init_done <= '1'; + end if; + end if; +end process initDoneProc; + +-- HWRITE signal (registered) +hwriteProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + hwrite_n_i <= '1'; + elsif ((macInitState = I_WRITE) and (HREADY_IN = '1')) then + hwrite_n_i <= '0'; + else + hwrite_n_i <= '1'; + end if; + end if; +end process hwriteProc; + +-- HREAD signal (registered) +hreadProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + hread_n_i <= '1'; + elsif ((macInitState = I_READ) and (HREADY_IN = '1')) then + hread_n_i <= '0'; + else + hread_n_i <= '1'; + end if; + end if; +end process hreadProc; + +-- HCS signal (registered) +hcsProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + hcs_n_i <= '1'; + elsif ((macInitState = I_WRITE) and (HREADY_IN = '1')) then + hcs_n_i <= '0'; + elsif ((macInitState = I_READ) and (HREADY_IN = '1')) then + hcs_n_i <= '0'; + else + hcs_n_i <= '1'; + end if; + end if; +end process hcsProc; + +-- address lines for the initialization memory +macInitMemAddrProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + macInitMemAddr <= "000010"; + elsif (resetAddr = '1') then + macInitMemAddr <= "000000"; + else + if (macInitState = I_INCRADDRESS) then + macInitMemAddr <= macInitMemAddr + "1"; + elsif (macInitState = I_IDLE) then + macInitMemAddr <= "000010"; + end if; + end if; + end if; +end process macInitMemAddrProc; + +-- address counter reset signal (registered) +resetAddrProc : process (CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + resetAddr <= '0'; + elsif (macInitState = I_IDLE) then + resetAddr <= '0'; + elsif (macInitMemAddr = "110101") then + resetAddr <= '1'; + elsif (macInitState = I_PAUSE3) then + resetAddr <= '0'; + end if; + end if; +end process resetAddrProc; + +macInitMemEn <= '1' when (macCurrentState = M_INIT) + else '0'; + + + +-- Outputs +HADDR_OUT <= b"00" & addrSig; +HDATA_OUT <= macInitMemQ; +HCS_OUT <= hcs_n_i; +HWRITE_OUT <= hwrite_n_i; +HREAD_OUT <= hread_n_i; +TX_FIFOAVAIL_OUT <= tx_fifoavail_i; +TX_FIFOEOF_OUT <= tx_fifoeof_i; +TX_FIFOEMPTY_OUT <= FifoEmpty; + +BSM_INIT_OUT <= bsm_init; +BSM_MAC_OUT <= bsm_mac; +BSM_TRANS_OUT <= bsm_trans; +DBG_RD_DONE_OUT <= reading_done; +DBG_INIT_DONE_OUT <= init_done; +DBG_ENABLED_OUT <= enabled; +DEBUG_OUT <= debug; + +end trb_net16_gbe_frame_trans; + + +--MAC : tsmac3 +--port map( +-- -------------------------------------------------------------------------- +-- --------------- clock, reset, clock enable ------------------------------- +-- hclk => CLK, -- (in) host clock (100MHz) +-- txmac_clk => TX_MAC_CLK, -- (in) GbE clock (125MHz) +-- rxmac_clk => '0', -- (in) not used (no receiving on GbE) +-- reset_n => GSR_N, -- (in) global set/reset +-- txmac_clk_en => TSM_TX_CLK_EN_IN, -- (in) from SGMII core, '1' for 1GbE operation +-- rxmac_clk_en => TSM_RX_CLK_EN_IN, -- (in) from SGMII core, '1' for 1GbE operation +-- -------------------------------------------------------------------------- +-- --------------- SGMII receive interface ---------------------------------- +-- rxd => x"00", -- (in) receive data from SGMII core +-- rx_dv => '0', -- (in) data valid from SGMII core +-- rx_er => '0', -- (in) receive data error +-- col => TSM_COL_IN, -- (in) collision from SGMII core +-- crs => TSM_CRS_IN, -- (in) carrier sense from SGMII core +-- -------------------------------------------------------------------------- +-- --------------- SGMII transmit interface --------------------------------- +-- txd => CH_TXD_OUT, -- (out) transmit data to SGMII core +-- tx_en => CH_TX_EN_OUT, -- (out) transmit enable +-- tx_er => CH_TX_ER_OUT, -- (out) transmit error +-- -------------------------------------------------------------------------- +-- --------------- CPU configuration interface ------------------------------ +-- haddr => haddr, -- (in) host address bus for configuration +-- hdatain => hdataout, -- (in) host data bus for write accesses +-- hcs_n => hcs, -- (in) host chip select signal +-- hwrite_n => hwrite, -- (in) host write strobe signal +-- hread_n => hread, -- (in) host read strobe signal +-- hdataout => hdatain, -- (out) host data bus for read accesses +-- hdataout_en_n => hdataout_en, -- (out) read data valid signal +-- hready_n => hready, -- (out) data acknowledge signal +-- cpu_if_gbit_en => open, -- (out) status bit +-- -------------------------------------------------------------------------- +-- --------------- Transmit FIFO interface ---------------------------------- +-- tx_fifodata => ft_data(7 downto 0), -- (in) transmit FIFO data bus +-- tx_fifoavail => mac_fifoavail, -- (in) transmit FIFO data available +-- tx_fifoeof => mac_fifoeof, -- (in) transmit FIFO end of frame +-- tx_fifoempty => mac_fifoempty, -- (in) transmit FIFO empty +-- tx_macread => mac_tx_rd_en, -- (out) transmit FIFO read +-- tx_done => mac_tx_done, -- (out) transmit done (without errors) +-- tx_sndpaustim => x"0000", -- (in) PAUSE frame timer +-- tx_sndpausreq => '0', -- (in) PAUSE frame request +-- tx_fifoctrl => '0', -- (in) FIFO control frame ('0' = data, '1' = control) +-- tx_discfrm => open, -- (out) discard frame +-- tx_staten => open, -- (out) transmit statistics vector enable +-- tx_statvec => open, -- (out) transmit statistics vector +-- -------------------------------------------------------------------------- +-- --------------- Receive FIFO interface ----------------------------------- +-- rx_dbout => open, -- (out) receive FIFO data output +-- rx_fifo_full => '0', -- (in) receive FIFO full +-- ignore_pkt => '0', -- (in) ignore next packet +-- rx_fifo_error => open, -- (out) receive FIFO error +-- rx_stat_vector => open, -- (out) receive statistics vector +-- rx_stat_en => open, -- (out) receive statistics vector enable +-- rx_write => open, -- (out) receive FIFO write +-- rx_eof => open, -- (out) end of frame +-- rx_error => open -- (out) receive packet error +--); + + + + + + +--MAC : tsmac3 +--port map( +----------------- clock and reset port declarations ------------------ +-- hclk => LVDS_CLK_200P, +-- txmac_clk => TX_MAC_CLK, +-- rxmac_clk => '0', +-- reset_n => GSR_N, -- done +-- txmac_clk_en => TSM_TX_CLK_EN_IN, -- done +-- rxmac_clk_en => TSM_RX_CLK_EN_IN, -- done +--------------------- Input signals to the GMII ---------------- NOT USED +-- rxd => x"00", +-- rx_dv => '0', +-- rx_er => '0', +-- col => TSM_COL_IN, -- done +-- crs => TSM_CRS_IN, -- done +-- -------------------- Input signals to the CPU I/F ------------------- +-- haddr(5 downto 0) => addrSig, -- done +-- haddr(7 downto 6) => "00", +-- hdatain => macInitMemQ, -- done +-- hcs_n => hcs_n_i, -- done +-- hwrite_n => hwrite_n_i, -- done +-- hread_n => hread_n_i, -- done +------------------ Input signals to the Tx MAC FIFO I/F --------------- +-- tx_fifodata => DATA_IN(7 downto 0), -- done +-- tx_fifoavail => tx_fifoavail_i, -- done +-- tx_fifoeof => tx_fifoeof_i, -- done +-- tx_fifoempty => FifoEmpty, -- done +-- tx_sndpaustim => x"0000", +-- tx_sndpausreq => '0', +-- tx_fifoctrl => '0', -- always data frame +------------------ Input signals to the Rx MAC FIFO I/F --------------- +-- rx_fifo_full => '0', +-- ignore_pkt => '0', +---------------------- Output signals from the GMII ----------------------- +-- txd => CH_TXD_OUT, -- done +-- tx_en => CH_TX_EN_OUT, -- done +-- tx_er => CH_TX_ER_OUT, -- done +---------------------- Output signals from the CPU I/F ------------------- +-- hdataout => hdataout_i, -- done +-- hdataout_en_n => hdataout_en_n_i, -- done +-- hready_n => hready_n_i, -- done +-- cpu_if_gbit_en => gbe_enabled, -- done +------------------ Output signals from the Tx MAC FIFO I/F --------------- +-- tx_macread => FifoRd, -- done +-- tx_discfrm => tx_discfrm_i, -- not used +-- tx_staten => tx_staten_i, -- done +-- tx_statvec => tx_statvec_i, -- done +-- tx_done => tx_done_i, -- done +------------------ Output signals from the Rx MAC FIFO I/F --------------- +-- rx_fifo_error => open, +-- rx_stat_vector => open, +-- rx_dbout => open, +-- rx_write => open, +-- rx_stat_en => open, +-- rx_eof => rx_eof_i, -- done +-- rx_error => rx_error_i -- done +--); diff --git a/gbe_ecp2m/trb_net16_gbe_packet_constr.vhd b/gbe_ecp2m/trb_net16_gbe_packet_constr.vhd new file mode 100755 index 0000000..ef7d4e2 --- /dev/null +++ b/gbe_ecp2m/trb_net16_gbe_packet_constr.vhd @@ -0,0 +1,901 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; +use work.trb_net_std.all; +use work.trb_net_components.all; +use work.trb_net16_hub_func.all; + +entity trb_net16_gbe_packet_constr is +port( + RESET : in std_logic; + CLK : in std_logic; + -- ports for user logic + PC_WR_EN_IN : in std_logic; -- write into queueConstr from userLogic + PC_DATA_IN : in std_logic_vector(7 downto 0); + PC_READY_OUT : out std_logic; + PC_START_OF_SUB_IN : in std_logic; + PC_END_OF_DATA_IN : in std_logic; + -- queue and subevent layer headers + PC_SUB_SIZE_IN : in std_logic_vector(31 downto 0); -- store and swap + PC_PADDING_IN : in std_logic; -- gk 29.03.10 + PC_DECODING_IN : in std_logic_vector(31 downto 0); -- swap + PC_EVENT_ID_IN : in std_logic_vector(31 downto 0); -- swap + PC_TRIG_NR_IN : in std_logic_vector(31 downto 0); -- store and swap! + PC_QUEUE_DEC_IN : in std_logic_vector(31 downto 0); -- swap + PC_MAX_FRAME_SIZE_IN : in std_logic_vector(15 downto 0); -- DO NOT SWAP + -- FrameConstructor ports + FC_WR_EN_OUT : out std_logic; + FC_DATA_OUT : out std_logic_vector(7 downto 0); + FC_H_READY_IN : in std_logic; + FC_READY_IN : in std_logic; + FC_IP_SIZE_OUT : out std_logic_vector(15 downto 0); + FC_UDP_SIZE_OUT : out std_logic_vector(15 downto 0); + FC_IDENT_OUT : out std_logic_vector(15 downto 0); + FC_FLAGS_OFFSET_OUT : out std_logic_vector(15 downto 0); + FC_SOD_OUT : out std_logic; + FC_EOD_OUT : out std_logic; + -- debug ports + BSM_CONSTR_OUT : out std_logic_vector(3 downto 0); + BSM_LOAD_OUT : out std_logic_vector(3 downto 0); + BSM_SAVE_OUT : out std_logic_vector(3 downto 0); + DBG_SHF_EMPTY : out std_logic; + DBG_SHF_FULL : out std_logic; + DBG_SHF_WR_EN : out std_logic; + DBG_SHF_RD_EN : out std_logic; + DBG_SHF_Q : out std_logic_vector(7 downto 0); + DBG_DF_EMPTY : out std_logic; + DBG_DF_FULL : out std_logic; + DBG_DF_WR_EN : out std_logic; + DBG_DF_RD_EN : out std_logic; + DBG_DF_Q : out std_logic_vector(7 downto 0); + DBG_ALL_CTR : out std_logic_vector(4 downto 0); + DBG_SUB_CTR : out std_logic_vector(4 downto 0); + DBG_MY_CTR : out std_logic_vector(1 downto 0); + DBG_BYTES_LOADED : out std_logic_vector(15 downto 0); + DBG_SIZE_LEFT : out std_logic_vector(31 downto 0); + DBG_SUB_SIZE_TO_SAVE : out std_logic_vector(31 downto 0); + DBG_SUB_SIZE_LOADED : out std_logic_vector(31 downto 0); + DBG_SUB_BYTES_LOADED : out std_logic_vector(31 downto 0); + DBG_QUEUE_SIZE : out std_logic_vector(31 downto 0); + DBG_ACT_QUEUE_SIZE : out std_logic_vector(31 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end trb_net16_gbe_packet_constr; + +architecture trb_net16_gbe_packet_constr of trb_net16_gbe_packet_constr is + +-- FIFO for packet payload data +component fifo_64kx8 +port ( + Data : in std_logic_vector(7 downto 0); + WrClock : in std_logic; + RdClock : in std_logic; + WrEn : in std_logic; + RdEn : in std_logic; + Reset : in std_logic; + RPReset : in std_logic; + Q : out std_logic_vector(7 downto 0); + Empty : out std_logic; + Full : out std_logic +); +end component; + +-- FIFO for SubEventHeader information +component fifo_2048x8 is +port ( + Data : in std_logic_vector(7 downto 0); + WrClock : in std_logic; + RdClock : in std_logic; + WrEn : in std_logic; + RdEn : in std_logic; + Reset : in std_logic; + RPReset : in std_logic; + Q : out std_logic_vector(7 downto 0); + Empty : out std_logic; + Full : out std_logic +); +end component; + +signal df_wr_en : std_logic; +signal df_rd_en : std_logic; +signal df_q : std_logic_vector(7 downto 0); +signal df_q_reg : std_logic_vector(7 downto 0); +signal df_empty : std_logic; +signal df_full : std_logic; + +signal fc_data : std_logic_vector(7 downto 0); +signal fc_wr_en : std_logic; +signal fc_sod : std_logic; +signal fc_eod : std_logic; +signal fc_ident : std_logic_vector(15 downto 0); -- change this to own counter! +signal fc_flags_offset : std_logic_vector(15 downto 0); + +signal shf_data : std_logic_vector(7 downto 0); +signal shf_wr_en : std_logic; +signal shf_rd_en : std_logic; +signal shf_q : std_logic_vector(7 downto 0); +signal shf_empty : std_logic; +signal shf_full : std_logic; + +type constructStates is (CIDLE, SAVE_DATA, WAIT_FOR_LOAD); +signal constructCurrentState, constructNextState : constructStates; +signal constr_state : std_logic_vector(3 downto 0); +signal all_int_ctr : integer range 0 to 31; +signal all_ctr : std_logic_vector(4 downto 0); + +type saveSubStates is (SIDLE, SAVE_SIZE, SAVE_DECODING, SAVE_ID, SAVE_TRIG_NR, SAVE_TERM); +signal saveSubCurrentState, saveSubNextState : saveSubStates; +signal save_state : std_logic_vector(3 downto 0); +signal sub_int_ctr : integer range 0 to 31; +signal sub_ctr : std_logic_vector(4 downto 0); +signal my_int_ctr : integer range 0 to 3; +signal my_ctr : std_logic_vector(1 downto 0); + +type loadStates is (LIDLE, WAIT_FOR_FC, PUT_Q_LEN, PUT_Q_DEC, LOAD_SUB, PREP_DATA, LOAD_DATA, DIVIDE, LOAD_TERM, CLEANUP); +signal loadCurrentState, loadNextState: loadStates; +signal load_state : std_logic_vector(3 downto 0); + +signal queue_size : std_logic_vector(31 downto 0); -- sum of all subevents sizes plus their headers and queue headers and termination +signal queue_size_temp : std_logic_vector(31 downto 0); +signal actual_queue_size : std_logic_vector(31 downto 0); -- queue size used during loading process when queue_size is no more valid +signal bytes_loaded : std_logic_vector(15 downto 0); -- size of actual constructing frame +signal sub_size_to_save : std_logic_vector(31 downto 0); -- size of subevent to save to shf +signal sub_size_loaded : std_logic_vector(31 downto 0); -- size of subevent actually being transmitted +signal sub_bytes_loaded : std_logic_vector(31 downto 0); -- amount of bytes of actual subevent sent +signal actual_packet_size : std_logic_vector(15 downto 0); -- actual size of whole udp packet +signal size_left : std_logic_vector(31 downto 0); +signal fc_ip_size : std_logic_vector(15 downto 0); +signal fc_udp_size : std_logic_vector(15 downto 0); +signal max_frame_size : std_logic_vector(15 downto 0); +signal divide_position : std_logic_vector(1 downto 0); -- 00->data, 01->sub, 11->term +signal debug : std_logic_vector(31 downto 0); +signal pc_ready : std_logic; + +signal pc_sub_size : std_logic_vector(31 downto 0); +signal pc_trig_nr : std_logic_vector(31 downto 0); +signal pc_padding : std_logic; -- gk 29.03.10 +signal rst_after_sub_comb : std_logic; -- gk 08.04.10 +signal rst_after_sub : std_logic; -- gk 08.04.10 +signal load_int_ctr : integer range 0 to 3; -- gk 08.04.10 + +begin + +-- Fakes +debug <= (others => '0'); + +my_int_ctr <= (3 - to_integer(to_unsigned(sub_int_ctr, 2))); -- reverse byte order +load_int_ctr <= (3 - to_integer(to_unsigned(all_int_ctr, 2))); -- gk 08.04.10 + +all_ctr <= std_logic_vector(to_unsigned(all_int_ctr, all_ctr'length)); -- for debugging +sub_ctr <= std_logic_vector(to_unsigned(sub_int_ctr, sub_ctr'length)); -- for debugging +my_ctr <= std_logic_vector(to_unsigned(my_int_ctr, my_ctr'length)); -- for debugging + +pc_padding <= PC_PADDING_IN; -- gk 29.03.10 used to correct the subevent size written to subevent headers + +-- Fixed numbers + +--max_frame_size <= x"0578"; -- 1400 +max_frame_size <= PC_MAX_FRAME_SIZE_IN; + +-- Ready signal for PacketConstructor +pc_ready <= '1' when (constructCurrentState = CIDLE) and (df_empty = '1') else '0'; + +-- store event information on Start_of_Subevent +THE_EVT_INFO_STORE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if( PC_START_OF_SUB_IN = '1' ) then + pc_sub_size <= PC_SUB_SIZE_IN; + pc_trig_nr <= PC_TRIG_NR_IN; + end if; + end if; +end process; + +-- Data FIFO for incoming packet data from IPU buffer +DATA_FIFO : fifo_64kx8 +port map( + Data => PC_DATA_IN, + WrClock => CLK, + RdClock => CLK, + WrEn => df_wr_en, + RdEn => df_rd_en, + Reset => RESET, + RPReset => RESET, + Q => df_q, + Empty => df_empty, + Full => df_full +); +-- Write enable for the data FIFO +-- !!!combinatorial signal!!! +-- could be avoided as IPU2GBE does only send data in case of PC_READY. +df_wr_en <= '1' when ((PC_WR_EN_IN = '1') and (constructCurrentState /= WAIT_FOR_LOAD)) + else '0'; + +-- Output register for data FIFO +dfQProc : process(CLK) +begin + if rising_edge(CLK) then + df_q_reg <= df_q; + end if; +end process dfQProc; + +-- Construction state machine +constructMachineProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + constructCurrentState <= CIDLE; + else + constructCurrentState <= constructNextState; + end if; + end if; +end process constructMachineProc; + +constructMachine : process(constructCurrentState, PC_WR_EN_IN, PC_END_OF_DATA_IN, loadCurrentState, saveSubCurrentState, sub_int_ctr) +begin + case constructCurrentState is + when CIDLE => + constr_state <= x"0"; + if( PC_WR_EN_IN = '1' ) then + constructNextState <= SAVE_DATA; + else + constructNextState <= CIDLE; + end if; + when SAVE_DATA => + constr_state <= x"1"; + if( PC_END_OF_DATA_IN = '1' ) then + constructNextState <= WAIT_FOR_LOAD; + else + constructNextState <= SAVE_DATA; + end if; + when WAIT_FOR_LOAD => + constr_state <= x"2"; + if( (df_empty = '1') and (loadCurrentState = LIDLE) ) then -- waits until the whole packet is transmitted + constructNextState <= CIDLE; + else + constructNextState <= WAIT_FOR_LOAD; + end if; + when others => + constr_state <= x"f"; + constructNextState <= CIDLE; + end case; +end process constructMachine; + + +--*********************** +-- SUBEVENT HEADERS WRITE AND READ +--*********************** + +SUBEVENT_HEADERS_FIFO : fifo_2048x8 +port map( + Data => shf_data, + WrClock => CLK, + RdClock => CLK, + WrEn => shf_wr_en, + RdEn => shf_rd_en, + Reset => RESET, + RPReset => RESET, + Q => shf_q, + Empty => shf_empty, + Full => shf_full +); + +-- write enable for SHF +shf_wr_en <= '1' when ((saveSubCurrentState /= SIDLE) and (loadCurrentState /= PREP_DATA)) + else '0'; + +-- data multiplexing for SHF (convert 32bit LWs to 8bit) +-- CHANGED. +-- The SubEventHeader (4x 32bit is stored in [MSB:LSB] now, same byte order as data from PC. +shfDataProc : process(saveSubCurrentState, sub_size_to_save, PC_DECODING_IN, PC_EVENT_ID_IN, + pc_trig_nr, my_int_ctr, fc_data) +begin + case saveSubCurrentState is + when SIDLE => shf_data <= x"ac"; + when SAVE_SIZE => shf_data <= sub_size_to_save(my_int_ctr * 8 + 7 downto my_int_ctr * 8); + when SAVE_DECODING => shf_data <= PC_DECODING_IN(my_int_ctr * 8 + 7 downto my_int_ctr * 8); + when SAVE_ID => shf_data <= PC_EVENT_ID_IN(my_int_ctr * 8 + 7 downto my_int_ctr * 8); + when SAVE_TRIG_NR => shf_data <= pc_trig_nr(my_int_ctr * 8 + 7 downto my_int_ctr * 8); + when SAVE_TERM => shf_data <= fc_data; + when others => shf_data <= x"00"; + end case; +end process shfDataProc; + +saveSubMachineProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + saveSubCurrentState <= SIDLE; + else + saveSubCurrentState <= saveSubNextState; + end if; + end if; +end process saveSubMachineProc; + +saveSubMachine : process(saveSubCurrentState, PC_START_OF_SUB_IN, sub_int_ctr, loadCurrentState, FC_H_READY_IN) +begin + case saveSubCurrentState is + when SIDLE => + save_state <= x"0"; + if (PC_START_OF_SUB_IN = '1') then + saveSubNextState <= SAVE_SIZE; + -- this branch is dangerous! + elsif (loadCurrentState = WAIT_FOR_FC) and (FC_H_READY_IN = '1') then -- means that loadCurrentState is put_q_len + saveSubNextState <= SAVE_TERM; + else + saveSubNextState <= SIDLE; + end if; + when SAVE_SIZE => + save_state <= x"1"; + if (sub_int_ctr = 3) then + saveSubNextState <= SAVE_DECODING; + else + saveSubNextState <= SAVE_SIZE; + end if; + when SAVE_DECODING => + save_state <= x"2"; + if (sub_int_ctr = 3) then + saveSubNextState <= SAVE_ID; + else + saveSubNextState <= SAVE_DECODING; + end if; + when SAVE_ID => + save_state <= x"3"; + if (sub_int_ctr = 3) then + saveSubNextState <= SAVE_TRIG_NR; + else + saveSubNextState <= SAVE_ID; + end if; + when SAVE_TRIG_NR => + save_state <= x"4"; + if (sub_int_ctr = 3) then + saveSubNextState <= SIDLE; + else + saveSubNextState <= SAVE_TRIG_NR; + end if; + when SAVE_TERM => + save_state <= x"5"; + if (sub_int_ctr = 31) then + saveSubNextState <= SIDLE; + else + saveSubNextState <= SAVE_TERM; + end if; + when others => + save_state <= x"f"; + saveSubNextState <= SIDLE; + end case; +end process; + +-- This counter is used for breaking down 32bit information words into 8bit bytes for +-- storing them in the SHF. +-- It is also used for the termination 32byte sequence. +subIntProc: process( CLK ) +begin + if rising_edge(CLK) then + if (RESET = '1') or (saveSubCurrentState = SIDLE) then + sub_int_ctr <= 0; + elsif (sub_int_ctr = 3) and (saveSubCurrentState /= SAVE_TERM) then + sub_int_ctr <= 0; + elsif (sub_int_ctr = 31) and (saveSubCurrentState = SAVE_TERM) then + sub_int_ctr <= 0; + elsif (saveSubCurrentState /= SIDLE) and (loadCurrentState /= PREP_DATA) then + sub_int_ctr <= sub_int_ctr + 1; + end if; + end if; +end process subIntProc; + +--*********************** +-- SIZE COUNTERS FOR SAVING SIDE +--*********************** + +-- gk 29.03.10 the subevent size saved to its headers cannot contain padding bytes but they are included in pc_sub_size +-- that's why they are removed if pc_padding flag is asserted +sub_size_to_save <= x"10" + pc_sub_size when pc_padding = '0' else x"c" + pc_sub_size; -- subevent headers + data + +-- BUG HERE BUG HERE BUG HERE BUG HERE +-- gk 29.03.10 no changes here because the queue size should contain the padding bytes of subevents +queueSizeProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = CLEANUP) then + queue_size <= x"00000028"; -- + 8B for queue headers and 20B for termination + elsif (saveSubCurrentState = SAVE_SIZE) and (sub_int_ctr = 3) then + queue_size <= queue_size + pc_sub_size + x"10"; -- + 16B for each subevent headers + end if; + end if; +end process queueSizeProc; + + +--*********************** +-- LOAD DATA COMBINED WITH HEADERS INTO FC, QUEUE TRANSMISSION +--*********************** + +loadMachineProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + loadCurrentState <= LIDLE; + else + loadCurrentState <= loadNextState; + end if; + end if; +end process loadMachineProc; + +loadMachine : process(loadCurrentState, constructCurrentState, all_int_ctr, df_empty, + sub_bytes_loaded, sub_size_loaded, size_left, FC_H_READY_IN, max_frame_size, + bytes_loaded, divide_position) +begin + case loadCurrentState is + when LIDLE => + load_state <= x"0"; + if ((constructCurrentState = WAIT_FOR_LOAD) and (df_empty = '0')) then + loadNextState <= WAIT_FOR_FC; + else + loadNextState <= LIDLE; + end if; + when WAIT_FOR_FC => + load_state <= x"1"; + if (FC_H_READY_IN = '1') then + loadNextState <= PUT_Q_LEN; + else + loadNextState <= WAIT_FOR_FC; + end if; + when PUT_Q_LEN => + load_state <= x"2"; + if (all_int_ctr = 3) then + loadNextState <= PUT_Q_DEC; + else + loadNextState <= PUT_Q_LEN; + end if; + when PUT_Q_DEC => + load_state <= x"3"; + if (all_int_ctr = 3) then + loadNextState <= LOAD_SUB; + else + loadNextState <= PUT_Q_DEC; + end if; + when LOAD_SUB => + load_state <= x"4"; + if (bytes_loaded = max_frame_size - 1) then + loadNextState <= DIVIDE; + elsif (all_int_ctr = 15) then + loadNextState <= PREP_DATA; + else + loadNextState <= LOAD_SUB; + end if; + when PREP_DATA => + load_state <= x"5"; + loadNextState <= LOAD_DATA; + when LOAD_DATA => + load_state <= x"6"; + if (bytes_loaded = max_frame_size - 1) then + loadNextState <= DIVIDE; + elsif (sub_bytes_loaded = sub_size_loaded) then -- if all subevent bytes are loaded + if (size_left = x"00000021") then -- and there is no more data, only termination left + loadNextState <= LOAD_TERM; -- add termination and close packet + else -- there is more data in fifo + loadNextState <= LOAD_SUB; -- add another subevent + end if; + else + loadNextState <= LOAD_DATA; + end if; + when DIVIDE => + load_state <= x"7"; + if (FC_H_READY_IN = '1') then + if (divide_position = "00") then + loadNextState <= PREP_DATA; + elsif (divide_position = "01") then + loadNextState <= LOAD_SUB; + else + loadNextState <= LOAD_TERM; + end if; + else + loadNextState <= DIVIDE; + end if; + when LOAD_TERM => + load_state <= x"8"; + if (bytes_loaded = max_frame_size - 1) and (all_int_ctr /= 31) then + loadNextState <= DIVIDE; + elsif (all_int_ctr = 31) then + loadNextState <= CLEANUP; + else + loadNextState <= LOAD_TERM; + end if; + when CLEANUP => + load_state <= x"9"; + loadNextState <= LIDLE; + when others => + load_state <= x"f"; + loadNextState <= LIDLE; + end case; +end process loadMachine; + +dividePositionProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + divide_position <= "00"; + elsif (bytes_loaded = max_frame_size - 1) then + if (loadCurrentState = LIDLE) then + divide_position <= "00"; + elsif (loadCurrentState = LOAD_DATA) then + if (sub_bytes_loaded = sub_size_loaded) and (size_left = x"00000021") then + divide_position <= "11"; + elsif (sub_bytes_loaded = sub_size_loaded) and (size_left /= x"00000021") then + divide_position <= "01"; + else + divide_position <= "00"; + end if; + elsif (loadCurrentState = LOAD_SUB) then + if (all_int_ctr = 15) then + divide_position <= "00"; + else + divide_position <= "01"; + end if; + elsif (loadCurrentState = LOAD_TERM) then + divide_position <= "11"; + end if; + end if; + end if; +end process dividePositionProc; + +allIntCtrProc : process(CLK) +begin + if rising_edge(CLK) then + case loadCurrentState is + + when LIDLE => all_int_ctr <= 0; + + when WAIT_FOR_FC => all_int_ctr <= 0; + + when PUT_Q_LEN => + if (all_int_ctr = 3) then + all_int_ctr <= 0; + else + all_int_ctr <= all_int_ctr + 1; + end if; + + when PUT_Q_DEC => + if (all_int_ctr = 3) then + all_int_ctr <= 0; + else + all_int_ctr <= all_int_ctr + 1; + end if; + + when LOAD_SUB => + if (all_int_ctr = 15) then + all_int_ctr <= 0; + else + all_int_ctr <= all_int_ctr + 1; + end if; + + when LOAD_DATA => all_int_ctr <= 0; + + when LOAD_TERM => + if (all_int_ctr = 31) then + all_int_ctr <= 0; + else + all_int_ctr <= all_int_ctr + 1; + end if; + + when DIVIDE => null; --all_int_ctr <= all_int_ctr; + + when CLEANUP => all_int_ctr <= 0; + + when PREP_DATA => all_int_ctr <= 0; + end case; + end if; +end process allIntCtrProc; + +dfRdEnProc : process(loadCurrentState, bytes_loaded, max_frame_size, sub_bytes_loaded, + sub_size_loaded, all_int_ctr) +begin + if (loadCurrentState = LOAD_DATA) then +-- if (bytes_loaded >= max_frame_size - x"1") then +-- df_rd_en <= '0'; +-- elsif (sub_bytes_loaded >= sub_size_loaded) then +-- df_rd_en <= '0'; + if (bytes_loaded = max_frame_size - x"1") then + df_rd_en <= '0'; + elsif (sub_bytes_loaded = sub_size_loaded) then + df_rd_en <= '0'; + else + df_rd_en <= '1'; + end if; + elsif (loadCurrentState = LOAD_SUB) and (all_int_ctr = 15) and (bytes_loaded /= max_frame_size - x"1") then + df_rd_en <= '1'; + elsif (loadCurrentState = PREP_DATA) then + df_rd_en <= '1'; + else + df_rd_en <= '0'; + end if; +end process dfRdEnProc; + +shfRdEnProc : process(loadCurrentState, all_int_ctr) +begin + if (loadCurrentState = LOAD_SUB) then + shf_rd_en <= '1'; + elsif (loadCurrentState = LOAD_TERM) and (all_int_ctr < 31) then + shf_rd_en <= '1'; + elsif (loadCurrentState = PUT_Q_DEC) and (all_int_ctr = 3) then + shf_rd_en <= '1'; + else + shf_rd_en <= '0'; + end if; +end process shfRdEnProc; + + +fcWrEnProc : process(loadCurrentState) +begin + if (loadCurrentState = PUT_Q_LEN) or (loadCurrentState = PUT_Q_DEC) then + fc_wr_en <= '1'; + elsif (loadCurrentState = LOAD_SUB) or (loadCurrentState = LOAD_DATA) or (loadCurrentState = LOAD_TERM) then + fc_wr_en <= '1'; + else + fc_wr_en <= '0'; + end if; +end process fcWrEnProc; + +-- was all_int_ctr +fcDataProc : process(loadCurrentState, queue_size_temp, PC_QUEUE_DEC_IN, shf_q, df_q_reg, load_int_ctr) +begin + case loadCurrentState is + when LIDLE => fc_data <= x"af"; + when WAIT_FOR_FC => fc_data <= x"bf"; + -- gk 08.04.10 my_int_ctr changed to load_int_ctr + when PUT_Q_LEN => fc_data <= queue_size_temp(load_int_ctr * 8 + 7 downto load_int_ctr * 8); + when PUT_Q_DEC => fc_data <= PC_QUEUE_DEC_IN(load_int_ctr * 8 + 7 downto load_int_ctr * 8); + when LOAD_SUB => fc_data <= shf_q; + when PREP_DATA => fc_data <= df_q_reg; + when LOAD_DATA => fc_data <= df_q_reg; + when LOAD_TERM => fc_data <= shf_q; + when DIVIDE => fc_data <= x"cf"; + when CLEANUP => fc_data <= x"df"; + when others => fc_data <= x"00"; + end case; +end process fcDataProc; + + +--*********************** +-- SIZE COUNTERS FOR LOADING SIDE +--*********************** + +queue_size_temp <= queue_size - x"20"; -- size of data without termination + +-- gk 08.04.10 +rst_after_sub_comb <= '1' when (loadCurrentState = LIDLE) or + ((loadCurrentState = LOAD_DATA) and (sub_bytes_loaded = sub_size_loaded) and (size_left /= x"00000021")) + else '0'; + +-- gk 08.04.10 +RST_AFTER_SUB_PROC : process(CLK) +begin + if(rising_edge(CLK)) then + if(RESET = '1') then + rst_after_sub <= '0'; + else + rst_after_sub <= rst_after_sub_comb; + end if; + end if; +end process RST_AFTER_SUB_PROC; + +-- counts all bytes loaded to divide data into frames +bytesLoadedProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (loadCurrentState = DIVIDE) or (loadCurrentState = CLEANUP) then + bytes_loaded <= x"0000"; + elsif (loadCurrentState = PUT_Q_LEN) or (loadCurrentState = PUT_Q_DEC) or (loadCurrentState = LOAD_DATA) or (loadCurrentState = LOAD_SUB) or (loadCurrentState = LOAD_TERM) then + bytes_loaded <= bytes_loaded + x"1"; + end if; + end if; +end process bytesLoadedProc; + +-- size of subevent loaded from memory +subSizeLoadedProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (loadCurrentState = CLEANUP) or (rst_after_sub = '1') then -- gk 08.04.10 + sub_size_loaded <= x"00000000"; + elsif (loadCurrentState = LOAD_SUB) and (all_int_ctr < 4) then + -- was all_int_ctr + -- gk 08.04.10 my_int_ctr changed to load_int_ctr + sub_size_loaded(7 + load_int_ctr * 8 downto load_int_ctr * 8) <= shf_q; + -- gk 29.03.10 here the padding bytes have to be added to the loadedSize in order to load the correct amount of bytes from fifo + elsif (loadCurrentState = LOAD_SUB) and (all_int_ctr = 5) and (sub_size_loaded(2) = '1') then + sub_size_loaded <= sub_size_loaded + x"4"; + end if; + end if; +end process subSizeLoadedProc; + +-- counts only raw data bytes being loaded +subBytesLoadedProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (sub_bytes_loaded = sub_size_loaded) or (loadCurrentState = CLEANUP) or (rst_after_sub = '1') then -- gk 08.04.10 + sub_bytes_loaded <= x"00000011"; -- subevent headers doesnt count + elsif (loadCurrentState = LOAD_DATA) then + sub_bytes_loaded <= sub_bytes_loaded + x"1"; + end if; + end if; +end process subBytesLoadedProc; + +-- counts the size of the large udp packet +actualPacketProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (loadCurrentState = CLEANUP) then + actual_packet_size <= x"0008"; + elsif (fc_wr_en = '1') then + actual_packet_size <= actual_packet_size + x"1"; + end if; + end if; +end process actualPacketProc; + +actualQueueSizeProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = CLEANUP) then + actual_queue_size <= (others => '0'); + elsif (loadCurrentState = LIDLE) then + actual_queue_size <= queue_size; + end if; + end if; +end process actualQueueSizeProc; + +-- amount of bytes left to send in current packet +sizeLeftProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = CLEANUP) then + size_left <= (others => '0'); + elsif (loadCurrentState = LIDLE) then + size_left <= queue_size; + elsif (fc_wr_en = '1') then + size_left <= size_left - 1; + end if; + end if; +end process sizeLeftProc; + +-- HOT FIX: don't rely on CTS information, count the packets on your own. +-- In this case, we increment the fragmented packet ID with EOD from ipu2gbe. +THE_FC_IDENT_COUNTER_PROC: process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + fc_ident <= (others => '0'); + elsif (PC_END_OF_DATA_IN = '1') then + fc_ident <= fc_ident + 1; + end if; + end if; +end process THE_FC_IDENT_COUNTER_PROC; + +fc_flags_offset(15 downto 14) <= "00"; + +moreFragmentsProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (loadCurrentState = CLEANUP) then + fc_flags_offset(13) <= '0'; + elsif ((loadCurrentState = DIVIDE) and (FC_READY_IN = '1')) or ((loadCurrentState = WAIT_FOR_FC) and (FC_READY_IN = '1')) then + if ((actual_queue_size - actual_packet_size) < max_frame_size) then + fc_flags_offset(13) <= '0'; -- no more fragments + else + fc_flags_offset(13) <= '1'; -- more fragments + end if; + end if; + end if; +end process moreFragmentsProc; + +eodProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + fc_eod <= '0'; + elsif (loadCurrentState = LOAD_DATA) and (bytes_loaded = max_frame_size - 2) then + fc_eod <= '1'; + elsif (loadCurrentState = LOAD_SUB) and (bytes_loaded = max_frame_size - 2) then + fc_eod <= '1'; + elsif (loadCurrentState = LOAD_TERM) and ((bytes_loaded = max_frame_size - 2) or (all_int_ctr = 30)) then + fc_eod <= '1'; + else + fc_eod <= '0'; + end if; + end if; +end process eodProc; + +sodProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') then + fc_sod <= '0'; + elsif (loadCurrentState = WAIT_FOR_FC) and (FC_READY_IN = '1') then + fc_sod <= '1'; + elsif (loadCurrentState = DIVIDE) and (FC_READY_IN = '1') then + fc_sod <= '1'; + else + fc_sod <= '0'; + end if; + end if; +end process sodProc; + +offsetProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET = '1') or (loadCurrentState = LIDLE) or (loadCurrentState = CLEANUP) then + fc_flags_offset(12 downto 0) <= (others => '0'); + elsif ((loadCurrentState = DIVIDE) and (FC_READY_IN = '1')) then + fc_flags_offset(12 downto 0) <= actual_packet_size(15 downto 3); + end if; + end if; +end process offsetProc; + +fcIPSizeProc : process(CLK) +begin + if rising_edge(CLK) then + if (RESET= '1') then + fc_ip_size <= (others => '0'); + elsif ((loadCurrentState = DIVIDE) and (FC_READY_IN = '1')) or ((loadCurrentState = WAIT_FOR_FC) and (FC_READY_IN = '1')) then + if (size_left >= max_frame_size) then + fc_ip_size <= max_frame_size; + else + fc_ip_size <= size_left(15 downto 0); + end if; + end if; + end if; +end process fcIPSizeProc; + +fcUDPSizeProc : process(CLK) + begin + if rising_edge(CLK) then + if (RESET = '1') then + fc_udp_size <= (others => '0'); + elsif (loadCurrentState = WAIT_FOR_FC) and (FC_READY_IN = '1') then + fc_udp_size <= queue_size(15 downto 0); + end if; + end if; +end process fcUDPSizeProc; + + +-- outputs +PC_READY_OUT <= pc_ready; +FC_WR_EN_OUT <= fc_wr_en; +FC_DATA_OUT <= fc_data; +FC_IP_SIZE_OUT <= fc_ip_size; +FC_UDP_SIZE_OUT <= fc_udp_size; +FC_IDENT_OUT(15 downto 8) <= fc_ident(7 downto 0); +FC_IDENT_OUT(7 downto 0) <= fc_ident(15 downto 8); +FC_FLAGS_OFFSET_OUT <= fc_flags_offset; +FC_SOD_OUT <= fc_sod; +FC_EOD_OUT <= fc_eod; +BSM_CONSTR_OUT <= constr_state; +BSM_LOAD_OUT <= load_state; +BSM_SAVE_OUT <= save_state; +DBG_SHF_EMPTY <= shf_empty; +DBG_SHF_FULL <= shf_full; +DBG_SHF_WR_EN <= shf_wr_en; +DBG_SHF_RD_EN <= shf_rd_en; +DBG_SHF_Q <= shf_q; +DBG_DF_EMPTY <= df_empty; +DBG_DF_FULL <= df_full; +DBG_DF_WR_EN <= df_wr_en; +DBG_DF_RD_EN <= df_rd_en; +DBG_DF_Q <= df_q; +DBG_ALL_CTR <= all_ctr; +DBG_SUB_CTR <= sub_ctr; +DBG_MY_CTR <= my_ctr; +DBG_BYTES_LOADED <= bytes_loaded; +DBG_SIZE_LEFT <= size_left; +DBG_SUB_SIZE_TO_SAVE <= sub_size_to_save; +DBG_SUB_SIZE_LOADED <= sub_size_loaded; +DBG_SUB_BYTES_LOADED <= sub_bytes_loaded; +DBG_QUEUE_SIZE <= queue_size; +DBG_ACT_QUEUE_SIZE <= actual_queue_size; + +DEBUG_OUT <= debug; + +end trb_net16_gbe_packet_constr; \ No newline at end of file diff --git a/gbe_ecp2m/trb_net16_ipu2gbe.vhd b/gbe_ecp2m/trb_net16_ipu2gbe.vhd new file mode 100755 index 0000000..0507ccc --- /dev/null +++ b/gbe_ecp2m/trb_net16_ipu2gbe.vhd @@ -0,0 +1,898 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +USE IEEE.numeric_std.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; +use IEEE.std_logic_arith.all; + +library work; + +entity trb_net16_ipu2gbe is +port( + CLK : in std_logic; + RESET : in std_logic; + -- IPU interface directed toward the CTS + CTS_NUMBER_IN : in std_logic_vector (15 downto 0); + CTS_CODE_IN : in std_logic_vector (7 downto 0); + CTS_INFORMATION_IN : in std_logic_vector (7 downto 0); + CTS_READOUT_TYPE_IN : in std_logic_vector (3 downto 0); + CTS_START_READOUT_IN : in std_logic; + CTS_READ_IN : in std_logic; + CTS_DATA_OUT : out std_logic_vector (31 downto 0); + CTS_DATAREADY_OUT : out std_logic; + CTS_READOUT_FINISHED_OUT : out std_logic; --no more data, end transfer, send TRM + CTS_LENGTH_OUT : out std_logic_vector (15 downto 0); + CTS_ERROR_PATTERN_OUT : out std_logic_vector (31 downto 0); + -- Data from Frontends + FEE_DATA_IN : in std_logic_vector (15 downto 0); + FEE_DATAREADY_IN : in std_logic; + FEE_READ_OUT : out std_logic; + FEE_BUSY_IN : in std_logic; + FEE_STATUS_BITS_IN : in std_logic_vector (31 downto 0); + -- slow control interface + START_CONFIG_OUT : out std_logic; -- reconfigure MACs/IPs/ports/packet size + BANK_SELECT_OUT : out std_logic_vector(3 downto 0); -- configuration page address + CONFIG_DONE_IN : in std_logic; -- configuration finished + DATA_GBE_ENABLE_IN : in std_logic; -- IPU data is forwarded to GbE + DATA_IPU_ENABLE_IN : in std_logic; -- IPU data is forwarded to CTS / TRBnet + MULTI_EVT_ENABLE_IN : in std_logic; -- enable multi event packets + MAX_MESSAGE_SIZE_IN : in std_logic_vector(31 downto 0); -- the maximum size of one HadesQueue -- gk 08.04.10 + -- PacketConstructor interface + PC_WR_EN_OUT : out std_logic; + PC_DATA_OUT : out std_logic_vector (7 downto 0); + PC_READY_IN : in std_logic; + PC_SOS_OUT : out std_logic; + PC_EOD_OUT : out std_logic; + PC_SUB_SIZE_OUT : out std_logic_vector(31 downto 0); + PC_TRIG_NR_OUT : out std_logic_vector(31 downto 0); + PC_PADDING_OUT : out std_logic; + -- Debug + BSM_SAVE_OUT : out std_logic_vector(3 downto 0); + BSM_LOAD_OUT : out std_logic_vector(3 downto 0); + DBG_REM_CTR_OUT : out std_logic_vector(3 downto 0); + DBG_CTS_CTR_OUT : out std_logic_vector(2 downto 0); + DBG_SF_WCNT_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RCNT_OUT : out std_logic_vector(16 downto 0); + DBG_SF_DATA_OUT : out std_logic_vector(15 downto 0); + DBG_SF_RD_EN_OUT : out std_logic; + DBG_SF_WR_EN_OUT : out std_logic; + DBG_SF_EMPTY_OUT : out std_logic; + DBG_SF_AEMPTY_OUT : out std_logic; + DBG_SF_FULL_OUT : out std_logic; + DBG_SF_AFULL_OUT : out std_logic; + DEBUG_OUT : out std_logic_vector(31 downto 0) +); +end entity; + +architecture trb_net16_ipu2gbe of trb_net16_ipu2gbe is + +component fifo_32kx16x8_mb +port( + Data : in std_logic_vector(15 downto 0); + WrClock : in std_logic; + RdClock : in std_logic; + WrEn : in std_logic; + RdEn : in std_logic; + Reset : in std_logic; + RPReset : in std_logic; + AmEmptyThresh : in std_logic_vector(15 downto 0); + AmFullThresh : in std_logic_vector(14 downto 0); + Q : out std_logic_vector(7 downto 0); + WCNT : out std_logic_vector(15 downto 0); + RCNT : out std_logic_vector(16 downto 0); + Empty : out std_logic; + AlmostEmpty : out std_logic; + Full : out std_logic; + AlmostFull : out std_logic +); +end component; + +type saveStates is (SIDLE, SAVE_EVT_ADDR, WAIT_FOR_DATA, SAVE_DATA, ADD_SUBSUB1, ADD_SUBSUB2, ADD_SUBSUB3, ADD_SUBSUB4, TERMINATE, SCLOSE); +signal saveCurrentState, saveNextState : saveStates; +signal state : std_logic_vector(3 downto 0); +signal data_req_comb : std_logic; +signal data_req : std_logic; -- request data signal, will be used for fee_read generation +signal rst_saved_ctr_comb : std_logic; +signal rst_saved_ctr : std_logic; + +signal fee_read_comb : std_logic; +signal fee_read : std_logic; -- fee_read signal +signal saved_ctr : std_logic_vector(16 downto 0); +signal ce_saved_ctr : std_logic; + +-- header data +signal cts_rnd : std_logic_vector(15 downto 0); +signal cts_rnd_saved : std_logic; +signal cts_trg : std_logic_vector(15 downto 0); +signal cts_trg_saved : std_logic; +signal cts_len : std_logic_vector(16 downto 0); +signal cts_len_saved : std_logic; + +-- CTS interface +signal cts_error_pattern : std_logic_vector(31 downto 0); +signal cts_length : std_logic_vector(15 downto 0); +signal cts_readout_finished : std_logic; +signal cts_dataready : std_logic; +signal cts_data : std_logic_vector(31 downto 0); + +-- Split FIFO signals +signal sf_data : std_logic_vector(15 downto 0); +signal sf_wr_en_comb : std_logic; +signal sf_wr_en : std_logic; -- write signal for FIFO +signal sf_rd_en_comb : std_logic; +signal sf_rd_en : std_logic; -- read signal for FIFO +signal sf_rd_valid_comb : std_logic; +signal sf_rd_valid : std_logic; +signal sf_wcnt : std_logic_vector(15 downto 0); +signal sf_rcnt : std_logic_vector(16 downto 0); +signal sf_empty : std_logic; +signal sf_aempty : std_logic; +signal sf_full : std_logic; +signal sf_afull : std_logic; + +------------------------------------------------------------------- +type loadStates is (LIDLE, INIT, REMOVE, CALCA, CALCB, LOAD, PAD0, PAD1, PAD2, PAD3, LOAD_SUBSUB, CALCC, CLOSE, WAIT_PC); +signal loadCurrentState, loadNextState : loadStates; +signal state2 : std_logic_vector(3 downto 0); + +signal rem_ctr : std_logic_vector(3 downto 0); -- counter for stripping / storing header data +signal rst_rem_ctr_comb : std_logic; +signal rst_rem_ctr : std_logic; -- reset the remove counter +signal rst_regs_comb : std_logic; +signal rst_regs : std_logic; -- reset storage registers +signal rem_phase_comb : std_logic; +signal rem_phase : std_logic; -- header remove phase +signal data_phase_comb : std_logic; +signal data_phase : std_logic; -- data transport phase from split fifo to PC +signal pad_phase_comb : std_logic; +signal pad_phase : std_logic; -- padding phase +signal calc_pad_comb : std_logic; +signal calc_pad : std_logic; -- check if padding bytes need to be added to PC_SUB_SIZE +signal pad_data_comb : std_logic; +signal pad_data : std_logic; -- reset PC_DATA register to known padding byte value + +signal pc_sos_comb : std_logic; +signal pc_sos : std_logic; -- start of data signal +signal pc_eod_comb : std_logic; +signal pc_eod : std_logic; -- end of data signal + +signal ce_rem_ctr_comb : std_logic; +signal ce_rem_ctr : std_logic; -- count enable for remove counter +signal remove_done_comb : std_logic; +signal remove_done : std_logic; -- end of header stripping process +signal read_done_comb : std_logic; +signal read_done : std_logic; -- end of data phase (read phase from SF) + +signal pc_data : std_logic_vector(7 downto 0); +signal pc_data_q : std_logic_vector(7 downto 0); +signal pc_trig_nr : std_logic_vector(15 downto 0); +signal pc_sub_size : std_logic_vector(17 downto 0); +signal read_size : std_logic_vector(17 downto 0); -- number of byte to be read from split fifo +signal padding_needed : std_logic; +signal pc_wr_en_comb : std_logic; +signal pc_wr_en_q : std_logic; +signal pc_wr_en_qq : std_logic; +signal pc_wr_en_qqq : std_logic; +signal pc_eod_q : std_logic; +signal pc_eod_qq : std_logic; + +signal debug : std_logic_vector(31 downto 0); + +-- gk +signal bank_select : std_logic_vector(3 downto 0); +signal save_addr_comb : std_logic; +signal save_addr : std_logic; +signal addr_saved_comb : std_logic; +signal addr_saved : std_logic; +signal start_config : std_logic; +signal config_done : std_logic; +signal add_sub_state : std_logic; +signal add_sub_state_comb : std_logic; +signal add_sub_ctr : std_logic_vector(3 downto 0); +signal load_sub : std_logic; +signal load_sub_comb : std_logic; +signal load_sub_done : std_logic; +signal load_sub_done_comb : std_logic; +signal load_sub_ctr : std_logic_vector(3 downto 0); +signal load_sub_ctr_comb : std_logic; +signal actual_message_size : std_logic_vector(31 downto 0); +signal rst_msg : std_logic; +signal rst_msg_comb : std_logic; + +begin + +-- Fake signals +--START_CONFIG_OUT <= '0'; -- gk 27.03.10 +BANK_SELECT_OUT <= bank_select; -- gk 27.03.10 +START_CONFIG_OUT <= start_config; -- gk 27.03.10 +config_done <= CONFIG_DONE_IN; -- gk 29.03.10 +-- gk 27.03.10 +bank_select_proc : process( CLK ) +begin + if rising_edge( CLK ) then + -- gk 29.03.10 for debug only: should round robin over 4 addresses with each subevent +-- if( (RESET = '1') or (bank_select > "0011") ) then +-- bank_select <= "0000"; +-- elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then +-- bank_select <= bank_select + x"1"; +-- end if; + -- gk 29.03.10 + if( (RESET = '1') or (rst_regs = '1') ) then + bank_select <= "0000"; + elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then + bank_select <= CTS_INFORMATION_IN(3 downto 0); + end if; + end if; +end process bank_select_proc; + +-- gk 29.03.10 +start_config_proc : process( CLK ) +begin + if rising_edge( CLK ) then + if( (RESET = '1') or (rst_regs = '1') or (config_done = '1') ) then + start_config <= '0'; + elsif( (sf_rd_en = '1') and (rem_ctr = x"2") ) then + start_config <= '1'; + end if; + end if; +end process start_config_proc; + +-- CTS interface signals +cts_error_pattern <= (others => '0'); -- FAKE + +cts_length <= x"0000"; -- length of data payload is always 0 +cts_data <= b"0001" & cts_rnd(11 downto 0) & cts_trg; -- reserved bits = '0', pack bit = '1' + +cts_readout_finished <= '1' when (saveCurrentState = SCLOSE) else '0'; + +cts_dataready <= '1' when ((saveCurrentState = SAVE_DATA) and (FEE_BUSY_IN = '0')) or (saveCurrentState = TERMINATE) + else '0'; + +-- Byte swapping... done here. TAKE CARE! +-- The split FIFO is in natural bus order (i.e. Motorola style, [15:0]). This means that the two bytes +-- on the write side need to be swapped to appear in GbE style (i.e. Intel style) on the 8bit port. +-- Please mind that PC_SUB_SIZE and PC_TRIG_NR stay in a human readable format, and need to be byteswapped +-- for GbE inside the packet constructor. +-- +-- Long live the Endianess! + +-- Sync all critical pathes +THE_SYNC_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + --sf_data <= FEE_DATA_IN; -- gk 27.03.10 moved out to a process + sf_wr_en <= sf_wr_en_comb; + ce_rem_ctr <= ce_rem_ctr_comb; + sf_rd_en <= sf_rd_en_comb; + fee_read <= fee_read_comb; + read_done <= read_done_comb; + pc_eod_qq <= pc_eod_q; + pc_eod_q <= pc_eod; + pc_wr_en_qqq <= pc_wr_en_qq; + pc_wr_en_qq <= pc_wr_en_q; + pc_wr_en_q <= pc_wr_en_comb; + end if; +end process THE_SYNC_PROC; + +-- gk 27.03.10 data selector for sf to write the evt builder address on top of data +SF_DATA_PROC : process( CLK ) +begin + if( rising_edge(CLK) ) then + if( save_addr = '1' ) then + sf_data(3 downto 0) <= CTS_INFORMATION_IN(3 downto 0); -- only last 4 bits are the evt builder address + sf_data(15 downto 4) <= x"abc"; + -- gk 29.03.10 four entries to save the fee_status into sf for the subsubevent + elsif( (add_sub_state = '1') and (add_sub_ctr = x"0") ) then + sf_data <= x"5555"; + elsif( (add_sub_state = '1') and (add_sub_ctr = x"1") ) then + sf_data <= x"0001"; + elsif( (add_sub_state = '1') and (add_sub_ctr = x"2") ) then + sf_data <= FEE_STATUS_BITS_IN(31 downto 16); + elsif( (add_sub_state = '1') and (add_sub_ctr = x"3") ) then + sf_data <= FEE_STATUS_BITS_IN(15 downto 0); + else + sf_data <= FEE_DATA_IN; + end if; + end if; +end process SF_DATA_PROC; + +-- combinatorial read signal for the FEE data interface, DO NOT USE DIRECTLY +fee_read_comb <= '1' when ( (sf_afull = '0') and (data_req = '1') and (DATA_GBE_ENABLE_IN = '1') ) -- GbE enabled + else '0'; + +-- combinatorial write signal for the split FIFO, DO NOT USE DIRECTLY +-- gk 27.03.10 +--sf_wr_en_comb <= '1' when ( (fee_read = '1') and (FEE_DATAREADY_IN = '1') and (DATA_GBE_ENABLE_IN = '1') ) -- GbE enabled +-- else '0'; +sf_wr_en_comb <= '1' when ( (fee_read = '1') and (FEE_DATAREADY_IN = '1') and (DATA_GBE_ENABLE_IN = '1') ) or -- GbE enabled + (save_addr = '1') or + (add_sub_state = '1') -- gk 29.03.10 save the subsubevent + else '0'; + +-- Counter for header word storage +THE_CTS_SAVED_CTR: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + saved_ctr <= (others => '0'); + elsif( ce_saved_ctr = '1' ) then + saved_ctr <= saved_ctr + 1; + end if; + end if; +end process THE_CTS_SAVED_CTR; + +-- gk 27.03.10 do not count evt builder address as saved ipu bytes +--ce_saved_ctr <= sf_wr_en; +ce_saved_ctr <= '0' when addr_saved = '1' else sf_wr_en; + +-- Statemachine for reading data payload, handling IPU channel and storing data in the SPLIT_FIFO +saveMachineProc: process( CLK ) +begin + if rising_edge(CLK) then + if RESET = '1' then + saveCurrentState <= SIDLE; + data_req <= '0'; + rst_saved_ctr <= '0'; + save_addr <= '0'; -- gk 27.03.10 + addr_saved <= '0'; -- gk 27.03.10 + add_sub_state <= '0'; -- gk 29.03.10 + else + saveCurrentState <= saveNextState; + data_req <= data_req_comb; + rst_saved_ctr <= rst_saved_ctr_comb; + save_addr <= save_addr_comb; -- gk 27.03.10 + addr_saved <= addr_saved_comb; -- gk 27.03.10 + add_sub_state <= add_sub_state_comb; -- gk 29.03.10 + end if; + end if; +end process saveMachineProc; + +saveMachine: process( saveCurrentState, CTS_START_READOUT_IN, FEE_BUSY_IN, CTS_READ_IN ) +begin + saveNextState <= SIDLE; + data_req_comb <= '0'; + rst_saved_ctr_comb <= '0'; + save_addr_comb <= '0'; -- gk 27.03.10 + addr_saved_comb <= '0'; -- gk 27.03.10 + add_sub_state_comb <= '0'; -- gk 29.03.10 + case saveCurrentState is + when SIDLE => + state <= x"0"; + if (CTS_START_READOUT_IN = '1') then + saveNextState <= SAVE_EVT_ADDR; --WAIT_FOR_DATA; -- gk 27.03.10 + data_req_comb <= '1'; + rst_saved_ctr_comb <= '1'; + else + saveNextState <= SIDLE; + end if; + -- gk 27.03.10 + when SAVE_EVT_ADDR => + state <= x"5"; + saveNextState <= WAIT_FOR_DATA; + data_req_comb <= '1'; + save_addr_comb <= '1'; + when WAIT_FOR_DATA => + state <= x"1"; + if (FEE_BUSY_IN = '1') then + saveNextState <= SAVE_DATA; + data_req_comb <= '1'; + else + saveNextState <= WAIT_FOR_DATA; + data_req_comb <= '1'; + end if; + addr_saved_comb <= '1'; -- gk 27.03.10 + when SAVE_DATA => + state <= x"2"; + if (FEE_BUSY_IN = '0') then + saveNextState <= TERMINATE; + else + saveNextState <= SAVE_DATA; + data_req_comb <= '1'; + end if; + when TERMINATE => + state <= x"3"; + if (CTS_READ_IN = '1') then + saveNextState <= SCLOSE; + else + saveNextState <= TERMINATE; + end if; + when SCLOSE => + state <= x"4"; + if (CTS_START_READOUT_IN = '0') then + saveNextState <= ADD_SUBSUB1; --SIDLE; -- gk 29.03.10 + else + saveNextState <= SCLOSE; + end if; + -- gk 29.03.10 new states during which the subsub bytes are saved + when ADD_SUBSUB1 => + state <= x"6"; + add_sub_state_comb <= '1'; + saveNextState <= ADD_SUBSUB2; + when ADD_SUBSUB2 => + state<= x"7"; + add_sub_state_comb <= '1'; + saveNextState <= ADD_SUBSUB3; + when ADD_SUBSUB3 => + state<= x"8"; + add_sub_state_comb <= '1'; + saveNextState <= ADD_SUBSUB4; + when ADD_SUBSUB4 => + state<= x"9"; + add_sub_state_comb <= '1'; + saveNextState <= SIDLE; + when others => + state <= x"f"; + saveNextState <= SIDLE; + end case; +end process saveMachine; + +-- gk 29.03.10 +ADD_SUB_CTR_PROC : process( CLK ) +begin + if( rising_edge( CLK ) ) then + if( (RESET = '1') or (rst_saved_ctr = '1') ) then + add_sub_ctr <= (others => '0'); + elsif( add_sub_state = '1' ) then + add_sub_ctr <= add_sub_ctr + 1; + end if; + end if; +end process ADD_SUB_CTR_PROC; + +-- save triggerRnd from incoming data for cts response +CTS_RND_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_rnd <= (others => '0'); + cts_rnd_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"000") and (sf_wr_en = '1') and (cts_rnd_saved = '0') ) then + cts_rnd <= sf_data; + cts_rnd_saved <= '1'; + end if; + end if; +end process CTS_RND_PROC; + +-- save triggerNr from incoming data for cts response +CTS_TRG_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_trg <= (others => '0'); + cts_trg_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"001") and (sf_wr_en = '1') and (cts_trg_saved = '0') ) then + cts_trg <= sf_data; + cts_trg_saved <= '1'; + end if; + end if; +end process CTS_TRG_PROC; + +-- save size from incoming data for cts response (future) and to get rid of padding +CTS_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_saved_ctr = '1') ) then + cts_len <= (others => '0'); + cts_len_saved <= '0'; + elsif( (saved_ctr(2 downto 0) = b"010") and (sf_wr_en = '1') and (cts_len_saved = '0') ) then + cts_len(16 downto 1) <= sf_data; -- change from 32b words to 16b words + cts_len(0) <= '0'; + elsif( (saved_ctr(2 downto 0) = b"011") and (cts_len_saved = '0') ) then + cts_len <= cts_len + x"4"; + cts_len_saved <= '1'; + end if; + end if; +end process CTS_SIZE_PROC; + +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- Split FIFO +THE_SPLIT_FIFO: fifo_32kx16x8_mb +port map( + -- Byte swapping for correct byte order on readout side of FIFO + Data(15 downto 8) => sf_data(7 downto 0), + Data(7 downto 0) => sf_data(15 downto 8), + WrClock => CLK, + RdClock => CLK, + WrEn => sf_wr_en, + RdEn => sf_rd_en, + Reset => RESET, + RPReset => RESET, + AmEmptyThresh => b"0000_0000_0000_0010", -- one byte ahead + AmFullThresh => b"111_1111_1110_1111", -- 0x7fef = 32751 + Q => pc_data, --open, + WCNT => sf_wcnt, + RCNT => sf_rcnt, + Empty => sf_empty, + AlmostEmpty => sf_aempty, + Full => sf_full, + AlmostFull => sf_afull +); + +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- write signal for PC data +pc_wr_en_comb <= (data_phase and sf_rd_en) or pad_phase or (load_sub and sf_rd_en); -- gk 30.03.10 + +-- FIFO data delay process (also forces padding bytes to known value) +THE_DATA_DELAY_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if( pad_data = '1' ) then + pc_data_q <= x"aa"; -- padding for 64bit + else + pc_data_q <= pc_data; + end if; + end if; +end process THE_DATA_DELAY_PROC; + +-- Statemachine for reading the data payload from the SPLIT_FIFO and feeding +-- it into the packet constructor +loadMachineProc : process(CLK) +begin + if rising_edge(CLK) then + if RESET = '1' then + loadCurrentState <= LIDLE; + rst_rem_ctr <= '0'; + rem_phase <= '0'; + calc_pad <= '0'; + data_phase <= '0'; + pad_phase <= '0'; + pc_sos <= '0'; + pc_eod <= '0'; + rst_regs <= '0'; + pad_data <= '0'; + load_sub <= '0'; -- gk 30.03.10 + rst_msg <= '0'; -- gk 08.04.10 + else + loadCurrentState <= loadNextState; + rst_rem_ctr <= rst_rem_ctr_comb; + rem_phase <= rem_phase_comb; + calc_pad <= calc_pad_comb; + data_phase <= data_phase_comb; + pad_phase <= pad_phase_comb; + pc_sos <= pc_sos_comb; + pc_eod <= pc_eod_comb; + rst_regs <= rst_regs_comb; + pad_data <= pad_data_comb; + load_sub <= load_sub_comb; -- gk 30.03.10 + rst_msg <= rst_msg_comb; -- gk 08.04.10 + end if; + end if; +end process loadMachineProc; + +sf_rd_en_comb <= '1' when ( (sf_aempty = '0') and (rem_phase = '1') and (remove_done = '0') ) or + ( (sf_aempty = '0') and (data_phase = '1') and (read_done = '0') ) or + ( (sf_aempty = '0') and (load_sub = '1') and (load_sub_done = '0') ) -- gk 30.03.10 + else '0'; + +ce_rem_ctr_comb <= '1' when ( (sf_aempty = '0') and (rem_phase = '1') and ( remove_done = '0') ) + else '0'; + +loadMachine : process( loadCurrentState, sf_aempty, remove_done, read_done, padding_needed, PC_READY_IN, load_sub_done ) +begin + loadNextState <= LIDLE; + rst_rem_ctr_comb <= '0'; + rem_phase_comb <= '0'; + calc_pad_comb <= '0'; + data_phase_comb <= '0'; + pad_phase_comb <= '0'; + pc_sos_comb <= '0'; + pc_eod_comb <= '0'; + rst_regs_comb <= '0'; + pad_data_comb <= '0'; + load_sub_comb <= '0'; -- gk 30.03.10 + rst_msg_comb <= '0'; -- gk 08.04.10 + case loadCurrentState is + when LIDLE => + state2 <= x"0"; + if( (sf_aempty = '0') and (PC_READY_IN = '1') ) then + loadNextState <= INIT; + rst_rem_ctr_comb <= '1'; + rst_regs_comb <= '1'; + rst_msg_comb <= '1'; -- gk 08.04.10 + else + loadNextState <= LIDLE; + end if; + when INIT => + state2 <= x"1"; + loadNextState <= REMOVE; + rem_phase_comb <= '1'; + -- gk 08.04.10 changed to gather more subevents into one queue + when REMOVE => + state2 <= x"2"; + if( remove_done = '1' ) then + if(actual_message_size + pc_sub_size < MAX_MESSAGE_SIZE_IN) then + loadNextState <= CALCA; + calc_pad_comb <= '1'; + else + loadNextState <= CALCC; + end if; + else + loadNextState <= REMOVE; + rem_phase_comb <= '1'; + end if; + when CALCA => + state2 <= x"3"; + loadNextState <= CALCB; + pc_sos_comb <= '1'; + when CALCB => + -- we need a branch in case of length "0"!!!! + state2 <= x"4"; + loadNextState <= LOAD; + data_phase_comb <= '1'; + when LOAD => + state2 <= x"5"; + -- gk 31.03.10 after loading subevent data read the subsubevent from sf + if ( read_done = '1' ) then + loadNextState <= LOAD_SUBSUB; + -- gk 31.03.10 moved to the load_subsub state +-- if ( (read_done = '1') and (padding_needed = '0') ) then +-- loadNextState <= LOAD_SUBSUB; --CALCC; --gk 30.03.10 +-- elsif( (read_done = '1') and (padding_needed = '1') ) then +-- loadNextState <= PAD0; +-- pad_phase_comb <= '1'; + else + loadNextState <= LOAD; + data_phase_comb <= '1'; + end if; + -- gk 31.03.10 + when LOAD_SUBSUB => + state2 <= x"d"; + if( load_sub_done = '1' ) then + if( padding_needed = '0' ) then + loadNextState <= INIT; --CALCC; -- gk 08.04.10 + rst_rem_ctr_comb <= '1'; -- gk 08.04.10 + rst_regs_comb <= '1'; -- gk 08.04.10 + else + loadNextState <= PAD0; + pad_phase_comb <= '1'; + end if; + else + loadNextState <= LOAD_SUBSUB; + load_sub_comb <= '1'; + end if; + when PAD0 => + state2 <= x"6"; + loadNextState <= PAD1; + pad_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD1 => + state2 <= x"7"; + loadNextState <= PAD2; + pad_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD2 => + state2 <= x"8"; + loadNextState <= PAD3; + pad_phase_comb <= '1'; + pad_data_comb <= '1'; + when PAD3 => + state2 <= x"9"; + loadNextState <= INIT; --CALCC; --LOAD_SUBSUB; --CALCC; -- gk 30.03.10 -- gk 31.03.10 -- gk 08.04.10 + pad_data_comb <= '1'; + rst_rem_ctr_comb <= '1'; -- gk 08.04.10 + rst_regs_comb <= '1'; -- gk 08.04.10 + -- gk 31.03.10 the load_subsub state moved straight after load and before padding + -- gk 30.03.10 +-- when LOAD_SUBSUB => +-- state2 <= x"d"; +-- if( load_sub_done = '1' ) then +-- loadNextState <= CALCC; +-- else +-- loadNextState <= LOAD_SUBSUB; +-- load_sub_comb <= '1'; +-- end if; + when CALCC => + state2 <= x"a"; + loadNextState <= CLOSE; + pc_eod_comb <= '1'; + when CLOSE => + state2 <= x"b"; + loadNextState <= WAIT_PC; + --rst_regs_comb <= '1'; -- gk 08.04.10 + rst_msg_comb <= '1'; -- gk 08.04.10 + when WAIT_PC => + state2 <= x"c"; + if( PC_READY_IN = '1' ) then + loadNextState <= CALCA; --LIDLE; -- gk 08.04.10 + calc_pad_comb <= '1'; -- gk 08.04.10 + else + loadNextState <= WAIT_PC; + end if; + when others => + state2 <= x"f"; + loadNextState <= LIDLE; + end case; +end process loadMachine; + +-- gk 30.03.10 +load_sub_ctr_comb <= '1' when ( (load_sub = '1') and (load_sub_done = '0') and (sf_aempty = '0') ) + else '0'; + +-- gk 30.03.10 +LOAD_SUB_CTR_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_regs = '1') ) then -- gk 08.04.10 + load_sub_ctr <= (others => '0'); + elsif( (load_sub_ctr_comb = '1') ) then + load_sub_ctr <= load_sub_ctr + 1; + end if; + end if; +end process LOAD_SUB_CTR_PROC; + +-- gk 30.03.10 +load_sub_done_comb <= '1' when (load_sub_ctr = x"7") else '0'; + +-- gk 30.03.10 +LOAD_SUB_DONE_PROC : process(CLK) +begin + if rising_edge(CLK) then + if ( (RESET = '1') or (rst_regs = '1') ) then -- gk 08.04.10 + load_sub_done <= '0'; + else + load_sub_done <= load_sub_done_comb; + end if; + end if; +end process LOAD_SUB_DONE_PROC; + +-- Counter for stripping the unneeded parts of the data stream, and saving the important parts +THE_REMOVE_CTR: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + rem_ctr <= (others => '0'); + elsif( (ce_rem_ctr = '1') ) then + rem_ctr <= rem_ctr + 1; + end if; + end if; +end process THE_REMOVE_CTR; + +remove_done_comb <= '1' when ( rem_ctr = x"8" ) else '0'; --( rem_ctr = x"6" ) else '0'; -- gk 29.03.10 two more for evt address + +THE_REM_DONE_SYNC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + remove_done <= '0'; + else + remove_done <= remove_done_comb; + end if; + end if; +end process THE_REM_DONE_SYNC; + +-- extract the trigger number from splitfifo data +THE_TRG_NR_PROC: process( CLK ) +begin + if rising_edge(CLK) then + if ( (RESET = '1') or (rst_regs = '1') ) then + pc_trig_nr <= (others => '0'); + elsif( (sf_rd_en = '1') and (rem_ctr = x"6") ) then -- x"4" gk 29.03.10 + pc_trig_nr(7 downto 0) <= pc_data; + elsif( (sf_rd_en = '1') and (rem_ctr = x"5") ) then -- x"3" gk 29.03.10 + pc_trig_nr(15 downto 8) <= pc_data; + end if; + end if; +end process THE_TRG_NR_PROC; + +-- check for padding +THE_PADDING_NEEDED_PROC: process( CLK ) +begin + if rising_edge(CLK) then + if ( (RESET = '1') or (rst_regs = '1') ) then + padding_needed <= '0'; + elsif( (remove_done = '1') and (pc_sub_size(2) = '1') ) then + padding_needed <= '1'; + elsif( (remove_done = '1') and (pc_sub_size(2) = '0') ) then + padding_needed <= '0'; + end if; + end if; +end process THE_PADDING_NEEDED_PROC; + +-- extract the subevent size from the splitfifo data, convert it from 32b to 8b units, +-- and in case of padding needed increase it accordingly +THE_SUB_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_regs = '1') ) then + pc_sub_size <= (others => '0'); + elsif( (sf_rd_en = '1') and (rem_ctr = x"8") ) then -- x"6" gk 29.03.10 + pc_sub_size(9 downto 2) <= pc_data; + elsif( (sf_rd_en = '1') and (rem_ctr = x"7") ) then -- x"5" gk 29.03.10 + pc_sub_size(17 downto 10) <= pc_data; + -- gk 30.03.10 bug fixed in the way that is written below + -- gk 27.03.10 should be corrected by sending padding_needed signal to pc and take care of it when setting sub_size_to_save + elsif( (calc_pad = '1') and (padding_needed = '1') ) then + pc_sub_size <= pc_sub_size + 4 + 8; -- BUG: SubEvtSize does NOT include 64bit padding!!! + elsif( (calc_pad = '1') and (padding_needed = '0') ) then + pc_sub_size <= pc_sub_size + 8; + end if; + end if; +end process THE_SUB_SIZE_PROC; + +-- number of bytes to read from split fifo +THE_READ_SIZE_PROC: process( CLK ) +begin + if( rising_edge(CLK) ) then + if ( (RESET = '1') or (rst_rem_ctr = '1') ) then + read_size <= (others => '0'); + elsif( (sf_rd_en = '1') and (rem_ctr = x"8") ) then -- x"6" gk 29.03.10 + read_size(9 downto 2) <= pc_data; + elsif( (sf_rd_en = '1') and (rem_ctr = x"7") ) then -- x"5" gk 29.03.10 + read_size(17 downto 10) <= pc_data; +-- elsif( ((calc_pad = '1') and (read_done = '0')) ) then +-- read_size <= read_size - 2; + elsif( ((sf_rd_en = '1') and (data_phase = '1')) ) then + read_size <= read_size - 1; + end if; + end if; +end process THE_READ_SIZE_PROC; + +ACTUAL_MSG_SIZE_PROC : process(CLK) +begin + if(rising_edge(CLK)) then + if( (RESET = '1') or (rst_msg = '1') ) then + actual_message_size <= (others => '0'); + elsif( (calc_pad = '1') and (padding_needed = '1') ) then + actual_message_size <= actual_message_size + pc_sub_size + 4 + 8; + elsif( (calc_pad = '1') and (padding_needed = '0') ) then + actual_message_size <= actual_message_size + pc_sub_size + 8; + end if; + end if; +end process ACTUAL_MSG_SIZE_PROC; + +read_done_comb <= '1' when (read_size < 3 ) else '0'; -- "2" + +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------ + +-- Debug signals +debug(31) <= remove_done; +debug(30) <= read_done; +debug(29) <= ce_rem_ctr; +debug(28) <= rst_rem_ctr; +debug(27) <= rst_regs; +debug(26) <= rem_phase; +debug(25) <= data_phase; +debug(24) <= pad_phase; +debug(23) <= pad_data; +debug(22 downto 17) <= (others => '0'); +debug(16 downto 0) <= saved_ctr; + +-- Outputs +FEE_READ_OUT <= fee_read; +CTS_ERROR_PATTERN_OUT <= cts_error_pattern; +CTS_DATA_OUT <= cts_data; +CTS_DATAREADY_OUT <= cts_dataready; +CTS_READOUT_FINISHED_OUT <= cts_readout_finished; +CTS_LENGTH_OUT <= cts_length; + +PC_SOS_OUT <= pc_sos; +PC_EOD_OUT <= pc_eod_q; +PC_DATA_OUT <= pc_data_q; +PC_WR_EN_OUT <= pc_wr_en_qq; +PC_TRIG_NR_OUT <= x"0000" & pc_trig_nr; +PC_SUB_SIZE_OUT <= b"0000_0000_0000_00" & pc_sub_size; +PC_PADDING_OUT <= padding_needed; + +BSM_SAVE_OUT <= state; +BSM_LOAD_OUT <= state2; +DBG_CTS_CTR_OUT <= saved_ctr(2 downto 0); +DBG_REM_CTR_OUT <= rem_ctr; +DBG_SF_DATA_OUT <= sf_data; +DBG_SF_WCNT_OUT <= sf_wcnt; +DBG_SF_RCNT_OUT <= read_size(16 downto 0); --sf_rcnt; +DBG_SF_RD_EN_OUT <= sf_rd_en; +DBG_SF_WR_EN_OUT <= sf_wr_en; +DBG_SF_EMPTY_OUT <= sf_empty; +DBG_SF_AEMPTY_OUT <= sf_aempty; +DBG_SF_FULL_OUT <= sf_full; +DBG_SF_AFULL_OUT <= sf_afull; + +DEBUG_OUT <= debug; + +end architecture; \ No newline at end of file diff --git a/gbe_ecp2m/trb_net16_lsm_sfp_gbe.vhd b/gbe_ecp2m/trb_net16_lsm_sfp_gbe.vhd new file mode 100755 index 0000000..7624a16 --- /dev/null +++ b/gbe_ecp2m/trb_net16_lsm_sfp_gbe.vhd @@ -0,0 +1,236 @@ +-- LinkStateMachine for SFPs (GigE) + +-- Still missing: link reset features, fifo full error handling, signals on stat_op +-- Take care: all input signals must be synchronous to SYSCLK, +-- all output signals are synchronous to SYSCLK. +-- Clock Domain Crossing is in your responsibility! + +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.std_logic_ARITH.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +--use work.trb_net_std.all; + +entity trb_net16_lsm_sfp_gbe is +port( SYSCLK : in std_logic; -- fabric clock (100MHz) + RESET : in std_logic; -- synchronous reset + CLEAR : in std_logic; -- asynchronous reset, connect to '0' if not needed / available + -- status signals + SFP_MISSING_IN : in std_logic; -- SFP Missing ('1' = no SFP mounted, '0' = SFP in place) + SFP_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal) + SD_LINK_OK_IN : in std_logic; -- SerDes Link OK ('0' = not linked, '1' link established) + SD_LOS_IN : in std_logic; -- SerDes Loss Of Signal ('0' = OK, '1' = signal lost) + SD_TXCLK_BAD_IN : in std_logic; -- SerDes Tx Clock locked ('0' = locked, '1' = not locked) + SD_RXCLK_BAD_IN : in std_logic; -- SerDes Rx Clock locked ('0' = locked, '1' = not locked) + -- control signals + FULL_RESET_OUT : out std_logic; -- full reset AKA quad_reset + LANE_RESET_OUT : out std_logic; -- partial reset AKA lane_reset + USER_RESET_OUT : out std_logic; -- FPGA reset for user logic + -- debug signals + TIMING_CTR_OUT : out std_logic_vector(18 downto 0); + BSM_OUT : out std_logic_vector(3 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) + ); +end entity; + +architecture lsm_sfp_gbe of trb_net16_lsm_sfp_gbe is + +-- state machine signals +type STATES is ( QRST, SLEEP, DELAY, USERRST, LINK ); +signal CURRENT_STATE, NEXT_STATE: STATES; + +signal state_bits : std_logic_vector(3 downto 0); +signal next_ce_tctr : std_logic; +signal ce_tctr : std_logic; +signal next_rst_tctr : std_logic; +signal rst_tctr : std_logic; +signal next_quad_rst : std_logic; +signal quad_rst : std_logic; +signal next_lane_rst : std_logic; +signal lane_rst : std_logic; +signal next_user_rst : std_logic; +signal user_rst : std_logic; +signal sfp_missing_q : std_logic; +signal sfp_missing_qq : std_logic; +signal sfp_los_q : std_logic; +signal sfp_los_qq : std_logic; +signal sd_rxclk_bad_q : std_logic; +signal sd_rxclk_bad_qq : std_logic; +signal sd_rxclk_bad_qqq : std_logic; +signal sd_txclk_bad_q : std_logic; +signal sd_txclk_bad_qq : std_logic; +signal sd_txclk_bad_qqq : std_logic; +signal sd_rxclk_warn_comb : std_logic; +signal sd_rxclk_warn : std_logic; -- rising edge on rlol detected +signal sd_txclk_warn_comb : std_logic; +signal sd_txclk_warn : std_logic; -- rising edge on plol detected +signal timing_ctr : std_logic_vector(18 downto 0); +signal debug : std_logic_vector(31 downto 0); + +begin + +-- Debug signals +debug(31 downto 4) <= (others => '0'); +debug(3) <= sd_txclk_warn; +debug(2) <= sd_rxclk_warn; +debug(1) <= rst_tctr; +debug(0) <= ce_tctr; + +-- synchronize external signals from SFP +THE_SYNC_PROC: process( sysclk ) +begin + if( rising_edge(sysclk) ) then + -- SFP input signals + sfp_missing_qq <= sfp_missing_q; + sfp_missing_q <= sfp_missing_in; + sfp_los_qq <= sfp_los_q; + sfp_los_q <= sfp_los_in; + -- SerDes input signals + sd_rxclk_bad_qqq <= sd_rxclk_bad_qq; + sd_rxclk_bad_qq <= sd_rxclk_bad_q; + sd_rxclk_bad_q <= sd_rxclk_bad_in; + sd_txclk_bad_qqq <= sd_txclk_bad_q; + sd_txclk_bad_qq <= sd_txclk_bad_q; + sd_txclk_bad_q <= sd_txclk_bad_in; + -- edge detectors + sd_rxclk_warn <= sd_rxclk_warn_comb; + sd_txclk_warn <= sd_txclk_warn_comb; + end if; +end process THE_SYNC_PROC; + +-- combinatorial part of edge detectors (rlol, see remark on page 8-63 in HB1003.pdf) +sd_rxclk_warn_comb <= '1' when ( (sd_rxclk_bad_qqq = '0') and (sd_rxclk_bad_qq = '1') ) else '0'; +sd_txclk_warn_comb <= '1' when ( (sd_txclk_bad_qqq = '0') and (sd_txclk_bad_qq = '1') ) else '0'; + +-------------------------------------------------------------------------- +-- Main control state machine, startup control for SFP +-------------------------------------------------------------------------- + +-- Timing counter for reset sequencing +THE_TIMING_COUNTER_PROC: process( sysclk, clear ) +begin + if( clear = '1' ) then + timing_ctr <= (others => '0'); + elsif( rising_edge(sysclk) ) then + if ( (rst_tctr = '1') or (sd_rxclk_warn = '1') or (sd_txclk_warn = '1') ) then + timing_ctr <= (others => '0'); + elsif( ce_tctr = '1' ) then + timing_ctr <= timing_ctr + 1; + end if; + end if; +end process THE_TIMING_COUNTER_PROC; + +-- State machine +-- state registers +STATE_MEM: process( sysclk, clear ) +begin + if( clear = '1' ) then + CURRENT_STATE <= QRST; + ce_tctr <= '0'; + rst_tctr <= '0'; + quad_rst <= '1'; + lane_rst <= '1'; + user_rst <= '1'; + elsif( rising_edge(sysclk) ) then + CURRENT_STATE <= NEXT_STATE; + ce_tctr <= next_ce_tctr; + rst_tctr <= next_rst_tctr; + quad_rst <= next_quad_rst; + lane_rst <= next_lane_rst; + user_rst <= next_user_rst; + end if; +end process STATE_MEM; + +-- state transitions +PROC_STATE_TRANSFORM: process( CURRENT_STATE, sfp_missing_qq, sfp_los_qq, sd_txclk_bad_qqq, sd_rxclk_bad_qqq, + timing_ctr(8), timing_ctr(18), timing_ctr(17), + reset ) +begin + NEXT_STATE <= QRST; -- avoid latches + next_ce_tctr <= '0'; + next_rst_tctr <= '0'; + next_quad_rst <= '0'; + next_lane_rst <= '0'; + next_user_rst <= '0'; + case CURRENT_STATE is + when QRST => -- initial state, we stay there unless CLEAR is deasserted. + state_bits <= x"0"; + if( (timing_ctr(8) = '1') ) then + NEXT_STATE <= SLEEP; -- release QUAD_RST, wait for lock of RxClock and TxClock + next_lane_rst <= '1'; + next_user_rst <= '1'; + next_rst_tctr <= '1'; + else + NEXT_STATE <= QRST; -- count delay + next_ce_tctr <= '1'; + next_quad_rst <= '1'; + next_lane_rst <= '1'; + next_user_rst <= '1'; + end if; + when SLEEP => -- we check for SFP presence and signal + state_bits <= x"1"; + if( (sfp_missing_qq = '0') and (sfp_los_qq = '0') ) then + NEXT_STATE <= DELAY; -- do a correctly timed QUAD reset (about 150ns) + next_ce_tctr <= '1'; + next_lane_rst <= '1'; + next_user_rst <= '1'; + else + NEXT_STATE <= SLEEP; -- wait for SFP present signal + next_lane_rst <= '1'; + next_user_rst <= '1'; + end if; + when DELAY => -- we wait approx. 4ms and check for PLL lock in the SerDes + state_bits <= x"2"; + if( (timing_ctr(18) = '1') and (timing_ctr(17) = '1') and (sd_rxclk_bad_qqq = '0') and (sd_txclk_bad_qqq = '0') ) then + NEXT_STATE <= USERRST; -- we release lane reset + next_ce_tctr <= '1'; + next_user_rst <= '1'; + else + NEXT_STATE <= DELAY; + next_ce_tctr <= '1'; + next_lane_rst <= '1'; + next_user_rst <= '1'; + end if; + when USERRST => -- short delay for user reset + state_bits <= x"3"; + if( (timing_ctr(18) = '0') and (timing_ctr(17) = '0') ) then + NEXT_STATE <= LINK; + next_rst_tctr <= '1'; + else + NEXT_STATE <= USERRST; + next_ce_tctr <= '1'; + next_user_rst <= '1'; + end if; + when LINK => -- operational + state_bits <= x"4"; + NEXT_STATE <= LINK; + when others => + NEXT_STATE <= QRST; + end case; + + -- emergency jumps in case of SFP problems + if( ((sfp_missing_qq = '1') or (sfp_los_qq = '1') or (RESET = '1')) and CURRENT_STATE /= QRST ) then + NEXT_STATE <= SLEEP; -- wait for SFP present signal + next_rst_tctr <= '1'; + next_lane_rst <= '1'; + next_user_rst <= '1'; + end if; +end process; + +-------------------------------------------------------------------------- +-- Output signals +-------------------------------------------------------------------------- +full_reset_out <= quad_rst; +lane_reset_out <= lane_rst; +user_reset_out <= user_rst; + +-------------------------------------------------------------------------- +-- Debug output +-------------------------------------------------------------------------- +timing_ctr_out <= timing_ctr; +bsm_out <= state_bits; +debug_out <= debug; + +end architecture; \ No newline at end of file diff --git a/gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd b/gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd new file mode 100755 index 0000000..e2eeff5 --- /dev/null +++ b/gbe_ecp2m/trb_net16_med_ecp_sfp_gbe_8b.vhd @@ -0,0 +1,373 @@ +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.std_logic_ARITH.ALL; +USE IEEE.std_logic_UNSIGNED.ALL; + +library work; +use work.trb_net_std.all; +use work.trb_net_components.all; + +entity trb_net16_med_ecp_sfp_gbe_8b is +port( + RESET : in std_logic; + GSR_N : in std_logic; + CLK_125_OUT : out std_logic; + CLK_RX_OUT : out std_logic; + CLK_TX_OUT : out std_logic; + --SGMII connection to frame transmitter (tsmac) + FT_TX_CLK_EN_OUT : out std_logic; + FT_RX_CLK_EN_OUT : out std_logic; + FT_COL_OUT : out std_logic; + FT_CRS_OUT : out std_logic; + FT_TXD_IN : in std_logic_vector(7 downto 0); + FT_TX_EN_IN : in std_logic; + FT_TX_ER_IN : in std_logic; + --SFP Connection + SD_RXD_P_IN : in std_logic; + SD_RXD_N_IN : in std_logic; + SD_TXD_P_OUT : out std_logic; + SD_TXD_N_OUT : out std_logic; + SD_REFCLK_P_IN : in std_logic; + SD_REFCLK_N_IN : in std_logic; + SD_PRSNT_N_IN : in std_logic; -- SFP Present ('0' = SFP in place, '1' = no SFP mounted) + SD_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal) + SD_TXDIS_OUT : out std_logic; -- SFP disable + -- Autonegotiation stuff + MR_RESET_IN : in std_logic; + MR_MODE_IN : in std_logic; + MR_ADV_ABILITY_IN : in std_logic_vector(15 downto 0); -- should be x"0020 + MR_AN_LP_ABILITY_OUT : out std_logic_vector(15 downto 0); -- advert page from link partner + MR_AN_PAGE_RX_OUT : out std_logic; + MR_AN_COMPLETE_OUT : out std_logic; + MR_AN_ENABLE_IN : in std_logic; + MR_RESTART_AN_IN : in std_logic; + -- Status and control port + STAT_OP : out std_logic_vector (15 downto 0); + CTRL_OP : in std_logic_vector (15 downto 0); + STAT_DEBUG : out std_logic_vector (63 downto 0); + CTRL_DEBUG : in std_logic_vector (63 downto 0) +); +end entity; + +architecture trb_net16_med_ecp_sfp_gbe_8b of trb_net16_med_ecp_sfp_gbe_8b is + +-- Placer Directives +attribute HGROUP : string; +-- for whole architecture +attribute HGROUP of trb_net16_med_ecp_sfp_gbe_8b : architecture is "media_interface_group"; +attribute syn_sharing : string; +attribute syn_sharing of trb_net16_med_ecp_sfp_gbe_8b : architecture is "off"; + +component serdes_gbe_0_extclock_8b is +GENERIC (USER_CONFIG_FILE : String := "serdes_gbe_0_extclock_8b.txt"); +port( refclkp : in std_logic; + refclkn : in std_logic; + hdinp0 : in std_logic; + hdinn0 : in std_logic; + hdoutp0 : out std_logic; + hdoutn0 : out std_logic; + ff_rxiclk_ch0 : in std_logic; + ff_txiclk_ch0 : in std_logic; + ff_ebrd_clk_0 : in std_logic; + ff_txdata_ch0 : in std_logic_vector (7 downto 0); + ff_rxdata_ch0 : out std_logic_vector (7 downto 0); + ff_tx_k_cntrl_ch0 : in std_logic; + ff_rx_k_cntrl_ch0 : out std_logic; + ff_rxfullclk_ch0 : out std_logic; + ff_xmit_ch0 : in std_logic; + ff_correct_disp_ch0 : in std_logic; + ff_disp_err_ch0 : out std_logic; + ff_cv_ch0 : out std_logic; + ff_rx_even_ch0 : out std_logic; + ffc_rrst_ch0 : in std_logic; + ffc_lane_tx_rst_ch0 : in std_logic; + ffc_lane_rx_rst_ch0 : in std_logic; + ffc_txpwdnb_ch0 : in std_logic; + ffc_rxpwdnb_ch0 : in std_logic; + ffs_rlos_lo_ch0 : out std_logic; + ffs_ls_sync_status_ch0 : out std_logic; + ffs_rlol_ch0 : out std_logic; + oob_out_ch0 : out std_logic; + ffc_macro_rst : in std_logic; + ffc_quad_rst : in std_logic; + ffc_trst : in std_logic; + ff_txfullclk : out std_logic; + ff_txhalfclk : out std_logic; + refck2core : out std_logic; + ffs_plol : out std_logic + ); +end component; + +component sgmii_gbe_pcs32 +port( rst_n : in std_logic; + signal_detect : in std_logic; + gbe_mode : in std_logic; + sgmii_mode : in std_logic; + operational_rate : in std_logic_vector(1 downto 0); + debug_link_timer_short : in std_logic; + rx_compensation_err : out std_logic; + tx_clk_125 : in std_logic; + tx_clock_enable_source : out std_logic; + tx_clock_enable_sink : in std_logic; + tx_d : in std_logic_vector(7 downto 0); + tx_en : in std_logic; + tx_er : in std_logic; + rx_clk_125 : in std_logic; + rx_clock_enable_source : out std_logic; + rx_clock_enable_sink : in std_logic; + rx_d : out std_logic_vector(7 downto 0); + rx_dv : out std_logic; + rx_er : out std_logic; + col : out std_logic; + crs : out std_logic; + tx_data : out std_logic_vector(7 downto 0); + tx_kcntl : out std_logic; + tx_disparity_cntl : out std_logic; + serdes_recovered_clk : in std_logic; + rx_data : in std_logic_vector(7 downto 0); + rx_even : in std_logic; + rx_kcntl : in std_logic; + rx_disp_err : in std_logic; + rx_cv_err : in std_logic; + rx_err_decode_mode : in std_logic; + mr_an_complete : out std_logic; + mr_page_rx : out std_logic; + mr_lp_adv_ability : out std_logic_vector(15 downto 0); + mr_main_reset : in std_logic; + mr_an_enable : in std_logic; + mr_restart_an : in std_logic; + mr_adv_ability : in std_logic_vector(15 downto 0) + ); +end component; + +component trb_net16_lsm_sfp_gbe is +port( SYSCLK : in std_logic; -- fabric clock (100MHz) + RESET : in std_logic; -- synchronous reset + CLEAR : in std_logic; -- asynchronous reset, connect to '0' if not needed / available + -- status signals + SFP_MISSING_IN : in std_logic; -- SFP Missing ('1' = no SFP mounted, '0' = SFP in place) + SFP_LOS_IN : in std_logic; -- SFP Loss Of Signal ('0' = OK, '1' = no signal) + SD_LINK_OK_IN : in std_logic; -- SerDes Link OK ('0' = not linked, '1' link established) + SD_LOS_IN : in std_logic; -- SerDes Loss Of Signal ('0' = OK, '1' = signal lost) + SD_TXCLK_BAD_IN : in std_logic; -- SerDes Tx Clock locked ('0' = locked, '1' = not locked) + SD_RXCLK_BAD_IN : in std_logic; -- SerDes Rx Clock locked ('0' = locked, '1' = not locked) + -- control signals + FULL_RESET_OUT : out std_logic; -- full reset AKA quad_reset + LANE_RESET_OUT : out std_logic; -- partial reset AKA lane_reset + USER_RESET_OUT : out std_logic; -- FPGA reset for user logic + -- debug signals + TIMING_CTR_OUT : out std_logic_vector(18 downto 0); + BSM_OUT : out std_logic_vector(3 downto 0); + DEBUG_OUT : out std_logic_vector(31 downto 0) + ); +end component; + +signal refclkcore : std_logic; + +signal sd_link_ok : std_logic; +signal sd_link_error : std_logic_vector(2 downto 0); + +signal sd_tx_data : std_logic_vector(7 downto 0); +signal sd_tx_kcntl : std_logic; +signal sd_tx_correct_disp : std_logic; +signal sd_tx_clk : std_logic; + +signal sd_rx_data : std_logic_vector(7 downto 0); +signal sd_rx_even : std_logic; +signal sd_rx_kcntl : std_logic; +signal sd_rx_disp_error : std_logic; +signal sd_rx_cv_error : std_logic; +signal sd_rx_clk : std_logic; + +signal pcs_mr_an_complete : std_logic; +signal pcs_mr_ability : std_logic_vector(15 downto 0); +signal pcs_mr_page_rx : std_logic; +signal pcs_mr_reset : std_logic; + +signal pcs_tx_clk_en : std_logic; +signal pcs_rx_clk_en : std_logic; +signal pcs_rx_comp_err : std_logic; + +signal pcs_rx_d : std_logic_vector(7 downto 0); +signal pcs_rx_dv : std_logic; +signal pcs_rx_er : std_logic; + +signal sd_rx_debug : std_logic_vector(15 downto 0); +signal sd_tx_debug : std_logic_vector(15 downto 0); + +signal buf_stat_debug : std_logic_vector(63 downto 0); + +signal quad_rst : std_logic; +signal lane_rst : std_logic; +signal user_rst : std_logic; + +signal reset_bsm : std_logic_vector(3 downto 0); +signal reset_debug : std_logic_vector(31 downto 0); + +begin + +-- Reset state machine for SerDes +THE_RESET_STATEMACHINE: trb_net16_lsm_sfp_gbe +port map( SYSCLK => refclkcore, + RESET => '0', -- really? + CLEAR => RESET, -- from 100MHz PLL, includes async part + -- status signals + SFP_MISSING_IN => SD_PRSNT_N_IN, + SFP_LOS_IN => SD_LOS_IN, + SD_LINK_OK_IN => '1', -- not used + SD_LOS_IN => '0', -- not used + SD_TXCLK_BAD_IN => sd_link_error(2), -- plol + SD_RXCLK_BAD_IN => sd_link_error(1), -- rlol + -- control signals + FULL_RESET_OUT => quad_rst, + LANE_RESET_OUT => lane_rst, + USER_RESET_OUT => user_rst, + -- debug signals + TIMING_CTR_OUT => open, + BSM_OUT => reset_bsm, + DEBUG_OUT => reset_debug + ); + +-- SerDes for GbE +SERDES_GBE : serdes_gbe_0_extclock_8b +port map( -- SerDes connection to outside world + refclkp => SD_REFCLK_P_IN, -- SerDes REFCLK diff. input + refclkn => SD_REFCLK_N_IN, + hdinp0 => SD_RXD_P_IN, -- SerDes RX diff. input + hdinn0 => SD_RXD_N_IN, + hdoutp0 => SD_TXD_P_OUT, -- SerDes TX diff. output + hdoutn0 => SD_TXD_N_OUT, + refck2core => refclkcore, -- reference clock from input + -- RX part + ff_rxfullclk_ch0 => sd_rx_clk, -- RX full clock output + ff_rxiclk_ch0 => sd_rx_clk, + ff_ebrd_clk_0 => sd_rx_clk, -- EB ist not used as recommended by Lattice + ff_rxdata_ch0 => sd_rx_data, -- RX data output + ff_rx_k_cntrl_ch0 => sd_rx_kcntl, -- RX komma output + ff_rx_even_ch0 => sd_rx_even, -- for autonegotiation (output) + ff_disp_err_ch0 => sd_rx_disp_error, -- RX disparity error + ff_cv_ch0 => sd_rx_cv_error, -- RX code violation error + -- TX part + ff_txfullclk => sd_tx_clk, -- TX full clock output + ff_txiclk_ch0 => sd_tx_clk, + ff_txhalfclk => open, + ff_txdata_ch0 => sd_tx_data, -- TX data input + ff_tx_k_cntrl_ch0 => sd_tx_kcntl, -- TX komma input + ff_xmit_ch0 => '0', -- for autonegotiation (input) + ff_correct_disp_ch0 => sd_tx_correct_disp, -- controls disparity at IPG start (input) + -- Resets and power down + ffc_quad_rst => quad_rst, -- async reset for whole QUAD (active high) + ffc_lane_tx_rst_ch0 => lane_rst, -- async reset for TX channel + ffc_lane_rx_rst_ch0 => lane_rst, -- async reset for RX channel + ffc_rrst_ch0 => '0', -- '0' for normal operation + ffc_macro_rst => '0', -- '0' for normal operation + ffc_trst => '0', -- '0' for normal operation + ffc_txpwdnb_ch0 => '1', -- must be '1' + ffc_rxpwdnb_ch0 => '1', -- must be '1' + -- Status outputs + ffs_ls_sync_status_ch0 => sd_link_ok, -- synced to kommas? + ffs_rlos_lo_ch0 => sd_link_error(0), -- loss of signal in RX channel + ffs_rlol_ch0 => sd_link_error(1), -- loss of lock in RX PLL + ffs_plol => sd_link_error(2), -- loss of lock in TX PLL + oob_out_ch0 => open -- not needed + ); + +SD_RX_DATA_PROC: process( sd_rx_clk ) +begin + if( rising_edge(sd_rx_clk) ) then + sd_rx_debug(15 downto 12) <= (others => '0'); + sd_rx_debug(11) <= sd_rx_disp_error; + sd_rx_debug(10) <= sd_rx_even; + sd_rx_debug(9) <= sd_rx_cv_error; + sd_rx_debug(8) <= sd_rx_kcntl; + sd_rx_debug(7 downto 0) <= sd_rx_data; + end if; +end process SD_RX_DATA_PROC; + +SD_TX_DATA_PROC: process( sd_tx_clk ) +begin + if( rising_edge(sd_tx_clk) ) then + sd_tx_debug(15 downto 10) <= (others => '0'); + sd_tx_debug(9) <= sd_tx_correct_disp; + sd_tx_debug(8) <= sd_tx_kcntl; + sd_tx_debug(7 downto 0) <= sd_tx_data; + end if; +end process SD_TX_DATA_PROC; + +buf_stat_debug(63 downto 40) <= (others => '0'); +buf_stat_debug(39 downto 36) <= reset_debug(3 downto 0); +buf_stat_debug(35 downto 32) <= reset_bsm; +-- logic analyzer signals +buf_stat_debug(31) <= pcs_mr_page_rx; +buf_stat_debug(30) <= pcs_mr_reset; --pcs_mr_an_complete; +buf_stat_debug(28 downto 26) <= reset_bsm(2 downto 0); +buf_stat_debug(25 downto 23) <= sd_link_error(2 downto 0); +buf_stat_debug(22) <= sd_link_ok; +buf_stat_debug(21 downto 12) <= sd_tx_debug(9 downto 0); +buf_stat_debug(11 downto 0) <= sd_rx_debug(11 downto 0); + + +SGMII_GBE_PCS : sgmii_gbe_pcs32 +port map( rst_n => GSR_N, + signal_detect => sd_link_ok, + gbe_mode => '1', + sgmii_mode => MR_MODE_IN, + operational_rate => "10", + debug_link_timer_short => '0', + rx_compensation_err => pcs_rx_comp_err, + -- MAC interface + tx_clk_125 => refclkcore, -- original clock from SerDes + tx_clock_enable_source => pcs_tx_clk_en, + tx_clock_enable_sink => pcs_tx_clk_en, + tx_d => FT_TXD_IN, -- TX data from MAC + tx_en => FT_TX_EN_IN, -- TX data enable from MAC + tx_er => FT_TX_ER_IN, -- TX error from MAC + rx_clk_125 => refclkcore, -- original clock from SerDes + rx_clock_enable_source => pcs_rx_clk_en, + rx_clock_enable_sink => pcs_rx_clk_en, + rx_d => pcs_rx_d, -- RX data to MAC + rx_dv => pcs_rx_dv, -- RX data enable to MAC + rx_er => pcs_rx_er, -- RX error to MAC + col => FT_COL_OUT, + crs => FT_CRS_OUT, + -- SerDes interface + tx_data => sd_tx_data, -- TX data to SerDes + tx_kcntl => sd_tx_kcntl, -- TX komma control to SerDes + tx_disparity_cntl => sd_tx_correct_disp, -- idle parity state control in IPG (to SerDes) + serdes_recovered_clk => sd_rx_clk, -- 125MHz recovered from receive bit stream + rx_data => sd_rx_data, -- RX data from SerDes + rx_kcntl => sd_rx_kcntl, -- RX komma control from SerDes + rx_err_decode_mode => '0', -- receive error control mode fixed to normal + rx_even => '0', -- unused (receive error control mode = normal, tie to GND) + rx_disp_err => sd_rx_disp_error, -- RX disparity error from SerDes + rx_cv_err => sd_rx_cv_error, -- RX code violation error from SerDes + -- Autonegotiation stuff + mr_an_complete => pcs_mr_an_complete, + mr_page_rx => pcs_mr_page_rx, + mr_lp_adv_ability => pcs_mr_ability, + mr_main_reset => pcs_mr_reset, + mr_an_enable => MR_AN_ENABLE_IN, + mr_restart_an => MR_RESTART_AN_IN, + mr_adv_ability => MR_ADV_ABILITY_IN + ); + +pcs_mr_reset <= MR_RESET_IN or RESET or user_rst; + +FT_TX_CLK_EN_OUT <= pcs_tx_clk_en; -- to MAC +FT_RX_CLK_EN_OUT <= pcs_rx_clk_en; -- to MAC + +MR_AN_LP_ABILITY_OUT <= pcs_mr_ability; +MR_AN_COMPLETE_OUT <= pcs_mr_an_complete; +MR_AN_PAGE_RX_OUT <= pcs_mr_page_rx; + +-- Clock games +CLK_125_OUT <= refclkcore; +CLK_RX_OUT <= sd_rx_clk; +CLK_TX_OUT <= sd_tx_clk; + +-- Fakes +STAT_OP <= (others => '0'); +SD_TXDIS_OUT <= '0'; -- enable +STAT_DEBUG <= buf_stat_debug; + +end architecture; \ No newline at end of file -- 2.43.0