--- /dev/null
+#!/usr/bin/perl
+###########################################
+# Script file to run the flow
+#
+###########################################
+#
+# Command line for synplify_pro
+#
+
+
+use FileHandle;
+
+
+$ENV{LM_LICENSE_FILE}="1709\@hadeb05";
+
+
+
+$PLD_DEVICE="LFSCM3GA25EP1-5FFN1020C";
+$TOPNAME="hub";
+
+
+
+#set -e
+#set -o errexit
+
+system("env| grep LM_");
+$c="/opt/Synplicity/fpga_89/bin/synplify_pro -disable_rainbow_dongle -batch $TOPNAME"."_syn.prj";
+#$c=("( netcat -w2 -l -u -p 6001 < data_for_synbatch_6001.raw >/dev/null 2>&1)& /opt/Synplicity/fpga_89/bin/synplify_pro -batch $TOPNAME"."_syn.prj");
+$r=execute($c, "do_not_exit" );
+
+
+
+chdir "workdir";
+my $fh = new FileHandle("<hub.srr");
+my @a = <$fh>;
+$fh -> close;
+
+#if ($r) {
+#$c="cat $TOPNAME.srr";
+#system($c);
+#exit 129;
+#}
+
+foreach (@a)
+{
+ if(/\@E:/)
+ {
+ $c="cat $TOPNAME.srr";
+ system($c);
+ print "bdabdhsadbhjasdhasldhbas";
+ exit 129;
+ }
+}
+#if (0){
+
+#$c=("/opt/lattice/isplever7.0/isptools/ispcpld/bin/checkini -err=automake.err /opt/lattice/isplever7.0/isptools/ispcpld/config/or5s00.ini");
+
+
+#$c=("/opt/lattice/isplever7.0/isptools/ispcpld/bin/edfin -i hub.edf -jhd hub.jhd -log hub.log -dev orca -lbp \"/opt/lattice/isplever7.0/isptools/ispfpga/data\"");
+
+#$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/lci2prf -oc hub.lct -log hub.log ../hub.lpf");
+
+#$c=("export FOUNDRY=\"/opt/lattice/isplever7.0/isptools/ispfpga\"");
+
+#$c=("export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin\"");
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/edif2ngd -l LatticeSCM -d LFSCM3GA25EP1 \"hub.edf\" \"hub.ngo\"");
+execute($c);
+execute($c);
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/edfupdate -t \"hub.tcy\" -w \"hub.ngo\" -m \"hub.ngo\" \"hub.ngx\"");
+execute($c);
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/ngdbuild -a LatticeSCM -d LFSCM3GA25EP1 -p \"/opt/lattice/isplever7.0/isptools/ispfpga/or5s00/data\" -dt \"hub.ngo\" \"hub.ngd\"");
+execute($c);
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/map -a LatticeSCM -p LFSCM3GA25EP1 -t FFBGA1020 -s 5 \"hub.ngd\" -o \"hub_map.ncd\" -mp \"hub.mrp\" \"hub.lpf\"");
+execute($c);
+
+#$c=("/home/marek/.isplever_lin1/ispcpld/bin/checkpoint -to \"checkpnt.twr\" -log \"hub.log\" -rpt \"hub.mrp\" -m -f \"hub.cmm\" -f \"hub.cm2\" -arch LatticeSCM \"hub_map.ncd\"");
+#execute($c);
+
+#$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/trce -v 1 -gt -o checkpnt.twr hub_map.ncd hub.prf");
+
+#$c="/home/marek/.isplever_lin1/ispcpld/bin/checkpoint -to \"checkpnt.twr\" -log \"hub.log\" -rpt \"hub.mrp\" -m -f \"hub.cmm\" -f \"hub.cm2\" -arch LatticeSCM \"hub_map.ncd\"";
+system("rm hub.ncd");
+#execute($c);
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/multipar -pr \"hub.prf\" -o \"hub_mpar.rpt\" -log \"hub_mpar.log\" -p \"hub.p2t\" -f \"hub.p3t\" \"hub_map.ncd\" \"hub.ncd\"");
+execute($c);
+
+#$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/par \"hub_map.ncd\" \"hub.ncd\"");
+#execute($c);
+
+
+
+
+$c=("/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/bitgen -w \"hub.ncd\" -f \"hub.t2b\" \"hub.prf\"");
+execute($c);
+#$c=(". ~/bin/ispvm17");
+#execute($c);
+
+chdir "..";
+
+
+#$c=(". ~/bin/ispvm17");
+
+$c=("ispvm -infile hub_1.xcf -outfiletype -svf");
+execute($c);
+$c=("perl -i -ne 'print unless(/!/)' hub_1.svf");
+execute($c);
+$c=("impact -batch impact_batch_hub.txt");
+execute($c);
+$c=("scp hub_chain.stapl hadaq\@hadeb05:/var/diskless/etrax_fs/");
+execute($c);
+
+#}
+#$c=("impact -batch impact_batch_hub.txt");
+
+sub execute {
+ my ($c, $op) = @_;
+ #print "option: $op \n";
+
+ print "\n\ncommand to execute: $c \n";
+ $r=system($c);
+ if($r) {
+ print "$!";
+ if($op ne "do_not_exit") {
+ exit;
+ }
+ }
+
+ return $r;
+
+}
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_arith.all;
+use IEEE.STD_LOGIC_unsigned.all;
+
+
+entity f_divider is
+
+ generic(
+ cnt : integer := 4000 -- Der Teiler teilt durch "cnt" , wenn Test = 0 ist. --
+ );
+
+ port (
+ clk : in std_logic;
+ ena_cnt : in std_logic;
+ f_div : out std_logic
+ );
+
+end f_divider;
+
+
+
+architecture arch_f_divider of f_divider is
+
+ function How_many_Bits (int : integer) return integer is
+ variable i, tmp : integer;
+ begin
+ tmp := int;
+ i := 0;
+ while tmp > 0 loop
+ tmp := tmp / 2;
+ i := i + 1;
+ end loop;
+ return i;
+ end How_many_bits;
+
+
+ --+
+ --| Wie Breit muss der Teiler sein, um durch "cnt" teilen zu können? |
+ --+
+ constant c_counter_width : integer := How_many_Bits(cnt - 2);
+
+ --+ ---------------------------------------------------------------------------------------------+
+ --| Des Zähler "s_counter" muss ein Bit breiter definiert werden, als zur Abarbeitung des "cnt" |
+ --| nötig wäre. Dieses Bit wird beim Zählerunterlauf '1'. Der Zählerablauf wird dadurch ohne |
+ --| Komparator erkannt, er steht als getaktetes physikalisches Signal zur Verfügung. |
+ --+ ---------------------------------------------------------------------------------------------+
+ signal s_counter : std_logic_vector(c_counter_width downto 0) := conv_std_logic_vector(0, c_counter_width+1);
+
+ --+ ---------------------------------------------------------------------------------------------+
+ --| Teiler muss mit einen um -2 geringeren Wert geladen werden. Da das Neuladen erst durch dem |
+ --| Unterlauf Zählers erfolgt. D.h. die Null und minus Eins werden mitgezählt. |
+ --+ ---------------------------------------------------------------------------------------------+
+ constant c_ld_value : integer := cnt - 2;
+
+begin
+ p_f_divider : process (clk)
+ begin
+ if clk'event and clk = '1' then
+ if s_counter(s_counter'high) = '1' then -- Bei underflow wird neu geladen --
+ s_counter <= conv_std_logic_vector(c_ld_value, s_counter'length);
+ elsif ena_cnt = '1' then
+ if s_counter(s_counter'high) = '0' then -- Kein underflow erreicht weiter --
+ s_counter <= s_counter - 1; -- subtrahieren. --
+ end if;
+ end if;
+ end if;
+ end process p_f_divider;
+
+ f_div <= s_counter(s_counter'high);
+
+end arch_f_divider;
+
+
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+use IEEE.STD_LOGIC_ARITH.all;
+use IEEE.STD_LOGIC_UNSIGNED.all;
+
+
+--library synplify;
+--use synplify.attributes.all;
+
+
+entity edge_to_pulse is
+
+ port (
+ clock : in std_logic;
+ en_clk : in std_logic;
+ signal_in : in std_logic;
+ pulse : out std_logic);
+
+end edge_to_pulse;
+
+architecture arch_edge_to_pulse of edge_to_pulse is
+ signal signal_sync : std_logic;
+ signal old_sync : std_logic;
+ type state is (idle, high, wait_for_low); -- state
+ signal current_state, next_state : state;
+
+begin -- arch_edge_to_pulse
+
+ fsm : process (clock)
+ begin -- process fsm
+ if rising_edge(clock) then -- rising clock edge
+ if en_clk = '1' then
+ current_state <= next_state;
+ signal_sync <= signal_in;
+ end if;
+ end if;
+ end process fsm;
+
+
+ fsm_comb : process (current_state, signal_sync)
+ begin -- process fsm_comb
+ case current_state is
+ when idle =>
+ pulse <= '0';
+ if signal_sync = '1' then
+ next_state <= high;
+ else
+ next_state <= idle;
+ end if;
+ when high =>
+ pulse <= '1';
+ next_state <= wait_for_low;
+-- when wait_for_low_1 =>
+-- pulse <= '1';
+-- next_state <= wait_for_low;
+ when wait_for_low =>
+ pulse <= '0';
+ if signal_sync = '0' then
+ next_state <= idle;
+ else
+ next_state <= wait_for_low;
+ end if;
+ when others =>
+ next_state <= idle;
+ end case;
+ end process fsm_comb;
+
+
+end arch_edge_to_pulse;
+
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.all;
+
+package support is
+
+ component f_divider
+ generic (
+ cnt : integer);
+ port (
+ clk : in std_logic;
+ ena_cnt : in std_logic;
+ f_div : out std_logic);
+ end component;
+
+ component edge_to_pulse
+ port (
+ clock : in std_logic;
+ en_clk : in std_logic;
+ signal_in : in std_logic;
+ pulse : out std_logic);
+ end component;
+
+
+end support;
+
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.all;
+library ieee;
+library work;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.all;
+
+entity flexi_PCS_channel_synch is
+
+ port (
+ CLK : in std_logic;
+ RX_CLK : in std_logic;
+ RESET : in std_logic;
+ RXD : in std_logic_vector(15 downto 0);
+ RXD_SYNCH : out std_logic_vector(15 downto 0);
+ RX_K : in std_logic_vector(1 downto 0);
+ RX_RST : out std_logic;
+ CV : in std_logic_vector(1 downto 0);
+ TXD : in std_logic_vector(15 downto 0);
+ TXD_SYNCH : out std_logic_vector(15 downto 0);
+ TX_FORCE_DISP : out std_logic_vector(1 downto 0);
+ DATA_VALID_IN : in std_logic;
+ DATA_VALID_OUT : out std_logic;
+ FLEXI_PCS_STATUS : out std_logic_vector(15 downto 0)
+ );
+
+end flexi_PCS_channel_synch;
+architecture flexi_PCS_channel_synch of flexi_PCS_channel_synch is
+ component flexi_PCS_fifo_EBR
+ port (
+ Data : in std_logic_vector(17 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(17 downto 0);
+ Empty : out std_logic;
+ Full : out std_logic;
+ AlmostEmpty : out std_logic;
+ AlmostFull : out std_logic);
+ end component;
+ component simpleupcounter_16bit
+ port (
+ QOUT : out std_logic_vector(15 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+ end component;
+ component simpleupcounter_8bit
+ port (
+ QOUT : out std_logic_vector(15 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+ end component;
+ type SYNCH_MACHINE is (IDLE, SYNCH_START, RESYNC1, RESYNC2, RESYNC3, NORMAL_OPERATION);
+ signal SYNCH_CURRENT, SYNCH_NEXT : SYNCH_MACHINE;
+ signal fsm_debug_register : std_logic_vector(2 downto 0);
+ signal resync_counter_up :std_logic;
+ signal resync_counter_clr :std_logic;
+ signal resync_counter : std_logic_vector(15 downto 0);
+ signal cv_i : std_logic_vector(1 downto 0);
+ signal cv_or : std_logic;
+ signal cv_counter : std_logic_vector(15 downto 0);
+ signal rx_rst_i : std_logic;
+ signal rxd_synch_i : std_logic_vector(15 downto 0);
+ signal fifo_data_in : std_logic_vector(17 downto 0);
+ signal fifo_data_out : std_logic_vector(17 downto 0);
+ signal fifo_wr_en : std_logic;
+ signal fifo_rd_en : std_logic;
+ signal fifo_rst : std_logic;
+ signal fifo_full : std_logic;
+ signal fifo_almost_full : std_logic;
+ signal fifo_empty : std_logic;
+ signal fifo_almost_empty : std_logic;
+
+begin
+ TX_FORCE_DISP(0) <= '0';
+ SYNCH_PROCESS : process (CLK)
+ begin
+ if rising_edge(CLK) then
+ RX_RST <= rx_rst_i;
+ FLEXI_PCS_STATUS(2 downto 0) <= fsm_debug_register;
+ FLEXI_PCS_STATUS(7 downto 3) <= fifo_empty & fifo_almost_empty & fifo_full & fifo_almost_full & '0';
+ FLEXI_PCS_STATUS(15 downto 8) <= cv_counter(15 downto 12) & cv_counter(3 downto 0);
+ end if;
+ end process SYNCH_PROCESS;
+ VALID_DATA_SEND_TO_OPTICAL: process (CLK, RESET, DATA_VALID_IN)
+ begin
+ if rising_edge(CLK) then
+ if RESET = '1' then
+ TX_FORCE_DISP(1) <= '1';
+ TXD_SYNCH <= (others => '0');
+ elsif DATA_VALID_IN = '1' then
+ TX_FORCE_DISP(1) <= '0';
+ TXD_SYNCH <= TXD;
+ else
+ TX_FORCE_DISP(1) <= '1';
+ TXD_SYNCH <= x"bc50";
+ end if;
+ end if;
+ end process VALID_DATA_SEND_TO_OPTICAL;
+ fifo_data_in <= RX_K & RXD;
+ CHANNEL_FIFO: flexi_PCS_fifo_EBR
+ port map (
+ Data => fifo_data_in,
+ WrClock => RX_CLK,
+ RdClock => CLK,
+ WrEn => fifo_wr_en,
+ RdEn => fifo_rd_en,
+ Reset => fifo_rst,
+ RPReset => fifo_rst,
+ Q => fifo_data_out,
+ Empty => fifo_empty,
+ Full => fifo_full,
+ AlmostEmpty => fifo_almost_empty,
+ AlmostFull => fifo_almost_full
+ );
+-- fifo_wr_en <= ;
+-- fifo_rd_en <= ;
+ RXD_SYNCH <= fifo_data_out(15 downto 0);
+ DATA_VALID_OUT <= fifo_data_out(16);
+ VALID_DATA_SEND_TO_API: process (RX_CLK, RESET)
+ begin
+ if rising_edge(RX_CLK) then
+ if RESET = '1' then
+ rxd_synch_i <= (others => '0');
+ else-- RX_K(0) = '1' then
+ rxd_synch_i <= RXD;
+ end if;
+ end if;
+ end process VALID_DATA_SEND_TO_API;
+ SYNCH_CLOCK : process (CLK, RESET)
+ begin
+ if rising_edge (CLK) then
+ if RESET = '1' then
+ SYNCH_CURRENT <= IDLE;
+ cv_i <= (others => '0');
+ else
+ SYNCH_CURRENT <= SYNCH_NEXT;
+ cv_i <= CV;
+ end if;
+ end if;
+ end process SYNCH_CLOCK;
+ SYNCH_FSM : process( SYNCH_CURRENT, rxd_synch_i, resync_counter, cv_i)
+ begin
+ case (SYNCH_CURRENT) is
+ when IDLE =>
+ fifo_rst <= '0';
+ fifo_wr_en <= '1';
+ fifo_rd_en <= '1';
+ fsm_debug_register(2 downto 0) <= "001";
+ rx_rst_i <= '0';
+ resync_counter_up <= '0';
+ resync_counter_clr <= '1';
+ if rxd_synch_i = x"bc50" then
+ SYNCH_NEXT <= NORMAL_OPERATION;
+ else
+ SYNCH_NEXT <= RESYNC1;
+ end if;
+ when RESYNC1 =>
+ fifo_rst <= '1';
+ fifo_wr_en <= '0';
+ fifo_rd_en <= '0';
+ fsm_debug_register(2 downto 0) <= "010";
+ rx_rst_i <= '1';
+ resync_counter_up <= '1';
+ resync_counter_clr <= '0';
+ if resync_counter = 20003 then
+ SYNCH_NEXT <= RESYNC2;
+ else
+ SYNCH_NEXT <= RESYNC1;
+ end if;
+ when RESYNC2 =>
+ fifo_rst <= '0';
+ fifo_wr_en <= '1';
+ fifo_rd_en <= '0';
+ fsm_debug_register(2 downto 0) <= "011";
+ rx_rst_i <= '0';
+ resync_counter_up <= '1';
+ resync_counter_clr <= '0';
+ if resync_counter = 20200 then
+ SYNCH_NEXT <= RESYNC3;
+ else
+ SYNCH_NEXT <= RESYNC2;
+ end if;
+ when RESYNC3 =>
+ fifo_rst <= '0';
+ fifo_wr_en <= '1';
+ fifo_rd_en <= '1';
+ fsm_debug_register(2 downto 0) <= "011";
+ rx_rst_i <= '0';
+ resync_counter_up <= '1';
+ resync_counter_clr <= '0';
+ if resync_counter = 60000 then
+ SYNCH_NEXT <= IDLE;
+ else
+ SYNCH_NEXT <= RESYNC3;
+ end if;
+ when NORMAL_OPERATION =>
+ fifo_rst <= '0';
+ fifo_wr_en <= '1';
+ fifo_rd_en <= '1';
+ fsm_debug_register(2 downto 0) <= "100";
+ rx_rst_i <= '0';
+ resync_counter_up <= '0';
+ resync_counter_clr <= '0';
+ if cv_i(0) = '1' or cv_i(1) = '1' then
+ SYNCH_NEXT <= IDLE;
+ else
+ SYNCH_NEXT <= NORMAL_OPERATION;
+ end if;
+ when others =>
+ fifo_rst <= '0';
+ fifo_wr_en <= '0';
+ fifo_rd_en <= '0';
+ fsm_debug_register(2 downto 0) <= "000";
+ rx_rst_i <= '0';
+ resync_counter_up <= '0';
+ resync_counter_clr <= '1';
+ SYNCH_NEXT <= IDLE;
+ end case;
+ end process SYNCH_FSM;
+ RESYNC_COUNTER_INST : simpleupcounter_16bit
+ port map (
+ QOUT => resync_counter,
+ UP => resync_counter_up,
+ CLK => CLK,
+ CLR => resync_counter_clr);
+ cv_or <= cv_i(0) or cv_i(1);
+ CV_COUNTER_INST: simpleupcounter_16bit
+ port map (
+ QOUT => cv_counter,
+ UP => cv_or,
+ CLK => CLK,
+ CLR => '0');
+end flexi_PCS_channel_synch;
--- /dev/null
+-- VHDL netlist generated by SCUBA ispLever_v70_Prod_Build (55)
+-- Module Version: 4.2
+--/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/scuba -w -n flexi_PCS_fifo_EBR -lang vhdl -synth synplify -bus_exp 7 -bb -arch or5s00 -type ebfifo -depth 512 -width 18 -rwidth 18 -no_enable -pe 10 -pf 508 -e
+
+-- Tue Nov 27 10:58:36 2007
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+-- synopsys translate_off
+library SCM;
+use SCM.COMPONENTS.all;
+-- synopsys translate_on
+
+entity flexi_PCS_fifo_EBR is
+ port (
+ Data: in std_logic_vector(17 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(17 downto 0);
+ Empty: out std_logic;
+ Full: out std_logic;
+ AlmostEmpty: out std_logic;
+ AlmostFull: out std_logic);
+end flexi_PCS_fifo_EBR;
+
+architecture Structure of flexi_PCS_fifo_EBR is
+
+ -- internal signal declarations
+ signal scuba_vhi: std_logic;
+ signal Empty_int: std_logic;
+ signal Full_int: 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 FIFO16KA
+ -- synopsys translate_off
+ generic (FULLPOINTER1 : in std_logic_vector(14 downto 0);
+ FULLPOINTER : in std_logic_vector(14 downto 0);
+ AFPOINTER1 : in std_logic_vector(14 downto 0);
+ AEPOINTER1 : in std_logic_vector(14 downto 0);
+ AFPOINTER : in std_logic_vector(14 downto 0);
+ AEPOINTER : in std_logic_vector(14 downto 0);
+ CSDECODE_R : in std_logic_vector(1 downto 0);
+ CSDECODE_W : in std_logic_vector(1 downto 0);
+ RESETMODE : in String; REGMODE : in String;
+ DATA_WIDTH_R : in Integer; DATA_WIDTH_W : in Integer);
+ -- synopsys translate_on
+ port (DI0: in std_logic; DI1: in std_logic; DI2: in std_logic;
+ DI3: in std_logic; DI4: in std_logic; DI5: in std_logic;
+ DI6: in std_logic; DI7: in std_logic; DI8: in std_logic;
+ DI9: in std_logic; DI10: in std_logic; DI11: in std_logic;
+ DI12: in std_logic; DI13: in std_logic;
+ DI14: in std_logic; DI15: in std_logic;
+ DI16: in std_logic; DI17: in std_logic;
+ DI18: in std_logic; DI19: in std_logic;
+ DI20: in std_logic; DI21: in std_logic;
+ DI22: in std_logic; DI23: in std_logic;
+ DI24: in std_logic; DI25: in std_logic;
+ DI26: in std_logic; DI27: in std_logic;
+ DI28: in std_logic; DI29: in std_logic;
+ DI30: in std_logic; DI31: in std_logic;
+ DI32: in std_logic; DI33: in std_logic;
+ DI34: in std_logic; DI35: in std_logic;
+ FULLI: in std_logic; CSW0: in std_logic;
+ CSW1: in std_logic; EMPTYI: in std_logic;
+ CSR0: in std_logic; CSR1: in std_logic; WE: in std_logic;
+ RE: in std_logic; CLKW: in std_logic; CLKR: in std_logic;
+ RST: in std_logic; RPRST: in std_logic;
+ DO0: out std_logic; DO1: out std_logic;
+ DO2: out std_logic; DO3: out std_logic;
+ DO4: out std_logic; DO5: out std_logic;
+ DO6: out std_logic; DO7: out std_logic;
+ DO8: out std_logic; DO9: out std_logic;
+ DO10: out std_logic; DO11: out std_logic;
+ DO12: out std_logic; DO13: out std_logic;
+ DO14: out std_logic; DO15: out std_logic;
+ DO16: out std_logic; DO17: out std_logic;
+ DO18: out std_logic; DO19: out std_logic;
+ DO20: out std_logic; DO21: out std_logic;
+ DO22: out std_logic; DO23: out std_logic;
+ DO24: out std_logic; DO25: out std_logic;
+ DO26: out std_logic; DO27: out std_logic;
+ DO28: out std_logic; DO29: out std_logic;
+ DO30: out std_logic; DO31: out std_logic;
+ DO32: out std_logic; DO33: out std_logic;
+ DO34: out std_logic; DO35: out std_logic;
+ EF: out std_logic; AEF: out std_logic; AFF: out std_logic;
+ FF: out std_logic);
+ end component;
+ attribute FULLPOINTER1 : string;
+ attribute FULLPOINTER : string;
+ attribute AFPOINTER1 : string;
+ attribute AFPOINTER : string;
+ attribute AEPOINTER1 : string;
+ attribute AEPOINTER : string;
+ attribute RESETMODE : string;
+ attribute REGMODE : string;
+ attribute CSDECODE_R : string;
+ attribute CSDECODE_W : string;
+ attribute DATA_WIDTH_R : string;
+ attribute DATA_WIDTH_W : string;
+ attribute FULLPOINTER1 of flexi_PCS_fifo_EBR_0_0 : label is "0b011111111000001";
+ attribute FULLPOINTER of flexi_PCS_fifo_EBR_0_0 : label is "0b011111111100001";
+ attribute AFPOINTER1 of flexi_PCS_fifo_EBR_0_0 : label is "0b011111101000001";
+ attribute AFPOINTER of flexi_PCS_fifo_EBR_0_0 : label is "0b011111101100001";
+ attribute AEPOINTER1 of flexi_PCS_fifo_EBR_0_0 : label is "0b000000101111111";
+ attribute AEPOINTER of flexi_PCS_fifo_EBR_0_0 : label is "0b000000101011111";
+ attribute RESETMODE of flexi_PCS_fifo_EBR_0_0 : label is "ASYNC";
+ attribute REGMODE of flexi_PCS_fifo_EBR_0_0 : label is "NOREG";
+ attribute CSDECODE_R of flexi_PCS_fifo_EBR_0_0 : label is "0b11";
+ attribute CSDECODE_W of flexi_PCS_fifo_EBR_0_0 : label is "0b11";
+ attribute DATA_WIDTH_R of flexi_PCS_fifo_EBR_0_0 : label is "36";
+ attribute DATA_WIDTH_W of flexi_PCS_fifo_EBR_0_0 : label is "36";
+ attribute syn_keep : boolean;
+
+begin
+ -- component instantiation statements
+ scuba_vhi_inst: VHI
+ port map (Z=>scuba_vhi);
+
+ scuba_vlo_inst: VLO
+ port map (Z=>scuba_vlo);
+
+ flexi_PCS_fifo_EBR_0_0: FIFO16KA
+ -- synopsys translate_off
+ generic map (FULLPOINTER1=> "011111111000001", FULLPOINTER=> "011111111100001",
+ AFPOINTER1=> "011111101000001", AFPOINTER=> "011111101100001",
+ AEPOINTER1=> "000000101111111", AEPOINTER=> "000000101011111",
+ RESETMODE=> "ASYNC", REGMODE=> "NOREG", CSDECODE_R=> "11",
+ CSDECODE_W=> "11", DATA_WIDTH_R=> 36, DATA_WIDTH_W=> 36)
+ -- synopsys translate_on
+ port map (DI0=>Data(0), DI1=>Data(1), DI2=>Data(2), DI3=>Data(3),
+ DI4=>Data(4), DI5=>Data(5), DI6=>Data(6), DI7=>Data(7),
+ DI8=>Data(8), DI9=>Data(9), DI10=>Data(10), DI11=>Data(11),
+ DI12=>Data(12), DI13=>Data(13), DI14=>Data(14),
+ DI15=>Data(15), DI16=>Data(16), DI17=>Data(17),
+ DI18=>scuba_vlo, DI19=>scuba_vlo, DI20=>scuba_vlo,
+ DI21=>scuba_vlo, DI22=>scuba_vlo, DI23=>scuba_vlo,
+ DI24=>scuba_vlo, DI25=>scuba_vlo, DI26=>scuba_vlo,
+ DI27=>scuba_vlo, DI28=>scuba_vlo, DI29=>scuba_vlo,
+ DI30=>scuba_vlo, DI31=>scuba_vlo, DI32=>scuba_vlo,
+ DI33=>scuba_vlo, DI34=>scuba_vlo, DI35=>scuba_vlo,
+ FULLI=>Full_int, CSW0=>scuba_vhi, CSW1=>scuba_vhi,
+ EMPTYI=>Empty_int, CSR0=>scuba_vhi, CSR1=>scuba_vhi,
+ WE=>WrEn, RE=>RdEn, CLKW=>WrClock, CLKR=>RdClock, RST=>Reset,
+ RPRST=>RPReset, DO0=>open, DO1=>open, DO2=>open, DO3=>open,
+ DO4=>open, DO5=>open, DO6=>open, DO7=>open, DO8=>open,
+ DO9=>open, DO10=>open, DO11=>open, DO12=>open, DO13=>open,
+ DO14=>open, DO15=>open, DO16=>open, DO17=>open, DO18=>Q(0),
+ DO19=>Q(1), DO20=>Q(2), DO21=>Q(3), DO22=>Q(4), DO23=>Q(5),
+ DO24=>Q(6), DO25=>Q(7), DO26=>Q(8), DO27=>Q(9), DO28=>Q(10),
+ DO29=>Q(11), DO30=>Q(12), DO31=>Q(13), DO32=>Q(14),
+ DO33=>Q(15), DO34=>Q(16), DO35=>Q(17), EF=>Empty_int,
+ AEF=>AlmostEmpty, AFF=>AlmostFull, FF=>Full_int);
+
+ Empty <= Empty_int;
+ Full <= Full_int;
+end Structure;
+
+-- synopsys translate_off
+library SCM;
+configuration Structure_CON of flexi_PCS_fifo_EBR is
+ for Structure
+ for all:VHI use entity SCM.VHI(V); end for;
+ for all:VLO use entity SCM.VLO(V); end for;
+ for all:FIFO16KA use entity SCM.FIFO16KA(V); end for;
+ end for;
+end Structure_CON;
+
+-- synopsys translate_on
--- /dev/null
+-- VHDL netlist generated by SCUBA ispLever_v70_Prod_Build (55)
+-- Module Version: 4.2
+--/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/scuba -w -n flexi_PCS_fifo_LUT -lang vhdl -synth synplify -bus_exp 7 -bb -arch or5s00 -type ebfifo -depth 8 -width 18 -rwidth 18 -pfu_fifo -no_enable -pe 3 -pf 6 -e
+
+-- Fri Nov 23 08:28:34 2007
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+-- synopsys translate_off
+library SCM;
+use SCM.COMPONENTS.all;
+-- synopsys translate_on
+
+entity flexi_PCS_fifo_LUT is
+ port (
+ Data: in std_logic_vector(17 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(17 downto 0);
+ Empty: out std_logic;
+ Full: out std_logic;
+ AlmostEmpty: out std_logic;
+ AlmostFull: out std_logic);
+end flexi_PCS_fifo_LUT;
+
+architecture Structure of flexi_PCS_fifo_LUT is
+
+ -- internal signal declarations
+ signal invout_1: std_logic;
+ signal invout_0: std_logic;
+ signal w_gdata_0: std_logic;
+ signal w_gdata_1: std_logic;
+ signal w_gdata_2: std_logic;
+ signal wptr_3: std_logic;
+ signal r_gdata_0: std_logic;
+ signal r_gdata_1: std_logic;
+ signal r_gdata_2: std_logic;
+ signal rptr_3: 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 r_gcount_0: std_logic;
+ signal r_gcount_1: std_logic;
+ signal r_gcount_2: std_logic;
+ signal r_gcount_3: 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 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 empty_i: std_logic;
+ signal full_i: std_logic;
+ signal rRst: std_logic;
+ signal iwcount_0: std_logic;
+ signal iwcount_1: std_logic;
+ signal iwcount_2: std_logic;
+ signal iwcount_3: std_logic;
+ signal co1: std_logic;
+ signal wcount_3: std_logic;
+ signal co0: std_logic;
+ signal ircount_0: std_logic;
+ signal ircount_1: std_logic;
+ signal ircount_2: std_logic;
+ signal ircount_3: std_logic;
+ signal co1_1: std_logic;
+ signal rcount_3: std_logic;
+ signal co0_1: std_logic;
+ signal rcount_0: std_logic;
+ signal rcount_1: std_logic;
+ signal co0_2: std_logic;
+ signal empty_cmp_clr: std_logic;
+ signal rcount_2: std_logic;
+ signal empty_cmp_set: std_logic;
+ signal empty_d: std_logic;
+ signal empty_d_c: std_logic;
+ signal wcount_0: std_logic;
+ signal wcount_1: std_logic;
+ signal co0_3: std_logic;
+ signal full_cmp_clr: std_logic;
+ signal wcount_2: std_logic;
+ signal full_cmp_set: std_logic;
+ signal full_d: std_logic;
+ signal full_d_c: std_logic;
+ signal iae_setcount_0: std_logic;
+ signal iae_setcount_1: std_logic;
+ signal iae_setcount_2: std_logic;
+ signal iae_setcount_3: std_logic;
+ signal co1_2: std_logic;
+ signal ae_setcount_3: std_logic;
+ signal co0_4: std_logic;
+ signal rden_i: std_logic;
+ signal w_g2b_xor_cluster_0: std_logic;
+ signal wcount_r1: std_logic;
+ signal ae_setcount_0: std_logic;
+ signal ae_setcount_1: std_logic;
+ signal co0_5: std_logic;
+ signal wcount_r2: std_logic;
+ signal ae_set_cmp_clr: std_logic;
+ signal ae_setcount_2: std_logic;
+ signal ae_set_cmp_set: std_logic;
+ signal ae_set_d: std_logic;
+ signal ae_set_d_c: std_logic;
+ signal iaf_setcount_0: std_logic;
+ signal iaf_setcount_1: std_logic;
+ signal iaf_setcount_2: std_logic;
+ signal iaf_setcount_3: std_logic;
+ signal co1_3: std_logic;
+ signal af_setcount_3: std_logic;
+ signal co0_6: std_logic;
+ signal r_g2b_xor_cluster_0: std_logic;
+ signal rcount_w1: std_logic;
+ signal af_setcount_0: std_logic;
+ signal af_setcount_1: std_logic;
+ signal co0_7: std_logic;
+ signal rcount_w2: std_logic;
+ signal af_set_cmp_clr: std_logic;
+ signal af_setcount_2: std_logic;
+ signal af_set_cmp_set: std_logic;
+ signal af_set: std_logic;
+ signal af_set_c: std_logic;
+ signal rdataout17: std_logic;
+ signal rdataout16: std_logic;
+ signal rdataout15: std_logic;
+ signal rdataout14: std_logic;
+ signal rdataout13: std_logic;
+ signal rdataout12: std_logic;
+ signal rdataout11: std_logic;
+ signal rdataout10: std_logic;
+ signal rdataout9: std_logic;
+ signal rdataout8: std_logic;
+ signal rdataout7: std_logic;
+ signal rdataout6: std_logic;
+ signal rdataout5: std_logic;
+ signal rdataout4: std_logic;
+ signal rdataout3: std_logic;
+ signal rdataout2: std_logic;
+ signal rdataout1: std_logic;
+ signal rdataout0: std_logic;
+ signal rptr_0: std_logic;
+ signal rptr_1: std_logic;
+ signal rptr_2: std_logic;
+ signal wren_i: std_logic;
+ signal scuba_vhi: std_logic;
+ signal wptr_0: std_logic;
+ signal wptr_1: std_logic;
+ signal wptr_2: std_logic;
+ signal scuba_vlo: std_logic;
+
+ -- local component declarations
+ component DPR16X2
+ -- synopsys translate_off
+ generic (INITVAL : in String; GSR : in String);
+ -- synopsys translate_on
+ port (DI0: in std_logic; DI1: in std_logic;
+ WAD3: in std_logic; WAD2: in std_logic;
+ WAD1: in std_logic; WAD0: in std_logic; WRE: in std_logic;
+ WPE: in std_logic; WCK: in std_logic; RAD3: in std_logic;
+ RAD2: in std_logic; RAD1: in std_logic;
+ RAD0: in std_logic; WDO0: out std_logic;
+ WDO1: out std_logic; RDO0: out std_logic;
+ RDO1: 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 AND2
+ port (A: in std_logic; B: 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 XOR2
+ port (A: in std_logic; B: in std_logic; Z: out std_logic);
+ end component;
+ component INV
+ port (A: in std_logic; Z: out std_logic);
+ end component;
+ component VHI
+ port (Z: out std_logic);
+ end component;
+ component VLO
+ port (Z: out std_logic);
+ end component;
+ component FADD2
+ port (A1: in std_logic; A0: in std_logic; B1: in std_logic;
+ B0: in std_logic; CI: in std_logic; COUT1: out std_logic;
+ COUT0: out std_logic; S1: out std_logic;
+ S0: out std_logic);
+ end component;
+ component CU2
+ port (CI: in std_logic; PC1: in std_logic; PC0: in std_logic;
+ CO: out std_logic; NC1: out std_logic; NC0: out std_logic);
+ end component;
+ component AGEB2
+ port (A1: in std_logic; A0: in std_logic; B1: in std_logic;
+ B0: in std_logic; CI: in std_logic; GE: 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;
+ attribute GSR : string;
+ attribute initval : string;
+ 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 "0x0410";
+ attribute initval of LUT4_6 : label is "0x1004";
+ attribute initval of LUT4_5 : label is "0x0140";
+ attribute initval of LUT4_4 : label is "0x4001";
+ attribute initval of LUT4_3 : label is "0x13c8";
+ attribute initval of LUT4_2 : label is "0x2004";
+ attribute initval of LUT4_1 : label is "0x4c32";
+ attribute initval of LUT4_0 : label is "0x8001";
+ 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 GSR of fifo_pfu_0_0 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_0 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_1 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_1 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_2 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_2 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_3 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_3 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_4 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_4 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_5 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_5 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_6 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_6 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_7 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_7 : label is "0x0000000000000000";
+ attribute GSR of fifo_pfu_0_8 : label is "ENABLED";
+ attribute initval of fifo_pfu_0_8 : label is "0x0000000000000000";
+ attribute syn_keep : boolean;
+
+begin
+ -- component instantiation statements
+ AND2_t8: AND2
+ port map (A=>WrEn, B=>invout_1, Z=>wren_i);
+
+ INV_1: INV
+ port map (A=>full_i, Z=>invout_1);
+
+ AND2_t7: AND2
+ port map (A=>RdEn, B=>invout_0, Z=>rden_i);
+
+ INV_0: INV
+ port map (A=>empty_i, Z=>invout_0);
+
+ OR2_t6: OR2
+ port map (A=>Reset, B=>RPReset, Z=>rRst);
+
+ XOR2_t5: XOR2
+ port map (A=>wcount_0, B=>wcount_1, Z=>w_gdata_0);
+
+ XOR2_t4: XOR2
+ port map (A=>wcount_1, B=>wcount_2, Z=>w_gdata_1);
+
+ XOR2_t3: XOR2
+ port map (A=>wcount_2, B=>wcount_3, Z=>w_gdata_2);
+
+ XOR2_t2: XOR2
+ port map (A=>rcount_0, B=>rcount_1, Z=>r_gdata_0);
+
+ XOR2_t1: XOR2
+ port map (A=>rcount_1, B=>rcount_2, Z=>r_gdata_1);
+
+ XOR2_t0: XOR2
+ port map (A=>rcount_2, B=>rcount_3, Z=>r_gdata_2);
+
+ LUT4_13: 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_0);
+
+ LUT4_12: 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=>wcount_r2);
+
+ LUT4_11: 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=>wcount_r1);
+
+ 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=>r_g2b_xor_cluster_0);
+
+ LUT4_9: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x6996")
+ -- synopsys translate_on
+ port map (AD3=>r_gcount_w22, AD2=>r_gcount_w23, AD1=>scuba_vlo,
+ AD0=>scuba_vlo, DO0=>rcount_w2);
+
+ LUT4_8: 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=>rcount_w1);
+
+ LUT4_7: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x0410")
+ -- synopsys translate_on
+ port map (AD3=>rptr_3, AD2=>rcount_3, AD1=>w_gcount_r23,
+ AD0=>scuba_vlo, DO0=>empty_cmp_set);
+
+ LUT4_6: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x1004")
+ -- synopsys translate_on
+ port map (AD3=>rptr_3, AD2=>rcount_3, AD1=>w_gcount_r23,
+ AD0=>scuba_vlo, DO0=>empty_cmp_clr);
+
+ LUT4_5: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x0140")
+ -- synopsys translate_on
+ port map (AD3=>wptr_3, AD2=>wcount_3, AD1=>r_gcount_w23,
+ AD0=>scuba_vlo, DO0=>full_cmp_set);
+
+ LUT4_4: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x4001")
+ -- synopsys translate_on
+ port map (AD3=>wptr_3, AD2=>wcount_3, AD1=>r_gcount_w23,
+ AD0=>scuba_vlo, DO0=>full_cmp_clr);
+
+ LUT4_3: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x13c8")
+ -- synopsys translate_on
+ port map (AD3=>ae_setcount_3, AD2=>rcount_3, AD1=>w_gcount_r23,
+ AD0=>rptr_3, DO0=>ae_set_cmp_set);
+
+ LUT4_2: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x2004")
+ -- synopsys translate_on
+ port map (AD3=>ae_setcount_3, AD2=>rcount_3, AD1=>w_gcount_r23,
+ AD0=>rptr_3, DO0=>ae_set_cmp_clr);
+
+ LUT4_1: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x4c32")
+ -- synopsys translate_on
+ port map (AD3=>af_setcount_3, AD2=>wcount_3, AD1=>r_gcount_w23,
+ AD0=>wptr_3, DO0=>af_set_cmp_set);
+
+ LUT4_0: ROM16X1
+ -- synopsys translate_off
+ generic map (initval=> "0x8001")
+ -- synopsys translate_on
+ port map (AD3=>af_setcount_3, AD2=>wcount_3, AD1=>r_gcount_w23,
+ AD0=>wptr_3, DO0=>af_set_cmp_clr);
+
+ FF_69: 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_68: 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_67: 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_66: 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_65: 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_64: 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_63: 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_62: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>wcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset,
+ Q=>w_gcount_3);
+
+ FF_61: 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_60: 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_59: 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_58: 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_57: 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_56: 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_55: 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_54: 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_53: 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_52: 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_51: 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_50: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>r_gcount_3);
+
+ FF_49: 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_48: 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_47: 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_46: 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_45: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout0, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(0));
+
+ FF_44: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout1, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(1));
+
+ FF_43: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout2, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(2));
+
+ FF_42: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout3, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(3));
+
+ FF_41: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout4, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(4));
+
+ FF_40: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout5, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(5));
+
+ FF_39: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout6, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(6));
+
+ FF_38: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout7, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(7));
+
+ FF_37: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout8, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(8));
+
+ FF_36: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout9, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(9));
+
+ FF_35: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout10, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(10));
+
+ FF_34: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout11, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(11));
+
+ FF_33: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout12, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(12));
+
+ FF_32: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout13, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(13));
+
+ FF_31: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout14, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(14));
+
+ FF_30: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout15, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(15));
+
+ FF_29: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout16, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(16));
+
+ FF_28: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>rdataout17, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>Q(17));
+
+ FF_27: 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_26: 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_25: 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_24: 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_23: 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_22: 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_21: 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_20: 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_19: 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_18: 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_17: 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_16: 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_15: 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_14: 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_13: 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_12: 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_11: FD1S3BX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>empty_d, CK=>RdClock, PD=>rRst, Q=>empty_i);
+
+ FF_10: FD1S3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>full_d, CK=>WrClock, CD=>Reset, Q=>full_i);
+
+ FF_9: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iae_setcount_0, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>ae_setcount_0);
+
+ FF_8: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iae_setcount_1, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>ae_setcount_1);
+
+ FF_7: FD1P3BX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iae_setcount_2, SP=>rden_i, CK=>RdClock, PD=>rRst,
+ Q=>ae_setcount_2);
+
+ FF_6: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iae_setcount_3, SP=>rden_i, CK=>RdClock, CD=>rRst,
+ Q=>ae_setcount_3);
+
+ FF_5: FD1S3BX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>ae_set_d, CK=>RdClock, PD=>rRst, Q=>AlmostEmpty);
+
+ FF_4: FD1P3BX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iaf_setcount_0, SP=>wren_i, CK=>WrClock, PD=>Reset,
+ Q=>af_setcount_0);
+
+ FF_3: FD1P3BX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iaf_setcount_1, SP=>wren_i, CK=>WrClock, PD=>Reset,
+ Q=>af_setcount_1);
+
+ FF_2: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iaf_setcount_2, SP=>wren_i, CK=>WrClock, CD=>Reset,
+ Q=>af_setcount_2);
+
+ FF_1: FD1P3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>iaf_setcount_3, SP=>wren_i, CK=>WrClock, CD=>Reset,
+ Q=>af_setcount_3);
+
+ FF_0: FD1S3DX
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED")
+ -- synopsys translate_on
+ port map (D=>af_set, CK=>WrClock, CD=>Reset, Q=>AlmostFull);
+
+ w_gctr_0: CU2
+ port map (CI=>scuba_vhi, PC1=>wcount_1, PC0=>wcount_0, CO=>co0,
+ NC1=>iwcount_1, NC0=>iwcount_0);
+
+ w_gctr_1: CU2
+ port map (CI=>co0, PC1=>wcount_3, PC0=>wcount_2, CO=>co1,
+ NC1=>iwcount_3, NC0=>iwcount_2);
+
+ r_gctr_0: CU2
+ port map (CI=>scuba_vhi, PC1=>rcount_1, PC0=>rcount_0, CO=>co0_1,
+ NC1=>ircount_1, NC0=>ircount_0);
+
+ r_gctr_1: CU2
+ port map (CI=>co0_1, PC1=>rcount_3, PC0=>rcount_2, CO=>co1_1,
+ NC1=>ircount_3, NC0=>ircount_2);
+
+ empty_cmp_0: AGEB2
+ port map (A1=>rcount_1, A0=>rcount_0, B1=>wcount_r1,
+ B0=>w_g2b_xor_cluster_0, CI=>rden_i, GE=>co0_2);
+
+ empty_cmp_1: AGEB2
+ port map (A1=>empty_cmp_set, A0=>rcount_2, B1=>empty_cmp_clr,
+ B0=>wcount_r2, CI=>co0_2, GE=>empty_d_c);
+
+ a0: FADD2
+ port map (A1=>scuba_vlo, A0=>scuba_vlo, B1=>scuba_vlo,
+ B0=>scuba_vlo, CI=>empty_d_c, COUT1=>open, COUT0=>open,
+ S1=>open, S0=>empty_d);
+
+ full_cmp_0: AGEB2
+ port map (A1=>wcount_1, A0=>wcount_0, B1=>rcount_w1,
+ B0=>r_g2b_xor_cluster_0, CI=>wren_i, GE=>co0_3);
+
+ full_cmp_1: AGEB2
+ port map (A1=>full_cmp_set, A0=>wcount_2, B1=>full_cmp_clr,
+ B0=>rcount_w2, CI=>co0_3, GE=>full_d_c);
+
+ a1: FADD2
+ port map (A1=>scuba_vlo, A0=>scuba_vlo, B1=>scuba_vlo,
+ B0=>scuba_vlo, CI=>full_d_c, COUT1=>open, COUT0=>open,
+ S1=>open, S0=>full_d);
+
+ ae_set_ctr_0: CU2
+ port map (CI=>scuba_vhi, PC1=>ae_setcount_1, PC0=>ae_setcount_0,
+ CO=>co0_4, NC1=>iae_setcount_1, NC0=>iae_setcount_0);
+
+ ae_set_ctr_1: CU2
+ port map (CI=>co0_4, PC1=>ae_setcount_3, PC0=>ae_setcount_2,
+ CO=>co1_2, NC1=>iae_setcount_3, NC0=>iae_setcount_2);
+
+ ae_set_cmp_0: AGEB2
+ port map (A1=>ae_setcount_1, A0=>ae_setcount_0, B1=>wcount_r1,
+ B0=>w_g2b_xor_cluster_0, CI=>rden_i, GE=>co0_5);
+
+ ae_set_cmp_1: AGEB2
+ port map (A1=>ae_set_cmp_set, A0=>ae_setcount_2,
+ B1=>ae_set_cmp_clr, B0=>wcount_r2, CI=>co0_5, GE=>ae_set_d_c);
+
+ a2: FADD2
+ port map (A1=>scuba_vlo, A0=>scuba_vlo, B1=>scuba_vlo,
+ B0=>scuba_vlo, CI=>ae_set_d_c, COUT1=>open, COUT0=>open,
+ S1=>open, S0=>ae_set_d);
+
+ af_set_ctr_0: CU2
+ port map (CI=>scuba_vhi, PC1=>af_setcount_1, PC0=>af_setcount_0,
+ CO=>co0_6, NC1=>iaf_setcount_1, NC0=>iaf_setcount_0);
+
+ af_set_ctr_1: CU2
+ port map (CI=>co0_6, PC1=>af_setcount_3, PC0=>af_setcount_2,
+ CO=>co1_3, NC1=>iaf_setcount_3, NC0=>iaf_setcount_2);
+
+ af_set_cmp_0: AGEB2
+ port map (A1=>af_setcount_1, A0=>af_setcount_0, B1=>rcount_w1,
+ B0=>r_g2b_xor_cluster_0, CI=>wren_i, GE=>co0_7);
+
+ af_set_cmp_1: AGEB2
+ port map (A1=>af_set_cmp_set, A0=>af_setcount_2,
+ B1=>af_set_cmp_clr, B0=>rcount_w2, CI=>co0_7, GE=>af_set_c);
+
+ a3: FADD2
+ port map (A1=>scuba_vlo, A0=>scuba_vlo, B1=>scuba_vlo,
+ B0=>scuba_vlo, CI=>af_set_c, COUT1=>open, COUT0=>open,
+ S1=>open, S0=>af_set);
+
+ fifo_pfu_0_0: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(16), DI1=>Data(17), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout16, RDO1=>rdataout17);
+
+ fifo_pfu_0_1: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(14), DI1=>Data(15), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout14, RDO1=>rdataout15);
+
+ fifo_pfu_0_2: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(12), DI1=>Data(13), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout12, RDO1=>rdataout13);
+
+ fifo_pfu_0_3: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(10), DI1=>Data(11), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout10, RDO1=>rdataout11);
+
+ fifo_pfu_0_4: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(8), DI1=>Data(9), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout8, RDO1=>rdataout9);
+
+ fifo_pfu_0_5: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(6), DI1=>Data(7), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout6, RDO1=>rdataout7);
+
+ fifo_pfu_0_6: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(4), DI1=>Data(5), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout4, RDO1=>rdataout5);
+
+ fifo_pfu_0_7: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(2), DI1=>Data(3), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout2, RDO1=>rdataout3);
+
+ scuba_vhi_inst: VHI
+ port map (Z=>scuba_vhi);
+
+ scuba_vlo_inst: VLO
+ port map (Z=>scuba_vlo);
+
+ fifo_pfu_0_8: DPR16X2
+ -- synopsys translate_off
+ generic map (GSR=> "ENABLED", initval=> "0x0000000000000000")
+ -- synopsys translate_on
+ port map (DI0=>Data(0), DI1=>Data(1), WAD3=>scuba_vlo,
+ WAD2=>wptr_2, WAD1=>wptr_1, WAD0=>wptr_0, WRE=>scuba_vhi,
+ WPE=>wren_i, WCK=>WrClock, RAD3=>scuba_vlo, RAD2=>rptr_2,
+ RAD1=>rptr_1, RAD0=>rptr_0, WDO0=>open, WDO1=>open,
+ RDO0=>rdataout0, RDO1=>rdataout1);
+
+ Empty <= empty_i;
+ Full <= full_i;
+end Structure;
+
+-- synopsys translate_off
+library SCM;
+configuration Structure_CON of flexi_PCS_fifo_LUT is
+ for Structure
+ for all:DPR16X2 use entity SCM.DPR16X2(V); end for;
+ for all:ROM16X1 use entity SCM.ROM16X1(V); end for;
+ for all:AND2 use entity SCM.AND2(V); end for;
+ for all:OR2 use entity SCM.OR2(V); end for;
+ for all:XOR2 use entity SCM.XOR2(V); end for;
+ for all:INV use entity SCM.INV(V); end for;
+ for all:VHI use entity SCM.VHI(V); end for;
+ for all:VLO use entity SCM.VLO(V); end for;
+ for all:FADD2 use entity SCM.FADD2(V); end for;
+ for all:CU2 use entity SCM.CU2(V); end for;
+ for all:AGEB2 use entity SCM.AGEB2(V); end for;
+ for all:FD1P3BX use entity SCM.FD1P3BX(V); end for;
+ for all:FD1P3DX use entity SCM.FD1P3DX(V); end for;
+ for all:FD1S3BX use entity SCM.FD1S3BX(V); end for;
+ for all:FD1S3DX use entity SCM.FD1S3DX(V); end for;
+ end for;
+end Structure_CON;
+
+-- synopsys translate_on
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.all;
+library ieee;
+library work;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.all;
+
+entity flexi_PCS_synch is
+ generic (
+ HOW_MANY_CHANNELS : positive);
+ port (
+ CLK : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)-1 downto 0);
+ RX_CLK : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*4-1 downto 0);
+ RESET : in std_logic;
+ RXD : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ RXD_SYNCH : out std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ RX_K : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ RX_RST : out std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*4-1 downto 0);
+ CV : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ TXD : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ TXD_SYNCH : out std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ TX_FORCE_DISP : out std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ DATA_VALID_IN : in std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ DATA_VALID_OUT : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ FLEXI_PCS_SYNCH_STATUS : out std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0)
+ );
+end flexi_PCS_synch;
+architecture flexi_PCS_synch of flexi_PCS_synch is
+ component flexi_PCS_channel_synch
+ port (
+ CLK : in std_logic;
+ RX_CLK : in std_logic;
+ RESET : in std_logic;
+ RXD : in std_logic_vector(15 downto 0);
+ RXD_SYNCH : out std_logic_vector(15 downto 0);
+ RX_K : in std_logic_vector(1 downto 0);
+ RX_RST : out std_logic;
+ CV : in std_logic_vector(1 downto 0);
+ TXD : in std_logic_vector(15 downto 0);
+ TXD_SYNCH : out std_logic_vector(15 downto 0);
+ TX_FORCE_DISP : out std_logic_vector(1 downto 0);
+ DATA_VALID_IN : in std_logic;
+ DATA_VALID_OUT : out std_logic;
+ FLEXI_PCS_STATUS : out std_logic_vector(15 downto 0));
+ end component;
+begin
+ CHANNEL_GENERATE : for bit_index in 0 to HOW_MANY_CHANNELS-1 generate
+ begin
+ SYNCH :flexi_PCS_channel_synch
+ port map (
+ CLK => CLK(bit_index/4), --4 different channles clk
+ RX_CLK => RX_CLK(bit_index),
+ RESET => RESET,
+ RXD => RXD((bit_index*16+15) downto bit_index*16),
+ RXD_SYNCH => RXD_SYNCH((bit_index*16+15) downto bit_index*16),
+ RX_K => RX_K(bit_index*2+1 downto bit_index*2),
+ RX_RST => RX_RST(bit_index),
+ CV => CV((bit_index*2+1) downto bit_index*2),
+ TXD => TXD((bit_index*16+15) downto bit_index*16),
+ TXD_SYNCH => TXD_SYNCH((bit_index*16+15) downto bit_index*16),
+ TX_FORCE_DISP => TX_FORCE_DISP(bit_index*2+1 downto bit_index*2),
+ DATA_VALID_IN => DATA_VALID_IN(bit_index),
+ DATA_VALID_OUT => DATA_VALID_OUT(bit_index),
+ FLEXI_PCS_STATUS => FLEXI_PCS_SYNCH_STATUS((bit_index*16+15) downto bit_index*16)
+ );
+ end generate CHANNEL_GENERATE;
+end flexi_PCS_synch;
--- /dev/null
+COMMERCIAL;
+BLOCK RESETPATHS ;
+BLOCK ASYNCPATHS ;
+#LOCATE COMP "ADDON_RESET" SITE "J21" ;
+#LOCATE COMP "ADO_CLKOUTN" SITE "AE4" ;
+#LOCATE COMP "ADO_CLKOUTP" SITE "AE3" ;
+#LOCATE COMP "ADO_LV_0" SITE "D32" ;
+#LOCATE COMP "ADO_LV_1" SITE "D31" ;
+#LOCATE COMP "ADO_LV_2" SITE "F32" ;
+#LOCATE COMP "ADO_LV_3" SITE "F31" ;
+#LOCATE COMP "ADO_LV_4" SITE "J29" ;
+#LOCATE COMP "ADO_LV_5" SITE "H29" ;
+#LOCATE COMP "ADO_LV_6" SITE "L32" ;
+#LOCATE COMP "ADO_LV_7" SITE "M32" ;
+#LOCATE COMP "ADO_LV_8" SITE "P30" ;
+#LOCATE COMP "ADO_LV_9" SITE "P29" ;
+#LOCATE COMP "ADO_LV_10" SITE "R30" ;
+#LOCATE COMP "ADO_LV_11" SITE "R29" ;
+#LOCATE COMP "ADO_LV_12" SITE "T31" ;
+#LOCATE COMP "ADO_LV_13" SITE "T32" ;
+#LOCATE COMP "ADO_LV_14" SITE "V32" ;
+#LOCATE COMP "ADO_LV_15" SITE "V31" ;
+#LOCATE COMP "ADO_LV_16" SITE "W30" ;
+#LOCATE COMP "ADO_LV_17" SITE "W29" ;
+#LOCATE COMP "ADO_LV_18" SITE "W28" ;
+#LOCATE COMP "ADO_LV_19" SITE "Y28" ;
+#LOCATE COMP "ADO_LV_20" SITE "AB32" ;
+#LOCATE COMP "ADO_LV_21" SITE "AA32" ;
+#LOCATE COMP "ADO_LV_22" SITE "AD29" ;
+#LOCATE COMP "ADO_LV_23" SITE "AD30" ;
+#LOCATE COMP "ADO_LV_24" SITE "AC32" ;
+#LOCATE COMP "ADO_LV_25" SITE "AD32" ;
+#LOCATE COMP "ADO_LV_26" SITE "AE31" ;
+#LOCATE COMP "ADO_LV_27" SITE "AE32" ;
+#LOCATE COMP "ADO_LV_28" SITE "E32" ;
+#LOCATE COMP "ADO_LV_29" SITE "E31" ;
+#LOCATE COMP "ADO_LV_30" SITE "G31" ;
+#LOCATE COMP "ADO_LV_31" SITE "G32" ;
+#LOCATE COMP "ADO_LV_32" SITE "H31" ;
+#LOCATE COMP "ADO_LV_33" SITE "H32" ;
+#LOCATE COMP "ADO_LV_34" SITE "N31" ;
+#LOCATE COMP "ADO_LV_35" SITE "N32" ;
+#LOCATE COMP "ADO_LV_36" SITE "P32" ;
+#LOCATE COMP "ADO_LV_37" SITE "P31" ;
+#LOCATE COMP "ADO_LV_38" SITE "R31" ;
+#LOCATE COMP "ADO_LV_39" SITE "R32" ;
+#LOCATE COMP "ADO_LV_40" SITE "U32" ;
+#LOCATE COMP "ADO_LV_41" SITE "U31" ;
+#LOCATE COMP "ADO_LV_42" SITE "V29" ;
+#LOCATE COMP "ADO_LV_43" SITE "V30" ;
+#LOCATE COMP "ADO_LV_44" SITE "W31" ;
+#LOCATE COMP "ADO_LV_45" SITE "Y31" ;
+#LOCATE COMP "ADO_LV_46" SITE "W32" ;
+#LOCATE COMP "ADO_LV_47" SITE "Y32" ;
+#LOCATE COMP "ADO_LV_48" SITE "AD31" ;
+#LOCATE COMP "ADO_LV_49" SITE "AC31" ;
+#LOCATE COMP "ADO_LV_50" SITE "AC28" ;
+#LOCATE COMP "ADO_LV_51" SITE "AD28" ;
+#LOCATE COMP "ADO_LV_52" SITE "AE30" ;
+#LOCATE COMP "ADO_LV_53" SITE "AE29" ;
+#LOCATE COMP "ADO_LV_54" SITE "AF32" ;
+#LOCATE COMP "ADO_LV_55" SITE "AF31" ;
+#LOCATE COMP "ADO_LV_56" SITE "AG1" ;
+#LOCATE COMP "ADO_LV_57" SITE "AG2" ;
+#LOCATE COMP "ADO_LV_58" SITE "AE2" ;
+#LOCATE COMP "ADO_LV_59" SITE "AE1" ;
+#LOCATE COMP "ADO_LV_60" SITE "AF1" ;
+#LOCATE COMP "ADO_LV_61" SITE "AF2" ;
+LOCATE COMP "ADO_TTL_0" SITE "AJ32" ;
+LOCATE COMP "ADO_TTL_1" SITE "AF27" ;
+LOCATE COMP "ADO_TTL_2" SITE "AK31" ;
+LOCATE COMP "ADO_TTL_3" SITE "AE25" ;
+LOCATE COMP "ADO_TTL_4" SITE "AK30" ;
+LOCATE COMP "ADO_TTL_5" SITE "AD23" ;
+LOCATE COMP "ADO_TTL_6" SITE "AK29" ;
+LOCATE COMP "ADO_TTL_7" SITE "AF26" ;
+LOCATE COMP "ADO_TTL_8" SITE "AJ28" ;
+LOCATE COMP "ADO_TTL_9" SITE "AJ31" ;
+LOCATE COMP "ADO_TTL_10" SITE "AM30" ;
+LOCATE COMP "ADO_TTL_11" SITE "AH29" ;
+LOCATE COMP "ADO_TTL_12" SITE "AJ27" ;
+LOCATE COMP "ADO_TTL_13" SITE "AE22" ;
+LOCATE COMP "ADO_TTL_14" SITE "AL28" ;
+LOCATE COMP "ADO_TTL_15" SITE "AC21" ;
+LOCATE COMP "ADO_TTL_16" SITE "AM28" ;
+LOCATE COMP "ADO_TTL_17" SITE "AG23" ;
+LOCATE COMP "ADO_TTL_18" SITE "AG26" ;
+LOCATE COMP "ADO_TTL_19" SITE "AL26" ;
+LOCATE COMP "ADO_TTL_20" SITE "AK32" ;
+LOCATE COMP "ADO_TTL_21" SITE "AG28" ;
+LOCATE COMP "ADO_TTL_22" SITE "AL31" ;
+LOCATE COMP "ADO_TTL_23" SITE "AE24" ;
+LOCATE COMP "ADO_TTL_24" SITE "AL30" ;
+LOCATE COMP "ADO_TTL_25" SITE "AE23" ;
+LOCATE COMP "ADO_TTL_26" SITE "AL29" ;
+LOCATE COMP "ADO_TTL_27" SITE "AF25" ;
+LOCATE COMP "ADO_TTL_28" SITE "AK28" ;
+LOCATE COMP "ADO_TTL_29" SITE "AH30" ;
+LOCATE COMP "ADO_TTL_30" SITE "AM29" ;
+LOCATE COMP "ADO_TTL_31" SITE "AH28" ;
+LOCATE COMP "ADO_TTL_32" SITE "AK27" ;
+LOCATE COMP "ADO_TTL_33" SITE "AF23" ;
+LOCATE COMP "ADO_TTL_34" SITE "AL27" ;
+LOCATE COMP "ADO_TTL_35" SITE "AD21" ;
+LOCATE COMP "ADO_TTL_36" SITE "AM27" ;
+LOCATE COMP "ADO_TTL_37" SITE "AF22" ;
+LOCATE COMP "ADO_TTL_38" SITE "AG25" ;
+LOCATE COMP "ADO_TTL_39" SITE "AM26" ;
+LOCATE COMP "ADO_TTL_40" SITE "AK24" ;
+LOCATE COMP "ADO_TTL_41" SITE "AE20" ;
+LOCATE COMP "ADO_TTL_42" SITE "AJ24" ;
+LOCATE COMP "ADO_TTL_43" SITE "AE21" ;
+LOCATE COMP "ADO_TTL_44" SITE "AJ22" ;
+LOCATE COMP "ADO_TTL_45" SITE "AK22" ;
+LOCATE COMP "ADO_TTL_46" SITE "AG22" ;
+IOBUF PORT "ADO_TTL_0" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_1" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_2" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_3" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_4" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_5" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_6" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_7" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_8" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_9" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_10" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_11" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_12" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_13" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_14" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_15" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_16" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_17" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_18" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_19" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_20" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_21" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_22" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_23" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_24" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_25" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_26" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_27" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_28" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_29" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_30" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_31" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_32" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_33" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_34" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_35" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_36" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_37" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_38" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_39" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_40" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_41" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_42" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_43" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_44" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_45" IO_TYPE=LVTTL33 ;
+IOBUF PORT "ADO_TTL_46" IO_TYPE=LVTTL33 ;
+LOCATE COMP "DBAD" SITE "AM20" ;
+LOCATE COMP "DGOOD" SITE "AH20" ;
+LOCATE COMP "DINT" SITE "AJ18" ;
+LOCATE COMP "DWAIT" SITE "AH21" ;
+IOBUF PORT "DBAD" IO_TYPE=LVTTL33 ;
+IOBUF PORT "DGOOD" IO_TYPE=LVTTL33 ;
+IOBUF PORT "DINT" IO_TYPE=LVTTL33 ;
+IOBUF PORT "DWAIT" IO_TYPE=LVTTL33 ;
+#LOCATE COMP "FROM_TRB_TO_ADDON_CLK" SITE "T10" ;
+#LOCATE COMP "FROM_TRB_TO_ADDON_CLKB" SITE "T9" ;
+#LOCATE COMP "FS_PE_0" SITE "J13" ;
+#LOCATE COMP "FS_PE_1" SITE "K9" ;
+#LOCATE COMP "FS_PE_2" SITE "J12" ;
+#LOCATE COMP "FS_PE_5" SITE "AM16" ;
+#LOCATE COMP "FS_PE_6" SITE "AL16" ;
+#LOCATE COMP "FS_PE_7" SITE "AM15" ;
+#LOCATE COMP "FS_PE_8" SITE "AL15" ;
+#LOCATE COMP "FS_PE_9" SITE "AM14" ;
+#LOCATE COMP "FS_PE_10" SITE "AC16" ;
+#LOCATE COMP "FS_PE_11" SITE "AH16" ;
+#LOCATE COMP "FS_PE_12" SITE "AK15" ;
+#LOCATE COMP "FS_PE_13" SITE "AH14" ;
+#LOCATE COMP "FS_PE_14" SITE "AM13" ;
+#LOCATE COMP "FS_PE_15" SITE "AH12" ;
+#LOCATE COMP "FS_PE_16" SITE "AK14" ;
+#LOCATE COMP "FS_PE_17" SITE "AD15" ;
+
+LOCATE COMP "OPLL" SITE "AL11" ;
+LOCATE COMP "IPLL" SITE "AL10" ;
+LOCATE COMP "LOK_1" SITE "AJ1" ;
+LOCATE COMP "LOK_2" SITE "AL2" ;
+LOCATE COMP "LOK_3" SITE "AK3" ;
+LOCATE COMP "LOK_4" SITE "AL4" ;
+LOCATE COMP "LOK_5" SITE "AM4" ;
+LOCATE COMP "LOK_6" SITE "AH5" ;
+LOCATE COMP "LOK_7" SITE "AG5" ;
+LOCATE COMP "LOK_8" SITE "AK5" ;
+LOCATE COMP "LOK_9" SITE "AK6" ;
+LOCATE COMP "LOK_10" SITE "AM5" ;
+LOCATE COMP "LOK_11" SITE "AM6" ;
+LOCATE COMP "LOK_12" SITE "AF8" ;
+LOCATE COMP "LOK_13" SITE "AE9" ;
+LOCATE COMP "LOK_14" SITE "AE10" ;
+LOCATE COMP "LOK_15" SITE "AF11" ;
+LOCATE COMP "LOK_16" SITE "AD12" ;
+IOBUF PORT "IPLL" IO_TYPE=LVTTL33 ;
+IOBUF PORT "OPLL" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_1" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_2" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_3" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_4" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_5" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_6" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_7" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_8" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_9" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_10" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_11" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_12" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_13" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_14" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_15" IO_TYPE=LVTTL33 ;
+IOBUF PORT "LOK_16" IO_TYPE=LVTTL33 ;
+LOCATE COMP "LVDS_CLK_200P" SITE "P3" ;
+#LOCATE COMP "LVDS_CLK_200N" SITE "P4" ;
+IOBUF PORT "LVDS_CLK_200P" IO_TYPE=LVDS ;
+#IOBUF PORT "LVDS_CLK_200N" IO_TYPE=LVDS ;
+FREQUENCY PORT "LVDS_CLK_200P" 100.000000 MHz ;
+#FREQUENCY PORT "LVDS_CLK_200N" 200.000000 MHz ;
+IOBUF PORT "LVDS_CLK_200P" DIFFRESISTOR=120 ;
+
+#LOCATE COMP "RESET" SITE "AL23" ;
+LOCATE COMP "RT_1" SITE "AK1" ;
+LOCATE COMP "RT_2" SITE "AK2" ;
+LOCATE COMP "RT_3" SITE "AJ3" ;
+LOCATE COMP "RT_4" SITE "AL3" ;
+LOCATE COMP "RT_5" SITE "AM3" ;
+LOCATE COMP "RT_6" SITE "AH4" ;
+LOCATE COMP "RT_7" SITE "AF6" ;
+LOCATE COMP "RT_8" SITE "AJ5" ;
+LOCATE COMP "RT_9" SITE "AJ6" ;
+LOCATE COMP "RT_10" SITE "AL5" ;
+LOCATE COMP "RT_11" SITE "AL6" ;
+LOCATE COMP "RT_12" SITE "AF7" ;
+LOCATE COMP "RT_13" SITE "AE8" ;
+LOCATE COMP "RT_14" SITE "AD10" ;
+LOCATE COMP "RT_15" SITE "AE11" ;
+LOCATE COMP "RT_16" SITE "AE12" ;
+IOBUF PORT "RT_1" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_2" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_3" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_4" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_5" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_6" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_7" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_8" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_9" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_10" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_11" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_12" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_13" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_14" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_15" IO_TYPE=LVTTL33 ;
+IOBUF PORT "RT_16" IO_TYPE=LVTTL33 ;
+#LOCATE COMP "GBIT_INP_N" SITE "C2" ;
+#LOCATE COMP "GBIT_INP_P" SITE "C1" ;
+#LOCATE COMP "GBIT_OUT_N" SITE "B3" ;
+#LOCATE COMP "GBIT_OUT_P" SITE "A3" ;
+#LOCATE COMP "GBIT_SFP_LOS" SITE "J15" ;
+#LOCATE COMP "GBIT_SFP_MOD_0" SITE "A19" ;
+#LOCATE COMP "GBIT_SFP_MOD_1" SITE "H18" ;
+#LOCATE COMP "GBIT_SFP_MOD_2" SITE "H17" ;
+
+#LOCATE COMP "GBIT_TX_FAULT" SITE "K15" ;
+#LOCATE COMP "S1_GBIT_SFP_MOD_0" SITE "AG17" ;
+#LOCATE COMP "S1_GBIT_TX_FAULT" SITE "AK21" ;
+#LOCATE COMP "S2_GBIT_TX_DIS" SITE "AF19" ;
+#LOCATE COMP "S2_GBIT_SFP_LOS" SITE "AM22" ;
+#LOCATE COMP "S2_GBIT_SFP_MOD_0" SITE "AC17" ;
+#LOCATE COMP "S3_GBIT_SFP_LOS" SITE "AL21" ;
+#LOCATE COMP "S2_GBIT_TX_FAULT" SITE "AM23" ;
+#LOCATE COMP "S3_GBIT_SFP_MOD_0" SITE "AM17" ;
+#LOCATE COMP "S3_GBIT_TX_FAULT" SITE "AH26" ;
+#LOCATE COMP "S3_GBIT_TX_DIS" SITE "AH25" ;
+#LOCATE COMP "S1_GBIT_SFP_LOS" SITE "AE19" ;
+#LOCATE COMP "S1_GBIT_TX_DIS" SITE "AJ21" ;
+#LOCATE COMP "S1_GBIT_SFP_MOD_1" SITE "AL18" ;
+#LOCATE COMP "S3_GBIT_SFP_MOD_1" SITE "AE17" ;
+#LOCATE COMP "S2_GBIT_SFP_MOD_1" SITE "AD17" ;
+#LOCATE COMP "S2_GBIT_SFP_MOD_2" SITE "AL17" ;
+#LOCATE COMP "S3_GBIT_SFP_MOD_2" SITE "AF17" ;
+#LOCATE COMP "S1_GBIT_SFP_MOD_2" SITE "AM18" ;
+#LOCATE COMP "SERDES_125P" SITE "C5" ;
+#LOCATE COMP "SERDES_200N" SITE "D28" ;
+#LOCATE COMP "SERDES_200P" SITE "C28" ;
+#LOCATE COMP "SERDES_200N" SITE "A_REFCLKN_L" ;
+#LOCATE COMP "SERDES_200P" SITE "A_REFCLKP_L" ;
+
+#LOCATE COMP "SERDES_125N" SITE "D5" ;
+#LOCATE COMP "SFP7_MOD_0" SITE "AE14" ;
+#LOCATE COMP "SFP2_MOD_0" SITE "J18" ;
+#LOCATE COMP "SFP1_MOD_0" SITE "F20" ;
+#LOCATE COMP "SFP4_MOD_0" SITE "D20" ;
+#LOCATE COMP "SFP3_MOD_0" SITE "G20" ;
+#LOCATE COMP "SFP8_MOD_0" SITE "AK12" ;
+#LOCATE COMP "SFP12_MOD_0" SITE "J17" ;
+#LOCATE COMP "SFP9_MOD_0" SITE "AM10" ;
+#LOCATE COMP "SFP5_MOD_0" SITE "C19" ;
+#LOCATE COMP "SFP11_MOD_0" SITE "D18" ;
+#LOCATE COMP "SFP6_MOD_0" SITE "E17" ;
+#LOCATE COMP "SFP10_MOD_0" SITE "AG14" ;
+#LOCATE COMP "SFP12_MOD_1" SITE "L20" ;
+#LOCATE COMP "SFP11_MOD_1" SITE "C18" ;
+#LOCATE COMP "SFP9_MOD_1" SITE "AM11" ;
+#LOCATE COMP "SFP6_MOD_1" SITE "B20" ;
+#LOCATE COMP "SFP8_MOD_1" SITE "AH10" ;
+#LOCATE COMP "SFP4_MOD_1" SITE "G19" ;
+#LOCATE COMP "SFP5_MOD_1" SITE "C20" ;
+#LOCATE COMP "SFP3_MOD_1" SITE "H20" ;
+#LOCATE COMP "SFP7_MOD_1" SITE "AF14" ;
+#LOCATE COMP "SFP1_MOD_1" SITE "E20" ;
+#LOCATE COMP "SFP2_MOD_1" SITE "F19" ;
+#LOCATE COMP "SFP10_MOD_1" SITE "AL12" ;
+#LOCATE COMP "SFP10_MOD_2" SITE "AL13" ;
+#LOCATE COMP "SFP5_MOD_2" SITE "E18" ;
+#LOCATE COMP "SFP4_MOD_2" SITE "H19" ;
+#LOCATE COMP "SFP9_MOD_2" SITE "AG13" ;
+#LOCATE COMP "SFP6_MOD_2" SITE "B19" ;
+#LOCATE COMP "SFP2_MOD_2" SITE "E19" ;
+#LOCATE COMP "SFP7_MOD_2" SITE "AJ12" ;
+#LOCATE COMP "SFP3_MOD_2" SITE "D19" ;
+#LOCATE COMP "SFP1_MOD_2" SITE "K18" ;
+#LOCATE COMP "SFP8_MOD_2" SITE "AH11" ;
+#LOCATE COMP "SFP12_MOD_2" SITE "A20" ;
+#LOCATE COMP "SFP11_MOD_2" SITE "K17" ;
+#IOBUF PORT "SFP7_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP2_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP1_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP4_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP3_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP8_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP12_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP9_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP5_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP11_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP6_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP10_MOD_0" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP12_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP11_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP9_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP6_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP8_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP4_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP5_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP3_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP7_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP1_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP2_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP10_MOD_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP10_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP5_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP4_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP9_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP6_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP2_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP7_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP3_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP1_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP8_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP12_MOD_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP11_MOD_2" IO_TYPE=LVTTL33 ;
+
+
+#LOCATE COMP "SFP_LOS_1" SITE "A18" ;
+#LOCATE COMP "SFP_LOS_2" SITE "A15" ;
+#LOCATE COMP "SFP_LOS_3" SITE "B15" ;
+#LOCATE COMP "SFP_LOS_4" SITE "G16" ;
+#LOCATE COMP "SFP_LOS_5" SITE "H16" ;
+#LOCATE COMP "SFP_LOS_6" SITE "J16" ;
+#LOCATE COMP "SFP_LOS_7" SITE "L13" ;
+#LOCATE COMP "SFP_LOS_8" SITE "C14" ;
+#LOCATE COMP "SFP_LOS_9" SITE "E15" ;
+#LOCATE COMP "SFP_LOS_10" SITE "G14" ;
+#LOCATE COMP "SFP_LOS_11" SITE "E14" ;
+#LOCATE COMP "SFP_LOS_12" SITE "F13" ;
+#IOBUF PORT "SFP_LOS_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_3" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_4" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_5" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_6" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_7" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_8" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_9" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_10" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_11" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "SFP_LOS_12" IO_TYPE=LVTTL33 ;
+
+
+#LOCATE COMP "quad_a/PCSA_INST" SITE "PCS36000" ;
+LOCATE COMP "QUAD_GENERATE_0_QUAD/PCSA_INST" SITE "PCS36000" ;
+LOCATE COMP "QUAD_GENERATE_1_QUAD/PCSA_INST" SITE "PCS36100" ;
+LOCATE COMP "QUAD_GENERATE_2_QUAD/PCSA_INST" SITE "PCS3E100" ;
+LOCATE COMP "QUAD_GENERATE_3_QUAD/PCSA_INST" SITE "PCS3E000" ;
+#LOCATE COMP "TEST/PCSA_INST" SITE "PCS36000" ;
+FREQUENCY PORT "ref_pclk_0/QUAD_GENERATE_0_QUAD" 100.000000MHz;
+FREQUENCY PORT "ref_pclk_1/QUAD_GENERATE_1_QUAD" 100.000000MHz;
+FREQUENCY PORT "ref_pclk_2/QUAD_GENERATE_2_QUAD" 100.000000MHz;
+FREQUENCY PORT "ref_pclk_3/QUAD_GENERATE_3_QUAD" 100.000000MHz;
+#FREQUENCY PORT "rxa_pclk_a/quad_a" 100.000000MHz;
+#FREQUENCY PORT "rx_1_sclk_a/quad_a" 100.000000MHz;
+#FREQUENCY PORT "rx_2_sclk_a/quad_a" 100.000000MHz;
+#FREQUENCY PORT "rx_3_sclk_a/quad_a" 100.000000MHz;
+
+#LOCATE COMP "SUPPL_RESET" SITE "B18" ;
+LOCATE COMP "TX_DIS_1" SITE "G17" ;
+LOCATE COMP "TX_DIS_2" SITE "A17" ;
+LOCATE COMP "TX_DIS_3" SITE "A16" ;
+LOCATE COMP "TX_DIS_4" SITE "B16" ;
+LOCATE COMP "TX_DIS_5" SITE "A13" ;
+LOCATE COMP "TX_DIS_6" SITE "H15" ;
+LOCATE COMP "TX_DIS_7" SITE "D15" ;
+LOCATE COMP "TX_DIS_8" SITE "B13" ;
+LOCATE COMP "TX_DIS_9" SITE "C13" ;
+LOCATE COMP "TX_DIS_10" SITE "D14" ;
+LOCATE COMP "TX_DIS_11" SITE "H14" ;
+LOCATE COMP "TX_DIS_12" SITE "G13" ;
+LOCATE COMP "TX_DIS_13" SITE "E13" ;
+LOCATE COMP "TX_DIS_14" SITE "AJ21" ;
+LOCATE COMP "TX_DIS_15" SITE "AF19" ;
+LOCATE COMP "TX_DIS_16" SITE "AH25" ;
+
+IOBUF PORT "TX_DIS_1" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_2" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_3" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_4" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_5" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_6" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_7" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_8" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_9" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_10" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_11" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_12" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_13" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_14" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_15" IO_TYPE=LVTTL33 ;
+IOBUF PORT "TX_DIS_16" IO_TYPE=LVTTL33 ;
+
+#LOCATE COMP "TX_FAULT_1" SITE "F17" ;
+#LOCATE COMP "TX_FAULT_2" SITE "L17" ;
+#LOCATE COMP "TX_FAULT_3" SITE "L16" ;
+#LOCATE COMP "TX_FAULT_4" SITE "F16" ;
+#LOCATE COMP "TX_FAULT_5" SITE "A14" ;
+#LOCATE COMP "TX_FAULT_6" SITE "K16" ;
+#LOCATE COMP "TX_FAULT_7" SITE "C15" ;
+#LOCATE COMP "TX_FAULT_8" SITE "B14" ;
+#LOCATE COMP "TX_FAULT_9" SITE "E16" ;
+#LOCATE COMP "TX_FAULT_10" SITE "D13" ;
+#LOCATE COMP "TX_FAULT_11" SITE "F14" ;
+#LOCATE COMP "TX_FAULT_12" SITE "H13" ;
+#IOBUF PORT "TX_FAULT_1" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_2" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_3" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_4" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_5" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_6" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_7" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_8" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_9" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_10" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_11" IO_TYPE=LVTTL33 ;
+#IOBUF PORT "TX_FAULT_12" IO_TYPE=LVTTL33 ;
+
+
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.all;
+library ieee;
+library work;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.all;
+use work.trb_net_std.all;
+use work.trb_net16_hub_func.all;
+-- library sc;
+-- use sc.components.all;
+entity hub is
+ port (
+ LVDS_CLK_200P : in std_logic;
+-- LVDS_CLK_200N : in std_logic;
+-- SERDES_200N : in std_logic;
+-- SERDES_200P : in std_logic;
+-- ADO_LV : in std_logic_vector(61 downto 0);
+ ADO_TTL : inout std_logic_vector(46 downto 0);
+ DBAD : out std_logic;
+ DGOOD : out std_logic;
+ DINT : out std_logic;
+ DWAIT : out std_logic;
+ LOK : out std_logic_vector(16 downto 1);
+ RT : out std_logic_vector(16 downto 1);
+ TX_DIS : out std_logic_vector(16 downto 1);
+ IPLL : out std_logic;
+ OPLL : out std_logic;
+ SFP_INP_N : in std_logic_vector(15 downto 0);
+ SFP_INP_P : in std_logic_vector(15 downto 0);
+ SFP_OUT_N : out std_logic_vector(15 downto 0);
+ SFP_OUT_P : out std_logic_vector(15 downto 0);
+ ---------------------------------------------------------------------------
+ -- sim
+ ---------------------------------------------------------------------------
+ OPT_DATA_IN : in std_logic_vector(31 downto 0);
+ OPT_DATA_OUT : out std_logic_vector(31 downto 0);
+ OPT_DATA_VALID_IN : in std_logic_vector(1 downto 0);
+ OPT_DATA_VALID_OUT : out std_logic_vector(1 downto 0)
+ );
+end hub;
+architecture hub of hub is
+ component trb_hub_interface
+ port (
+ CLK : in std_logic;
+ RESET : in std_logic;
+ STROBE : in std_logic;
+ INTERNAL_DATA_IN : in std_logic_vector(7 downto 0);
+ INTERNAL_DATA_OUT : out std_logic_vector(7 downto 0);
+ INTERNAL_ADDRESS : in std_logic_vector(15 downto 0);
+ INTERNAL_MODE : in std_logic;
+ VALID_DATA_SENT : out std_logic;
+ hub_register_00 : in std_logic_vector(7 downto 0);
+ hub_register_01 : in std_logic_vector(7 downto 0);
+ hub_register_02 : in std_logic_vector(7 downto 0);
+ hub_register_03 : in std_logic_vector(7 downto 0);
+ hub_register_04 : in std_logic_vector(7 downto 0);
+ hub_register_05 : in std_logic_vector(7 downto 0);
+ hub_register_06 : in std_logic_vector(7 downto 0);
+ hub_register_07 : in std_logic_vector(7 downto 0);
+ hub_register_08 : in std_logic_vector(7 downto 0);
+ hub_register_09 : in std_logic_vector(7 downto 0);
+ hub_register_0a : out std_logic_vector(7 downto 0);
+ hub_register_0b : out std_logic_vector(7 downto 0);
+ hub_register_0c : out std_logic_vector(7 downto 0);
+ hub_register_0d : out std_logic_vector(7 downto 0);
+ hub_register_0e : out std_logic_vector(7 downto 0);
+ hub_register_0f : out std_logic_vector(7 downto 0);
+ hub_register_10 : in std_logic_vector(7 downto 0);
+ hub_register_11 : in std_logic_vector(7 downto 0);
+ hub_register_12 : in std_logic_vector(7 downto 0);
+ hub_register_13 : in std_logic_vector(7 downto 0);
+ hub_register_14 : in std_logic_vector(7 downto 0);
+ hub_register_15 : in std_logic_vector(7 downto 0);
+ hub_register_16 : in std_logic_vector(7 downto 0)
+ );
+ end component;
+ component serdes_fpga_ref_clk--serdes
+ port(
+-- refclkp : in std_logic;
+-- refclkn : in std_logic;
+ rxrefclk : in std_logic;
+ refclk : in std_logic;
+ hdinp_0 : in std_logic;
+ hdinn_0 : in std_logic;
+ tclk_0 : in std_logic;
+ rclk_0 : in std_logic;
+ tx_rst_0 : in std_logic;
+ rx_rst_0 : in std_logic;
+ txd_0 : in std_logic_vector(15 downto 0);
+ tx_k_0 : in std_logic_vector(1 downto 0);
+ tx_force_disp_0 : in std_logic_vector(1 downto 0);
+ tx_disp_sel_0 : in std_logic_vector(1 downto 0);
+ tx_crc_init_0 : in std_logic_vector(1 downto 0);
+ word_align_en_0 : in std_logic;
+ mca_align_en_0 : in std_logic;
+ felb_0 : in std_logic;
+ lsm_en_0 : in std_logic;
+ hdinp_1 : in std_logic;
+ hdinn_1 : in std_logic;
+ tclk_1 : in std_logic;
+ rclk_1 : in std_logic;
+ tx_rst_1 : in std_logic;
+ rx_rst_1 : in std_logic;
+ txd_1 : in std_logic_vector(15 downto 0);
+ tx_k_1 : in std_logic_vector(1 downto 0);
+ tx_force_disp_1 : in std_logic_vector(1 downto 0);
+ tx_disp_sel_1 : in std_logic_vector(1 downto 0);
+ tx_crc_init_1 : in std_logic_vector(1 downto 0);
+ word_align_en_1 : in std_logic;
+ mca_align_en_1 : in std_logic;
+ felb_1 : in std_logic;
+ lsm_en_1 : in std_logic;
+ hdinp_2 : in std_logic;
+ hdinn_2 : in std_logic;
+ tclk_2 : in std_logic;
+ rclk_2 : in std_logic;
+ tx_rst_2 : in std_logic;
+ rx_rst_2 : in std_logic;
+ txd_2 : in std_logic_vector(15 downto 0);
+ tx_k_2 : in std_logic_vector(1 downto 0);
+ tx_force_disp_2 : in std_logic_vector(1 downto 0);
+ tx_disp_sel_2 : in std_logic_vector(1 downto 0);
+ tx_crc_init_2 : in std_logic_vector(1 downto 0);
+ word_align_en_2 : in std_logic;
+ mca_align_en_2 : in std_logic;
+ felb_2 : in std_logic;
+ lsm_en_2 : in std_logic;
+ hdinp_3 : in std_logic;
+ hdinn_3 : in std_logic;
+ tclk_3 : in std_logic;
+ rclk_3 : in std_logic;
+ tx_rst_3 : in std_logic;
+ rx_rst_3 : in std_logic;
+ txd_3 : in std_logic_vector(15 downto 0);
+ tx_k_3 : in std_logic_vector(1 downto 0);
+ tx_force_disp_3 : in std_logic_vector(1 downto 0);
+ tx_disp_sel_3 : in std_logic_vector(1 downto 0);
+ tx_crc_init_3 : in std_logic_vector(1 downto 0);
+ word_align_en_3 : in std_logic;
+ mca_align_en_3 : in std_logic;
+ felb_3 : in std_logic;
+ lsm_en_3 : in std_logic;
+ mca_resync_01 : in std_logic;
+ mca_resync_23 : in std_logic;
+ quad_rst : in std_logic;
+ serdes_rst : in std_logic;
+ rxa_pclk : out std_logic;
+ rxb_pclk : out std_logic;
+ hdoutp_0 : out std_logic;
+ hdoutn_0 : out std_logic;
+ ref_0_sclk : out std_logic;
+ rx_0_sclk : out std_logic;
+ rxd_0 : out std_logic_vector(15 downto 0);
+ rx_k_0 : out std_logic_vector(1 downto 0);
+ rx_disp_err_detect_0 : out std_logic_vector(1 downto 0);
+ rx_cv_detect_0 : out std_logic_vector(1 downto 0);
+ rx_crc_eop_0 : out std_logic_vector(1 downto 0);
+ lsm_status_0 : out std_logic;
+ hdoutp_1 : out std_logic;
+ hdoutn_1 : out std_logic;
+ ref_1_sclk : out std_logic;
+ rx_1_sclk : out std_logic;
+ rxd_1 : out std_logic_vector(15 downto 0);
+ rx_k_1 : out std_logic_vector(1 downto 0);
+ rx_disp_err_detect_1 : out std_logic_vector(1 downto 0);
+ rx_cv_detect_1 : out std_logic_vector(1 downto 0);
+ rx_crc_eop_1 : out std_logic_vector(1 downto 0);
+ lsm_status_1 : out std_logic;
+ hdoutp_2 : out std_logic;
+ hdoutn_2 : out std_logic;
+ ref_2_sclk : out std_logic;
+ rx_2_sclk : OUT std_logic;
+ rxd_2 : OUT std_logic_vector(15 downto 0);
+ rx_k_2 : OUT std_logic_vector(1 downto 0);
+ rx_disp_err_detect_2 : OUT std_logic_vector(1 downto 0);
+ rx_cv_detect_2 : OUT std_logic_vector(1 downto 0);
+ rx_crc_eop_2 : OUT std_logic_vector(1 downto 0);
+ lsm_status_2 : OUT std_logic;
+ hdoutp_3 : OUT std_logic;
+ hdoutn_3 : OUT std_logic;
+ ref_3_sclk : OUT std_logic;
+ rx_3_sclk : OUT std_logic;
+ rxd_3 : OUT std_logic_vector(15 downto 0);
+ rx_k_3 : OUT std_logic_vector(1 downto 0);
+ rx_disp_err_detect_3 : out std_logic_vector(1 downto 0);
+ rx_cv_detect_3 : out std_logic_vector(1 downto 0);
+ rx_crc_eop_3 : out std_logic_vector(1 downto 0);
+ lsm_status_3 : out std_logic;
+ mca_aligned_01 : out std_logic;
+ mca_inskew_01 : out std_logic;
+ mca_outskew_01 : out std_logic;
+ mca_aligned_23 : out std_logic;
+ mca_inskew_23 : out std_logic;
+ mca_outskew_23 : out std_logic;
+ ref_pclk : out std_logic
+ );
+ end component;
+ component flexi_PCS_synch
+ generic (
+ HOW_MANY_CHANNELS : positive);
+ port (
+ CLK : in std_logic_vector((HOW_MANY_CHANNELS+3)/4-1 downto 0);
+ RX_CLK : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*4-1 downto 0);
+ RESET : in std_logic;
+ RXD : in std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0);
+ RXD_SYNCH : out std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0);
+ RX_K : in std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ RX_RST : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ CV : in std_logic_vector(HOW_MANY_CHANNELS*2-1 downto 0);
+ TXD : in std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0);
+ TXD_SYNCH : out std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0);
+ TX_FORCE_DISP : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ DATA_VALID_IN : in std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ DATA_VALID_OUT : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ FLEXI_PCS_SYNCH_STATUS : out std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0)
+ );
+ end component;
+ component pll_ref
+ port (
+ clk : in std_logic;
+ clkop : out std_logic;
+ clkos : out std_logic;
+ lock : out std_logic);
+ end component;
+ component trb_net16_hub_base
+ generic (
+ MUX_SECURE_MODE : integer range 0 to 1;
+ MUX_WIDTH : integer range 1 to 3;
+ DATA_WIDTH : integer range 16 to 16;
+ NUM_WIDTH : integer range 2 to 2;
+ HUB_ADDRESS : std_logic_vector(15 downto 0);
+ HUB_CTRL_CHANNELNUM : integer range 0 to 3 :=3;
+ HUB_CTRL_DEPTH : integer range 0 to 6;
+ HUB_CTRL_REG_ADDR_WIDTH : integer range 1 to 7;
+ MII_NUMBER : integer range 2 to 16;
+-- MII_INIT_DEPTH : hub_iobuf_config_t;
+-- MII_REPLY_DEPTH : hub_iobuf_config_t;
+ API_NUMBER : integer range 0 to 16;
+-- API_CHANNELS : hub_api_config_t;
+-- API_TYPE : hub_api_config_t;
+-- API_FIFO_TO_INT_DEPTH : hub_api_config_t;
+-- API_FIFO_TO_APL_DEPTH : hub_api_config_t;
+ TRG_NUMBER : integer range 0 to 16);
+-- TRG_CHANNELS : hub_api_config_t);
+ port (
+ CLK : in std_logic;
+ RESET : in std_logic;
+ CLK_EN : in std_logic;
+ MED_DATAREADY_OUT : out std_logic_vector (MII_NUMBER-1 downto 0);
+ MED_DATA_OUT : out std_logic_vector (MII_NUMBER*DATA_WIDTH-1 downto 0);
+ MED_PACKET_NUM_OUT : out std_logic_vector (MII_NUMBER*NUM_WIDTH-1 downto 0);
+ MED_READ_IN : in std_logic_vector (MII_NUMBER-1 downto 0);
+ MED_DATAREADY_IN : in std_logic_vector (MII_NUMBER-1 downto 0);
+ MED_DATA_IN : in std_logic_vector (MII_NUMBER*DATA_WIDTH-1 downto 0);
+ MED_PACKET_NUM_IN : in std_logic_vector (MII_NUMBER*NUM_WIDTH-1 downto 0);
+ MED_READ_OUT : out std_logic_vector (MII_NUMBER-1 downto 0);
+ MED_ERROR_IN : in std_logic_vector (MII_NUMBER*3-1 downto 0);
+ APL_DATA_IN : in std_logic_vector (API_NUMBER*DATA_WIDTH downto 0);
+ APL_PACKET_NUM_IN : in std_logic_vector (API_NUMBER*NUM_WIDTH downto 0);
+ APL_WRITE_IN : in std_logic_vector (API_NUMBER downto 0);
+ APL_FIFO_FULL_OUT : out std_logic_vector (API_NUMBER downto 0);
+ APL_SHORT_TRANSFER_IN : in std_logic_vector (API_NUMBER downto 0);
+ APL_DTYPE_IN : in std_logic_vector (API_NUMBER*4 downto 0);
+ APL_ERROR_PATTERN_IN : in std_logic_vector (API_NUMBER*32 downto 0);
+ APL_SEND_IN : in std_logic_vector (API_NUMBER downto 0);
+ APL_TARGET_ADDRESS_IN : in std_logic_vector (API_NUMBER*16 downto 0);
+ APL_DATA_OUT : out std_logic_vector (API_NUMBER*16 downto 0);
+ APL_PACKET_NUM_OUT : out std_logic_vector (API_NUMBER*NUM_WIDTH downto 0);
+ APL_TYP_OUT : out std_logic_vector (API_NUMBER*3 downto 0);
+ APL_DATAREADY_OUT : out std_logic_vector (API_NUMBER downto 0);
+ APL_READ_IN : in std_logic_vector (API_NUMBER downto 0);
+ APL_RUN_OUT : out std_logic_vector (API_NUMBER downto 0);
+ APL_MY_ADDRESS_IN : in std_logic_vector (API_NUMBER*16 downto 0);
+ APL_SEQNR_OUT : out std_logic_vector (API_NUMBER*8 downto 0);
+ TRG_GOT_TRIGGER_OUT : out std_logic_vector (TRG_NUMBER downto 0);
+ TRG_ERROR_PATTERN_OUT : out std_logic_vector (TRG_NUMBER*32 downto 0);
+ TRG_DTYPE_OUT : out std_logic_vector (TRG_NUMBER*4 downto 0);
+ TRG_SEQNR_OUT : out std_logic_vector (TRG_NUMBER*8 downto 0);
+ TRG_ERROR_PATTERN_IN : in std_logic_vector (TRG_NUMBER*32 downto 0);
+ TRG_RELEASE_IN : in std_logic_vector (TRG_NUMBER downto 0);
+ HUB_STAT_CHANNEL : out std_logic_vector (2**(MUX_WIDTH-1)*16-1 downto 0);
+ HUB_STAT_GEN : out std_logic_vector (31 downto 0);
+ MPLEX_CTRL : in std_logic_vector (MII_NUMBER*32-1 downto 0);
+ MPLEX_STAT : out std_logic_vector (MII_NUMBER*32-1 downto 0));
+ end component;
+ component simpleupcounter_16bit
+ port (
+ QOUT : out std_logic_vector(15 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+ end component;
+ component simpleupcounter_32bit
+ port (
+ QOUT : out std_logic_vector(31 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+ end component;
+ -----------------------------------------------------------------------------
+ -- FLEXI_PCS
+ -----------------------------------------------------------------------------
+ constant HOW_MANY_CHANNELS : integer := 2;
+ signal ref_pclk : std_logic_vector((HOW_MANY_CHANNELS+3)/4 -1 downto 0);
+ signal rxd_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ signal rxd_synch_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ signal rx_k_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ signal rx_rst_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*4-1 downto 0);
+ signal cv_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ signal txd_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ signal txd_synch_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*64-1 downto 0);
+ signal tx_force_disp_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*8-1 downto 0);
+ signal rxb_pclk_a : std_logic_vector((HOW_MANY_CHANNELS+3)/4 -1 downto 0);
+ signal rx_clk_i : std_logic_vector(((HOW_MANY_CHANNELS+3)/4)*4-1 downto 0);
+ signal flexi_pcs_synch_status_i : std_logic_vector(HOW_MANY_CHANNELS*16-1 downto 0);
+ -----------------------------------------------------------------------------
+ -- hub trb interface
+ -----------------------------------------------------------------------------
+ signal hub_register_00_i : std_logic_vector(7 downto 0);
+ signal hub_register_01_i : std_logic_vector(7 downto 0);
+ signal hub_register_02_i : std_logic_vector(7 downto 0);
+ signal hub_register_03_i : std_logic_vector(7 downto 0);
+ signal hub_register_04_i : std_logic_vector(7 downto 0);
+ signal hub_register_05_i : std_logic_vector(7 downto 0);
+ signal hub_register_06_i : std_logic_vector(7 downto 0);
+ signal hub_register_07_i : std_logic_vector(7 downto 0);
+ signal hub_register_08_i : std_logic_vector(7 downto 0);
+ signal hub_register_09_i : std_logic_vector(7 downto 0);
+ signal hub_register_0a_i : std_logic_vector(7 downto 0);
+ signal hub_register_0b_i : std_logic_vector(7 downto 0);
+ signal hub_register_0c_i : std_logic_vector(7 downto 0);
+ signal hub_register_0d_i : std_logic_vector(7 downto 0);
+ signal hub_register_0e_i : std_logic_vector(7 downto 0);
+ signal hub_register_0f_i : std_logic_vector(7 downto 0);
+ signal hub_register_10_i : std_logic_vector(7 downto 0);
+ signal hub_register_11_i : std_logic_vector(7 downto 0);
+ signal hub_register_12_i : std_logic_vector(7 downto 0);
+ signal hub_register_13_i : std_logic_vector(7 downto 0);
+ signal hub_register_14_i : std_logic_vector(7 downto 0);
+ signal hub_register_15_i : std_logic_vector(7 downto 0);
+ signal hub_register_16_i : std_logic_vector(7 downto 0);
+ signal ADO_TTL_12 : std_logic;
+ -----------------------------------------------------------------------------
+ -- flexi_PCS to api interface
+ -----------------------------------------------------------------------------
+ signal data_valid_in_i : std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+ signal data_valid_out_i : std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
+
+ -----------------------------------------------------------------------------
+ -- other
+ -----------------------------------------------------------------------------
+ signal hub_register_0e_and_0d : std_logic_vector(15 downto 0);
+ signal cv_counter : std_logic_vector(31 downto 0);
+ signal cv_countera : std_logic_vector(31 downto 0);
+ signal serdes_ref_clk : std_logic;
+ signal serdes_ref_lock : std_logic;
+ signal serdes_ref_clks : std_logic;
+ signal med_packet_num_in_i : std_logic_vector(HOW_MANY_CHANNELS*2 -1 downto 0);
+ signal med_packet_num_in_s : std_logic_vector(HOW_MANY_CHANNELS*2 -1 downto 0);
+ signal med_error_in_i : std_logic_vector(HOW_MANY_CHANNELS*3 -1 downto 0);
+ signal mplex_ctrl_i : std_logic_vector (HOW_MANY_CHANNELS*32-1 downto 0);
+ signal word_counter_for_api_00 : std_logic_vector(1 downto 0);
+ signal word_counter_for_api_01 : std_logic_vector(1 downto 0);
+begin
+
+ REF_PLL: pll_ref
+ port map (
+ clk => LVDS_CLK_200P,
+ clkop => serdes_ref_clk,
+ clkos => serdes_ref_clks,
+ lock => serdes_ref_lock);
+ QUAD_GENERATE : for bit_index in 0 to ((HOW_MANY_CHANNELS+3)/4-1) generate
+ begin
+ QUAD : serdes_fpga_ref_clk
+ port map (
+-- refclkp => SERDES_200P,
+-- refclkn => SERDES_200N,
+ rxrefclk => serdes_ref_clk,--LVDS_CLK_200P,
+ refclk => serdes_ref_clk,--LVDS_CLK_200P,
+ hdinp_0 => SFP_INP_P(bit_index*4+0),
+ hdinn_0 => SFP_INP_N(bit_index*4+0),
+ tclk_0 => ref_pclk(bit_index),
+ rclk_0 => rx_clk_i(0+bit_index*4),
+ tx_rst_0 => '0',
+ rx_rst_0 => rx_rst_i(0+bit_index*4),--hub_register_0a_i(0),
+ txd_0 => txd_synch_i(15+bit_index*64 downto 0+bit_index*64),
+ tx_k_0 => "10",
+ tx_force_disp_0 => tx_force_disp_i(bit_index*8+1 downto 0+bit_index*8),
+ tx_disp_sel_0 => "00",
+ tx_crc_init_0 => "00",
+ word_align_en_0 => '1',
+ mca_align_en_0 => '0',
+ felb_0 => '0',
+ lsm_en_0 => '0',
+ hdinp_1 => SFP_INP_P(bit_index*4+1),
+ hdinn_1 => SFP_INP_N(bit_index*4+1),
+ tclk_1 => ref_pclk(bit_index),
+ rclk_1 => rx_clk_i(1+bit_index*4),
+ tx_rst_1 => '0',
+ rx_rst_1 => rx_rst_i(1+bit_index*4),
+ txd_1 => txd_synch_i(31+bit_index*64 downto 16+bit_index*64),
+ tx_k_1 => "10",
+ tx_force_disp_1 => tx_force_disp_i(3+bit_index*8 downto 2+bit_index*8),
+ tx_disp_sel_1 => "00",
+ tx_crc_init_1 => "00",
+ word_align_en_1 => '1',
+ mca_align_en_1 => '0',
+ felb_1 => '0',
+ lsm_en_1 => '0',
+ hdinp_2 => SFP_INP_P(bit_index*4+2),
+ hdinn_2 => SFP_INP_N(bit_index*4+2),
+ tclk_2 => ref_pclk(bit_index),
+ rclk_2 => rx_clk_i(2+bit_index*4),
+ tx_rst_2 => '0',
+ rx_rst_2 => rx_rst_i(2+bit_index*4),
+ txd_2 => txd_synch_i(47+bit_index*64 downto 32+bit_index*64),
+ tx_k_2 => "10",
+ tx_force_disp_2 => tx_force_disp_i(5+bit_index*8 downto 4+bit_index*8),
+ tx_disp_sel_2 => "00",
+ tx_crc_init_2 => "00",
+ word_align_en_2 => '1',
+ mca_align_en_2 => '0',
+ felb_2 => '0',
+ lsm_en_2 => '0',
+ hdinp_3 => SFP_INP_P(bit_index*4+3),
+ hdinn_3 => SFP_INP_N(bit_index*4+3),
+ tclk_3 => ref_pclk(bit_index),
+ rclk_3 => rx_clk_i(3+bit_index*4),
+ tx_rst_3 => '0',
+ rx_rst_3 => rx_rst_i(3+bit_index*4),
+ txd_3 => txd_synch_i(63+bit_index*64 downto 48+bit_index*64),
+ tx_k_3 => "10",
+ tx_force_disp_3 => tx_force_disp_i(7+bit_index*8 downto 6+bit_index*8),
+ tx_disp_sel_3 => "00",
+ tx_crc_init_3 => "00",
+ word_align_en_3 => '1',
+ mca_align_en_3 => '0',
+ felb_3 => '0',
+ lsm_en_3 => '0',
+ mca_resync_01 => '0',
+ mca_resync_23 => '0',
+ quad_rst => '0',
+ serdes_rst => '0',
+ rxa_pclk => rx_clk_i(0+bit_index*4),
+ rxb_pclk => rxb_pclk_a(bit_index),
+ hdoutp_0 => SFP_OUT_P(bit_index*4+0),
+ hdoutn_0 => SFP_OUT_N(bit_index*4+0),
+ ref_0_sclk => open,
+ rx_0_sclk => open,
+ rxd_0 => rxd_i(15+bit_index*64 downto 0+bit_index*64),
+ rx_k_0 => rx_k_i(1+bit_index*8 downto 0+bit_index*8),
+ rx_disp_err_detect_0 => open, --rx_disp_err_detect_0_a,
+ rx_cv_detect_0 => cv_i(1+bit_index*8 downto 0+bit_index*8),
+ rx_crc_eop_0 => open,
+ lsm_status_0 => open,
+ hdoutp_1 => SFP_OUT_P(bit_index*4+1),
+ hdoutn_1 => SFP_OUT_N(bit_index*4+1),
+ ref_1_sclk => open,
+ rx_1_sclk => rx_clk_i(1+bit_index*4),
+ rxd_1 => rxd_i(31+bit_index*64 downto 16+bit_index*64),
+ rx_k_1 => rx_k_i(3+bit_index*8 downto 2+bit_index*8),
+ rx_disp_err_detect_1 => open, --rx_disp_err_detect_1_a,
+ rx_cv_detect_1 => cv_i(3+bit_index*8 downto 2+bit_index*8),
+ rx_crc_eop_1 => open,
+ lsm_status_1 => open,
+ hdoutp_2 => SFP_OUT_P(bit_index*4+2),
+ hdoutn_2 => SFP_OUT_N(bit_index*4+2),
+ ref_2_sclk => open,
+ rx_2_sclk => rx_clk_i(2+bit_index*4),
+ rxd_2 => rxd_i(47+bit_index*64 downto 32+bit_index*64),
+ rx_k_2 => rx_k_i(5+bit_index*8 downto 4+bit_index*8),
+ rx_disp_err_detect_2 => open, --rx_disp_err_detect_2_a,
+ rx_cv_detect_2 => cv_i(5+bit_index*8 downto 4+bit_index*8),
+ rx_crc_eop_2 => open,
+ lsm_status_2 => open,
+ hdoutp_3 => SFP_OUT_P(bit_index*4+3),
+ hdoutn_3 => SFP_OUT_N(bit_index*4+3),
+ ref_3_sclk => open,
+ rx_3_sclk => rx_clk_i(3+bit_index*4),
+ rxd_3 => rxd_i(63+bit_index*64 downto 48+bit_index*64),
+ rx_k_3 => rx_k_i(7+bit_index*8 downto 6+bit_index*8),
+ rx_disp_err_detect_3 => open, --rx_disp_err_detect_3_a,
+ rx_cv_detect_3 => cv_i(7+bit_index*8 downto 6+bit_index*8),
+ rx_crc_eop_3 => open,
+ lsm_status_3 => open,
+ mca_aligned_01 => open, --mca_aligned_01_i,
+ mca_inskew_01 => open, --mca_inskew_01_i,
+ mca_outskew_01 => open, --mca_outskew_01_i,
+ mca_aligned_23 => open, --mca_aligned_23_i,
+ mca_inskew_23 => open, --mca_inskew_23_i,
+ mca_outskew_23 => open, --mca_outskew_23_i,
+ ref_pclk => ref_pclk(bit_index)
+ );
+ end generate QUAD_GENERATE;
+ FLEXI_PCS_INT : flexi_PCS_synch
+ generic map (
+ HOW_MANY_CHANNELS => HOW_MANY_CHANNELS)
+ port map (
+ CLK => ref_pclk,--,
+ RX_CLK => rx_clk_i,
+ RESET => ADO_TTL(0),
+ RXD => rxd_i,
+ RXD_SYNCH => rxd_synch_i,
+ RX_K => rx_k_i,
+ RX_RST => rx_rst_i,
+ CV => cv_i,
+ TXD => txd_i,
+ TXD_SYNCH => txd_synch_i,
+ TX_FORCE_DISP => tx_force_disp_i,
+ DATA_VALID_IN => data_valid_in_i,
+ DATA_VALID_OUT => data_valid_out_i,
+ FLEXI_PCS_SYNCH_STATUS => flexi_pcs_synch_status_i
+ );
+ HUB_API: trb_net16_hub_base
+ generic map (
+ MUX_SECURE_MODE => 0,
+ MUX_WIDTH => 2,
+ DATA_WIDTH => 16,
+ NUM_WIDTH => 2,
+ HUB_ADDRESS => x"F001",
+ HUB_CTRL_CHANNELNUM => 3,
+ HUB_CTRL_DEPTH => 1,
+ HUB_CTRL_REG_ADDR_WIDTH => 4,
+ MII_NUMBER => HOW_MANY_CHANNELS,
+ API_NUMBER => 0,
+ TRG_NUMBER => 0)
+-- MII_INIT_DEPTH => (6,6,6,6, --MII 6
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6),
+-- MII_REPLY_DEPTH => (6,6,6,6,6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6,
+-- 6,6,6,6), 6,6,6,6),
+-- API_CHANNELS => (3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3),
+-- API_TYPE => (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
+-- API_FIFO_TO_INT_DEPTH => (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
+-- API_FIFO_TO_APL_DEPTH => (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
+-- TRG_CHANNELS => (0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
+ port map (
+ CLK => LVDS_CLK_200P,
+ RESET => ADO_TTL(0),
+ CLK_EN => '1',
+ MED_DATAREADY_OUT => OPT_DATA_VALID_OUT,--data_valid_in_i,
+ MED_DATA_OUT => OPT_DATA_OUT,--txd_i,
+ MED_PACKET_NUM_OUT => open,
+ MED_READ_IN => "11",
+ MED_DATAREADY_IN => OPT_DATA_VALID_IN,--data_valid_out_i,
+ MED_DATA_IN => OPT_DATA_IN,--rxd_synch_i,
+ MED_PACKET_NUM_IN => med_packet_num_in_i,
+ MED_READ_OUT => open,
+ MED_ERROR_IN => med_error_in_i,
+ APL_DATA_IN => (others => '0'),
+ APL_PACKET_NUM_IN => (others => '0'),
+ APL_WRITE_IN => (others => '0'),
+ APL_FIFO_FULL_OUT => open,
+ APL_SHORT_TRANSFER_IN => (others => '0'),
+ APL_DTYPE_IN => (others => '0'),
+ APL_ERROR_PATTERN_IN => (others => '0'),
+ APL_SEND_IN => (others => '0'),
+ APL_TARGET_ADDRESS_IN => (others => '0'),
+ APL_DATA_OUT => open,
+ APL_PACKET_NUM_OUT => open,
+ APL_TYP_OUT => open,
+ APL_DATAREADY_OUT => open,
+ APL_READ_IN => (others => '0'),
+ APL_RUN_OUT => open,
+ APL_MY_ADDRESS_IN => (others => '0'),
+ APL_SEQNR_OUT => open,
+ TRG_GOT_TRIGGER_OUT => open,
+ TRG_ERROR_PATTERN_OUT => open,
+ TRG_DTYPE_OUT => open,
+ TRG_SEQNR_OUT => open,
+ TRG_ERROR_PATTERN_IN => (others => '0'),
+ TRG_RELEASE_IN => (others => '0'),
+ HUB_STAT_CHANNEL => open,
+ HUB_STAT_GEN => open,
+ MPLEX_CTRL => mplex_ctrl_i,
+ MPLEX_STAT => open
+ );
+ COUNTER_FOR_API_00: process (ref_pclk(0), ADO_TTL(0))
+ begin
+ if rising_edge(ref_pclk(0)) then
+ if ADO_TTL(0) = '1' then
+ word_counter_for_api_00 <= (others => '0');
+ elsif data_valid_out_i(0) = '1' then
+ word_counter_for_api_00 <= word_counter_for_api_00 + 1;
+ end if;
+ end if;
+ end process COUNTER_FOR_API_00;
+ med_packet_num_in_i(1 downto 0) <= word_counter_for_api_00;
+ COUNTER_FOR_API_01: process (ref_pclk(0), ADO_TTL(0))
+ begin
+ if rising_edge(ref_pclk(0)) then
+ if ADO_TTL(0) = '1' then
+ word_counter_for_api_01 <= (others => '0');
+ elsif data_valid_out_i(1) = '1' then
+ word_counter_for_api_01 <= word_counter_for_api_01 + 1;
+ end if;
+ end if;
+ end process COUNTER_FOR_API_01;
+ med_packet_num_in_i(3 downto 2) <= word_counter_for_api_01;
+
+
+ TRB_HUB_INT : trb_hub_interface
+ port map (
+ CLK => ref_pclk(0),
+ RESET => ADO_TTL(0),
+ STROBE => ADO_TTL(9),
+ internal_data_in => ADO_TTL(18 downto 11),
+ internal_data_out => ADO_TTL(42 downto 35),
+ internal_address => ADO_TTL(34 downto 19),
+ internal_mode => ADO_TTL(10),
+ VALID_DATA_SENT => ADO_TTL(8),
+ HUB_REGISTER_00 => hub_register_00_i,
+ HUB_REGISTER_01 => hub_register_01_i,
+ HUB_REGISTER_02 => hub_register_02_i,
+ HUB_REGISTER_03 => hub_register_03_i,
+ HUB_REGISTER_04 => hub_register_04_i,
+ HUB_REGISTER_05 => hub_register_05_i,
+ HUB_REGISTER_06 => hub_register_06_i,
+ HUB_REGISTER_07 => hub_register_07_i,
+ HUB_REGISTER_08 => hub_register_08_i,
+ HUB_REGISTER_09 => hub_register_09_i,
+ HUB_REGISTER_0a => hub_register_0a_i,
+ HUB_REGISTER_0b => hub_register_0b_i,
+ HUB_REGISTER_0c => hub_register_0c_i,
+ HUB_REGISTER_0d => hub_register_0d_i,
+ HUB_REGISTER_0e => hub_register_0e_i,
+ HUB_REGISTER_0f => hub_register_0f_i,
+ HUB_REGISTER_10 => hub_register_10_i,
+ HUB_REGISTER_11 => hub_register_11_i,
+ HUB_REGISTER_12 => hub_register_12_i,
+ HUB_REGISTER_13 => hub_register_13_i,
+ HUB_REGISTER_14 => hub_register_14_i,
+ HUB_REGISTER_15 => hub_register_15_i,
+ HUB_REGISTER_16 => hub_register_16_i
+ );
+ ADO_TTL(34 downto 9) <= (others => 'Z');
+ hub_register_00_i <=flexi_pcs_synch_status_i(7 downto 0);
+ -- hub_register_01_i <=
+ hub_register_02_i <= rxd_synch_i(7 downto 0); --; --rxd_1_a(15 downto 8);
+ hub_register_03_i <= rxd_synch_i(23 downto 16); --cv_counter_ch1;
+-- hub_register_04_i <= rxd_synch_i(39 downto 32);
+-- hub_register_05_i <= rxd_synch_i(55 downto 48);
+-- hub_register_10_i <= rxd_i(7+8*16 downto 0+8*16); --; --rxd_1_a(15 downto 8);
+-- hub_register_11_i <= rxd_i(23+8*16 downto 16+8*16); --cv_counter_ch1;
+-- hub_register_12_i <= rxd_i(39+8*16 downto 32+8*16);
+-- hub_register_13_i <= rxd_i(63+8*16 downto 56+8*16);
+-- hub_register_14_i <= flexi_pcs_synch_status_i(23+8*16 downto 16+8*16);
+-- hub_register_15_i <= flexi_pcs_synch_status_i(39+8*16 downto 32+8*16);
+-- hub_register_16_i <= flexi_pcs_synch_status_i(63+8*16 downto 56+8*16);
+
+-- hub_register_06_i <= flexi_pcs_synch_status_i(23 downto 16);
+-- hub_register_07_i <= flexi_pcs_synch_status_i(39 downto 32);
+-- hub_register_08_i <= flexi_pcs_synch_status_i(55 downto 48);
+-- hub_register_09_i <= x"0" & data_valid_out_i(3 downto 0);
+-- hub_register_0e_and_0d <= hub_register_0e_i & hub_register_0d_i;
+-- txd_i(15 downto 0) <= hub_register_0e_and_0d;
+-- txd_i(31 downto 16) <= hub_register_0e_and_0d;
+-- txd_i(47 downto 32) <= hub_register_0e_and_0d;
+-- txd_i(63 downto 48) <= hub_register_0e_and_0d;
+
+-- txd_i(255 downto 64) <= hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d &
+-- hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d &
+-- hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d & hub_register_0e_and_0d;
+-- data_valid_in_i(0) <= hub_register_0a_i(0);
+-- data_valid_in_i(1) <= hub_register_0a_i(1);
+-- data_valid_in_i(2) <= hub_register_0a_i(2);
+-- data_valid_in_i(3) <= hub_register_0a_i(3);
+-- data_valid_in_i(4) <= hub_register_0a_i(0);
+-- data_valid_in_i(5) <= hub_register_0a_i(1);
+-- data_valid_in_i(6) <= hub_register_0a_i(2);
+-- data_valid_in_i(7) <= hub_register_0a_i(3);
+-- data_valid_in_i(8) <= hub_register_0a_i(0);
+-- data_valid_in_i(9) <= hub_register_0a_i(1);
+-- data_valid_in_i(10) <= hub_register_0a_i(2);
+-- data_valid_in_i(11) <= hub_register_0a_i(3);
+-- data_valid_in_i(12) <= hub_register_0a_i(0);
+-- data_valid_in_i(13) <= hub_register_0a_i(1);
+-- data_valid_in_i(14) <= hub_register_0a_i(2);
+-- data_valid_in_i(15) <= hub_register_0a_i(3);
+
+-- data_valid_in_i(15 downto 4) <= hub_register_0a_i(7 downto 0) & hub_register_0a_i(7 downto 4);
+
+ -- RT(16 downto 1) <= (others => '0');
+
+ LOK_STATUS_DIOD_EN : for synch_fsm_state in 0 to HOW_MANY_CHANNELS-1 generate
+ begin
+ LOK(synch_fsm_state+1) <= not flexi_pcs_synch_status_i(2+synch_fsm_state*16);
+ TX_DIS(synch_fsm_state+1) <= '0';
+ end generate LOK_STATUS_DIOD_EN;
+ LOK_STATUS_DIOD_DIS : for not_conected in 0 to 16-HOW_MANY_CHANNELS-1 generate
+ begin
+ WHEN_NOT_ALL_EN : if HOW_MANY_CHANNELS < 16 generate
+ LOK(16-not_conected) <= '1';
+ TX_DIS(16-not_conected) <= '1';
+ end generate WHEN_NOT_ALL_EN;
+ end generate LOK_STATUS_DIOD_DIS;
+ IPLL <= '0';
+ OPLL <= '0';
+ DBAD <= ADO_TTL(11);
+ DGOOD <= '1';
+ DINT <= '0';
+ DWAIT <= ADO_TTL(0);
+ CV_COUNTERaaa: process (LVDS_CLK_200P, ADO_TTL(0))
+ begin
+ if rising_edge(LVDS_CLK_200P) then -- rising clock edge
+ if ADO_TTL(0) = '1' then -- asynchronous reset (active low)
+ cv_counter <= (others => '0');
+ else
+ cv_counter <= cv_counter + 1;
+ end if;
+ end if;
+ end process CV_COUNTERaaa;
+ CV_COUNTERaab: process (ref_pclk(0), ADO_TTL(0))
+ begin
+ if rising_edge(ref_pclk(0)) then -- rising clock edge
+ if ADO_TTL(0) = '1' then -- asynchronous reset (active low)
+ cv_countera <= (others => '0');
+ else
+ cv_countera <= cv_countera + 1;
+ end if;
+ end if;
+ end process CV_COUNTERaab;
+ RT(16 downto 8) <= cv_counter(31 downto 23);
+ RT(2) <= cv_counter(0);
+
+ RT(1) <= ref_pclk(0);
+
+ RT(3) <= LVDS_CLK_200P;
+
+ RT(4) <= cv_countera(0);
+
+ RT(5) <= serdes_ref_clk;
+ RT(6) <= serdes_ref_clks;
+ RT(7) <= serdes_ref_lock;
+
+---------------------------------------------------------------------------
+-- simulation
+ ---------------------------------------------------------------------------
+-- clock_gclk : process
+-- begin
+-- ref_pclk(0) <= '0';
+-- wait for 5 ns;
+-- ref_pclk_a <= '1';
+-- wait for 5 ns;
+-- end process;
+end hub;
+
--- /dev/null
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE ispXCF SYSTEM "IspXCF.dtd" >
+<ispXCF version="17.0 Linux Beta">
+ <Comment></Comment>
+ <Chain>
+ <Comm>JTAG</Comm>
+ <Device>
+ <Pos>1</Pos>
+ <Vendor>NA</Vendor>
+ <Family>Generic JTAG Device</Family>
+ <Name>JTAG-NOP</Name>
+ <Package>All</Package>
+ <PON>JTAG-NOP</PON>
+ <Bypass>
+ <InstrLen>10</InstrLen>
+ <InstrVal>1111111111</InstrVal>
+ <BScanLen>1</BScanLen>
+ <BScanVal>0</BScanVal>
+ </Bypass>
+ <Operation>Bypass</Operation>
+ <Option>
+ <SVFVendor>JTAG STANDARD</SVFVendor>
+ <IOState>HighZ</IOState>
+ <OverideUES value="TRUE"/>
+ <TCKFrequency>1.000000 MHz</TCKFrequency>
+ <SVFProcessor>SVF Processor</SVFProcessor>
+ </Option>
+ </Device>
+ <Device>
+ <Pos>2</Pos>
+ <Ref>hub</Ref>
+ <Vendor>Lattice</Vendor>
+ <Family>LatticeSCM</Family>
+ <Name>LFSCM3GA25E</Name>
+ <IDCode>0x0a812157</IDCode>
+ <Package>1020-ball FFBGA</Package>
+ <PON>LFSCM3GA25EP1-XXFF1020</PON>
+ <Bypass>
+ <InstrLen>8</InstrLen>
+ <InstrVal>11111111</InstrVal>
+ <BScanLen>1</BScanLen>
+ <BScanVal>0</BScanVal>
+ </Bypass>
+ <File>/home/marek/optical_hub/vhdl/workdir/hub.bit</File>
+ <MaskFile>/home/marek/.isplever_lin1/ispvmsystem/Database/xpga/sc/lfsc3ga25e.msk</MaskFile>
+ <FileTime>8/15/2007 14:18:24</FileTime>
+ <Operation>Fast Program</Operation>
+ <Option>
+ <SVFVendor>JTAG STANDARD</SVFVendor>
+ <IOState>HighZ</IOState>
+ <PreloadLength>1095</PreloadLength>
+ <IOVectorData>0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</IOVectorData>
+ <OverideUES value="TRUE"/>
+ <TCKFrequency>1.000000 MHz</TCKFrequency>
+ <SVFProcessor>SVF Processor</SVFProcessor>
+ <AccessMode>JTAG</AccessMode>
+ </Option>
+ </Device>
+ <Device>
+ <Pos>3</Pos>
+ <Ref>power</Ref>
+ <Vendor>NA</Vendor>
+ <Family>Generic JTAG Device</Family>
+ <Name>JTAG-NOP</Name>
+ <Package>All</Package>
+ <PON>JTAG-NOP</PON>
+ <Bypass>
+ <InstrLen>4</InstrLen>
+ <InstrVal>1111</InstrVal>
+ <BScanLen>1</BScanLen>
+ <BScanVal>0</BScanVal>
+ </Bypass>
+ <Operation>Bypass</Operation>
+ <Option>
+ <SVFVendor>JTAG STANDARD</SVFVendor>
+ <IOState>HighZ</IOState>
+ <OverideUES value="TRUE"/>
+ <TCKFrequency>1.000000 MHz</TCKFrequency>
+ <SVFProcessor>SVF Processor</SVFProcessor>
+ </Option>
+ </Device>
+ </Chain>
+ <ProjectOptions>
+ <Program>SEQUENTIAL</Program>
+ <Process>ENTIRED CHAIN</Process>
+ <OperationOverride>No Override</OperationOverride>
+ <StartTAP>TLR</StartTAP>
+ <EndTAP>TLR</EndTAP>
+ <DeGlitch value="TRUE"/>
+ <VerifyUsercode value="TRUE"/>
+ <PinSetting>
+ TMS LOW;
+ TCK LOW;
+ TDI LOW;
+ TDO LOW;
+ CableEN HIGH;
+ </PinSetting>
+ </ProjectOptions>
+</ispXCF>
--- /dev/null
+#-- Synplicity, Inc.
+#-- Version Synplify Pro 8.5.1
+#-- Project file /home/hadaq/marek_trbv2_ise/proj_1.prj
+#-- Written on Tue Aug 7 10:50:43 2007
+
+
+#add_file options
+add_file -vhdl -lib work "simpleupcounter_32bit.vhd"
+#add_file -vhdl -lib work "serdes.vhd"
+#add_file -vhdl -lib work "serdes_raw.vhd"
+add_file -vhdl -lib work "hub.vhd"
+add_file -vhdl -lib work "trb_hub_interface.vhd"
+add_file -vhdl -lib work "f_divider.vhd"
+add_file -vhdl -lib work "simpleupcounter_16bit.vhd"
+add_file -vhdl -lib work "simpleupcounter_8bit.vhd"
+add_file -vhdl -lib work "flexi_PCS_synch.vhd"
+add_file -vhdl -lib work "flexi_PCS_channel_synch.vhd"
+add_file -vhdl -lib work "flexi_PCS_fifo_LUT.vhd"
+add_file -vhdl -lib work "flexi_PCS_fifo_EBR.vhd"
+add_file -vhdl -lib work "serdes_fpga_ref_clk.vhd"
+add_file -vhdl -lib work "pll_ref.vhd"
+#add_file -vhdl -lib work "~/trbnet/xilinx/trb_net_fifo_arch.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_base_api.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_std.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_fifo.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_iobuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_active_api.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_passive_api.vhd"
+#add_file -vhdl -lib work "~/trbnet/xilinx/shift_lut_x16.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_dummy_fifo.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_ibuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_io_multiplexer.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_obuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_pattern_gen.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_priority_arbiter.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_priority_encoder.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_sbuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_term_ibuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_term.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_active_apimbuf.vhd"
+#add_file -vhdl -lib work "~/trbnet/trb_net_passive_apimbuf.vhd"
+
+
+
+#implementation: "workdir"
+impl -add workdir -type fpga
+
+#device options
+set_option -technology LATTICE-SCM
+set_option -part LFSCM3GA25E
+set_option -package FF1020C
+set_option -speed_grade -5
+
+#compilation/mapping options
+set_option -default_enum_encoding sequential
+set_option -symbolic_fsm_compiler 1
+set_option -resource_sharing 1
+set_option -top_module "hub"
+
+#map options
+set_option -frequency 200.000
+set_option -fanout_limit 100
+set_option -disable_io_insertion 0
+set_option -retiming 0
+set_option -pipe 0
+set_option -fixgatedclocks 0
+set_option -force_gsr auto
+
+#simulation options
+set_option -write_verilog 0
+set_option -write_vhdl 0
+
+#automatic place and route (vendor) options
+set_option -write_apr_constraint 0
+
+#set result format/file last
+project -result_format "edif"
+project -result_file "workdir/hub.edf"
+
+
+#
+#implementation attributes
+
+set_option -vlog_std v2001
+set_option -project_relative_includes 1
+impl -active "workdir"
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+library UNISIM;
+use UNISIM.VCOMPONENTS.all;
+library ieee;
+library work;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+use work.all;
+
+entity hub_tb is
+
+ port (
+ LVDS_CLK_200P : in std_logic;
+ LVDS_CLK_200N : in std_logic;
+ SERDES_200N : in std_logic;
+ SERDES_200P : in std_logic;
+ ADO_TTL : inout std_logic_vector(46 downto 0);
+ DBAD : out std_logic;
+ DGOOD : out std_logic;
+ DINT : out std_logic;
+ DWAIT : out std_logic;
+ LOK : out std_logic_vector(16 downto 1);
+ RT : out std_logic_vector(16 downto 1);
+ TX_DIS : out std_logic_vector(16 downto 1);
+ IPLL : out std_logic;
+ OPLL : out std_logic;
+ SFP_INP_N : in std_logic_vector(15 downto 0);
+ SFP_INP_P : in std_logic_vector(15 downto 0);
+ SFP_OUT_N : out std_logic_vector(15 downto 0);
+ SFP_OUT_P : out std_logic_vector(15 downto 0);
+ AAAAAAAA : in std_logic);
+end hub_tb;
+
+architecture hub_tb of hub_tb is
+
+signal LVDS_CLK_200P_i : std_logic;
+signal LVDS_CLK_200N_i : std_logic;
+signal SERDES_200N_i : std_logic;
+signal SERDES_200P_i : std_logic;
+signal ADO_TTL_i : std_logic_vector(46 downto 0);
+signal DBAD_i : std_logic;
+signal DGOOD_i : std_logic;
+signal DINT_i : std_logic;
+signal DWAIT_i : std_logic;
+signal LOK_i : std_logic_vector(16 downto 1);
+signal RT_i : std_logic_vector(16 downto 1);
+signal TX_DIS_i : std_logic_vector(16 downto 1);
+signal IPLL_i : std_logic;
+signal OPLL_i : std_logic;
+signal SFP_INP_N_i : std_logic_vector(15 downto 0);
+signal SFP_INP_P_i : std_logic_vector(15 downto 0);
+signal SFP_OUT_N_i : std_logic_vector(15 downto 0);
+signal SFP_OUT_P_i : std_logic_vector(15 downto 0);
+
+component hub
+ port (
+ LVDS_CLK_200P : in std_logic;
+ LVDS_CLK_200N : in std_logic;
+ SERDES_200N : in std_logic;
+ SERDES_200P : in std_logic;
+ ADO_TTL : inout std_logic_vector(46 downto 0);
+ DBAD : out std_logic;
+ DGOOD : out std_logic;
+ DINT : out std_logic;
+ DWAIT : out std_logic;
+ LOK : out std_logic_vector(16 downto 1);
+ RT : out std_logic_vector(16 downto 1);
+ TX_DIS : out std_logic_vector(16 downto 1);
+ IPLL : out std_logic;
+ OPLL : out std_logic;
+ SFP_INP_N : in std_logic_vector(15 downto 0);
+ SFP_INP_P : in std_logic_vector(15 downto 0);
+ SFP_OUT_N : out std_logic_vector(15 downto 0);
+ SFP_OUT_P : out std_logic_vector(15 downto 0));
+end component;
+
+
+begin -- of hub_tb
+ HUB_SIM: hub
+ port map (
+ LVDS_CLK_200P => LVDS_CLK_200P_i,
+ LVDS_CLK_200N => LVDS_CLK_200N_i,
+ SERDES_200N => SERDES_200N_i,
+ SERDES_200P => SERDES_200P_i,
+ ADO_TTL => ADO_TTL_i,
+ DBAD => DBAD_i,
+ DGOOD => DGOOD_i,
+ DINT => DINT_i,
+ DWAIT => DWAIT_i,
+ LOK => LOK_i,
+ RT => RT_i,
+ TX_DIS => TX_DIS_i,
+ IPLL => IPLL_i,
+ OPLL => OPLL_i,
+ SFP_INP_N => SFP_INP_N_i,
+ SFP_INP_P => SFP_INP_P_i,
+ SFP_OUT_N => SFP_OUT_N_i,
+ SFP_OUT_P => SFP_OUT_P_i);
+
+ clock_gclk : process
+ begin
+ SERDES_200P_i <= '0';
+ SERDES_200N_i <= '1';
+ wait for 5 ns;
+ SERDES_200P_i <= '1';
+ SERDES_200N_i <= '0';
+ wait for 5 ns;
+ end process;
+end hub_tb;
--- /dev/null
+setMode -bs
+setCable -port stapl -file "hub_chain.stapl"
+addDevice -p 1 -file "hub_1.svf"
+Play
+quit
--- /dev/null
+-- VHDL netlist generated by SCUBA ispLever_v70_Prod_Build (55)
+-- Module Version: 3.6
+--/opt/lattice/isplever7.0/isptools/ispfpga/bin/lin/scuba -w -n pll_ref -lang vhdl -synth synplify -bus_exp 7 -bb -arch or5s00 -type pll -fin 100 -mfreq 200 -nfreq 100 -clkos_fdel 0 -fb 1 -clki_del 0 -clki_fdel 0 -clkfb_del 0 -clkfb_fdel 0 -mtol 0.0 -ntol 0.0 -bw LOW -e
+
+-- Thu Nov 29 18:28:19 2007
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+-- synopsys translate_off
+library SCM;
+use SCM.COMPONENTS.all;
+-- synopsys translate_on
+
+entity pll_ref is
+ generic (
+ SMI_OFFSET : in String := "0x410"
+ );
+ port (
+ clk: in std_logic;
+ clkop: out std_logic;
+ clkos: out std_logic;
+ lock: out std_logic);
+ attribute dont_touch : string;
+ attribute dont_touch of pll_ref : entity is "true";
+end pll_ref;
+
+architecture Structure of pll_ref is
+
+ -- internal signal declarations
+ signal scuba_vlo: std_logic;
+ signal scuba_vhi: std_logic;
+ signal clkos_t: std_logic;
+ signal clkop_t: std_logic;
+ signal clk_t: std_logic;
+
+ attribute module_type : string;
+ -- local component declarations
+ component VHI
+ port (Z: out std_logic);
+ end component;
+ component VLO
+ port (Z: out std_logic);
+ end component;
+ component EHXPLLA
+ generic (SMI_OFFSET : in String
+ -- synopsys translate_off
+ ; GSR : in String; CLKOS_DIV : in Integer;
+ CLKOP_DIV : in Integer; CLKFB_DIV : in Integer;
+ CLKI_DIV : in Integer; CLKOS_FDEL : in Integer;
+ CLKFB_FDEL : in Integer; CLKI_FDEL : in Integer;
+ CLKOS_MODE : in String; CLKOP_MODE : in String;
+ PHASEADJ : in Integer; CLKOS_VCODEL : in Integer
+ -- synopsys translate_on
+ );
+ port (SMIADDR9: in std_logic; SMIADDR8: in std_logic;
+ SMIADDR7: in std_logic; SMIADDR6: in std_logic;
+ SMIADDR5: in std_logic; SMIADDR4: in std_logic;
+ SMIADDR3: in std_logic; SMIADDR2: in std_logic;
+ SMIADDR1: in std_logic; SMIADDR0: in std_logic;
+ SMIRD: in std_logic; SMIWR: in std_logic;
+ SMICLK: in std_logic; SMIWDATA: in std_logic;
+ SMIRSTN: in std_logic; CLKI: in std_logic;
+ CLKFB: in std_logic; RSTN: in std_logic;
+ CLKOS: out std_logic; CLKOP: out std_logic;
+ LOCK: out std_logic; CLKINTFB: out std_logic;
+ SMIRDATA: out std_logic);
+ end component;
+ attribute module_type of EHXPLLA : component is "EHXPLLA";
+ attribute ip_type : string;
+ attribute FREQUENCY_PIN_CLKOS : string;
+ attribute FREQUENCY_PIN_CLKOP : string;
+ attribute FREQUENCY_PIN_CLKI : string;
+ attribute VCO_LOWERFREQ : string;
+ attribute GMCFREQSEL : string;
+ attribute GSR : string;
+ attribute SPREAD_DIV2 : string;
+ attribute SPREAD_DIV1 : string;
+ attribute SPREAD_DRIFT : string;
+ attribute SPREAD : string;
+ attribute CLKFB_FDEL : string;
+ attribute CLKI_FDEL : string;
+ attribute CLKFB_PDEL : string;
+ attribute CLKI_PDEL : string;
+ attribute LF_RESISTOR : string;
+ attribute LF_IX5UA : string;
+ attribute CLKOS_FDEL : string;
+ attribute CLKOS_VCODEL : string;
+ attribute PHASEADJ : string;
+ attribute CLKOS_MODE : string;
+ attribute CLKOP_MODE : string;
+ attribute CLKOS_DIV : string;
+ attribute CLKOP_DIV : string;
+ attribute CLKFB_DIV : string;
+ attribute CLKI_DIV : string;
+ attribute ip_type of pll_ref_0_0 : label is "EHXPLLA";
+ attribute FREQUENCY_PIN_CLKOS of pll_ref_0_0 : label is "100.000000";
+ attribute FREQUENCY_PIN_CLKOP of pll_ref_0_0 : label is "200.000000";
+ attribute FREQUENCY_PIN_CLKI of pll_ref_0_0 : label is "100.000000";
+ attribute VCO_LOWERFREQ of pll_ref_0_0 : label is "DISABLED";
+ attribute GMCFREQSEL of pll_ref_0_0 : label is "HIGH";
+ attribute GSR of pll_ref_0_0 : label is "DISABLED";
+ attribute SPREAD_DIV2 of pll_ref_0_0 : label is "2";
+ attribute SPREAD_DIV1 of pll_ref_0_0 : label is "2";
+ attribute SPREAD_DRIFT of pll_ref_0_0 : label is "1";
+ attribute SPREAD of pll_ref_0_0 : label is "DISABLED";
+ attribute CLKFB_FDEL of pll_ref_0_0 : label is "0";
+ attribute CLKI_FDEL of pll_ref_0_0 : label is "0";
+ attribute CLKFB_PDEL of pll_ref_0_0 : label is "DEL0";
+ attribute CLKI_PDEL of pll_ref_0_0 : label is "DEL0";
+ attribute LF_RESISTOR of pll_ref_0_0 : label is "0b111010";
+ attribute LF_IX5UA of pll_ref_0_0 : label is "31";
+ attribute CLKOS_FDEL of pll_ref_0_0 : label is "0";
+ attribute CLKOS_VCODEL of pll_ref_0_0 : label is "0";
+ attribute PHASEADJ of pll_ref_0_0 : label is "0";
+ attribute CLKOS_MODE of pll_ref_0_0 : label is "DIV";
+ attribute CLKOP_MODE of pll_ref_0_0 : label is "DIV";
+ attribute CLKOS_DIV of pll_ref_0_0 : label is "6";
+ attribute CLKOP_DIV of pll_ref_0_0 : label is "3";
+ attribute CLKFB_DIV of pll_ref_0_0 : label is "2";
+ attribute CLKI_DIV of pll_ref_0_0 : label is "1";
+ attribute syn_keep : boolean;
+ attribute syn_noprune : boolean;
+ attribute syn_noprune of Structure : architecture is true;
+
+begin
+ -- component instantiation statements
+ scuba_vlo_inst: VLO
+ port map (Z=>scuba_vlo);
+
+ scuba_vhi_inst: VHI
+ port map (Z=>scuba_vhi);
+
+ pll_ref_0_0: EHXPLLA
+ generic map (SMI_OFFSET=> SMI_OFFSET
+ -- synopsys translate_off
+ , GSR=> "DISABLED", CLKFB_FDEL=> 0, CLKI_FDEL=> 0,
+ CLKOS_FDEL=> 0, CLKOS_VCODEL=> 0, PHASEADJ=> 0, CLKOS_MODE=> "DIV",
+ CLKOP_MODE=> "DIV", CLKOS_DIV=> 6, CLKOP_DIV=> 3, CLKFB_DIV=> 2,
+ CLKI_DIV=> 1
+ -- synopsys translate_on
+ )
+ port map (SMIADDR9=>scuba_vlo, SMIADDR8=>scuba_vlo,
+ SMIADDR7=>scuba_vlo, SMIADDR6=>scuba_vlo,
+ SMIADDR5=>scuba_vlo, SMIADDR4=>scuba_vlo,
+ SMIADDR3=>scuba_vlo, SMIADDR2=>scuba_vlo,
+ SMIADDR1=>scuba_vlo, SMIADDR0=>scuba_vlo, SMIRD=>scuba_vlo,
+ SMIWR=>scuba_vlo, SMICLK=>scuba_vlo, SMIWDATA=>scuba_vlo,
+ SMIRSTN=>scuba_vlo, CLKI=>clk_t, CLKFB=>clkop_t,
+ RSTN=>scuba_vhi, CLKOS=>clkos_t, CLKOP=>clkop_t, LOCK=>lock,
+ CLKINTFB=>open, SMIRDATA=>open);
+
+ clkos <= clkos_t;
+ clkop <= clkop_t;
+ clk_t <= clk;
+end Structure;
+
+-- synopsys translate_off
+library SCM;
+configuration Structure_CON of pll_ref is
+ for Structure
+ for all:VHI use entity SCM.VHI(V); end for;
+ for all:VLO use entity SCM.VLO(V); end for;
+ for all:EHXPLLA use entity SCM.EHXPLLA(V); end for;
+ end for;
+end Structure_CON;
+
+-- synopsys translate_on
--- /dev/null
+
+
+# This file is used by the simulation model as well as the ispLEVER bitstream
+# generation process to automatically initialize the PCS quad to the mode
+# selected in the IPexpress. This file is expected to be modified by the
+# end user to adjust the PCS quad to the final design requirements.
+# channel_0 is in "8b10b" mode
+# channel_1 is in "8b10b" mode
+# channel_2 is in "8b10b" mode
+# channel_3 is in "8b10b" mode
+
+ch0 13 03 # Powerup Channel
+ch0 00 00
+ch1 13 03 # Powerup Channel
+ch1 00 00
+ch2 13 03 # Powerup Channel
+ch2 00 00
+ch3 13 03 # Powerup Channel
+ch3 00 00
+quad 00 00
+quad 01 E4
+quad 28 50 # Reference clock multiplier
+quad 29 11 # FPGA sourced refclk
+quad 02 00 # ref_pclk source is ch0
+quad 04 00 # MCA enable 4 channels
+
+quad 18 10 # 8b10b Mode
+ quad 14 FF # Word Alignment Mask
+ quad 15 7c # +ve K
+ quad 16 b6 # -ve K
+quad 17 36
+
+quad 19 8C # Enable word_align_en port, FPGA bus width is 16-bit/20-bit
+ch0 14 90 # 16% pre-emphasis
+ch0 15 10 # +6dB equalization
+ch1 14 90 # 16% pre-emphasis
+ch1 15 10 # +6dB equalization
+ch2 14 90 # 16% pre-emphasis
+ch2 15 10 # +6dB equalization
+ch3 14 90 # 16% pre-emphasis
+ch3 15 10 # +6dB equalization
+
+# These lines must appear last in the autoconfig file. These lines apply the correct
+# reset sequence to the PCS block upon bitstream configuration
+quad 41 00 # de-assert serdes_rst
+quad 40 ff # assert datapath reset for all channels
+quad 40 00 # de-assert datapath reset for all channels
+
+
+
--- /dev/null
+
+
+-- channel_0 is in "8b10b" mode
+-- channel_1 is in "8b10b" mode
+-- channel_2 is in "8b10b" mode
+-- channel_3 is in "8b10b" mode
+
+--synopsys translate_off
+
+library pcsa_mti_work;
+use pcsa_mti_work.all;
+library IEEE;
+use IEEE.std_logic_1164.all;
+
+entity PCSA is
+GENERIC(
+ CONFIG_FILE : String := "serdes_fpga_ref_clk.txt"
+ );
+port (
+ HDINP0 : in std_logic;
+ HDINN0 : in std_logic;
+ HDINP1 : in std_logic;
+ HDINN1 : in std_logic;
+ HDINP2 : in std_logic;
+ HDINN2 : in std_logic;
+ HDINP3 : in std_logic;
+ HDINN3 : in std_logic;
+ HDOUTP0 : out std_logic;
+ HDOUTN0 : out std_logic;
+ HDOUTP1 : out std_logic;
+ HDOUTN1 : out std_logic;
+ HDOUTP2 : out std_logic;
+ HDOUTN2 : out std_logic;
+ HDOUTP3 : out std_logic;
+ HDOUTN3 : out std_logic;
+ REFCLKP : in std_logic;
+ REFCLKN : in std_logic;
+ RXREFCLKP : in std_logic;
+ RXREFCLKN : in std_logic;
+ FFC_QUAD_RST : in std_logic;
+ FFC_MACRO_RST : in std_logic;
+
+ FFC_LANE_TX_RST0 : in std_logic;
+ FFC_LANE_TX_RST1 : in std_logic;
+ FFC_LANE_TX_RST2 : in std_logic;
+ FFC_LANE_TX_RST3 : in std_logic;
+
+ FFC_LANE_RX_RST0 : in std_logic;
+ FFC_LANE_RX_RST1 : in std_logic;
+ FFC_LANE_RX_RST2 : in std_logic;
+ FFC_LANE_RX_RST3 : in std_logic;
+
+ FFC_PCIE_EI_EN_0 : in std_logic;
+ FFC_PCIE_EI_EN_1 : in std_logic;
+ FFC_PCIE_EI_EN_2 : in std_logic;
+ FFC_PCIE_EI_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;
+
+ 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;
+
+ FFC_PCIE_TX_0 : in std_logic;
+ FFC_PCIE_TX_1 : in std_logic;
+ FFC_PCIE_TX_2 : in std_logic;
+ FFC_PCIE_TX_3 : in std_logic;
+
+ FFC_PCIE_RX_0 : in std_logic;
+ FFC_PCIE_RX_1 : in std_logic;
+ FFC_PCIE_RX_2 : in std_logic;
+ FFC_PCIE_RX_3 : in std_logic;
+
+ FFC_SD_0 : in std_logic;
+ FFC_SD_1 : in std_logic;
+ FFC_SD_2 : in std_logic;
+ FFC_SD_3 : in std_logic;
+
+ FFC_EN_CGA_0 : in std_logic;
+ FFC_EN_CGA_1 : in std_logic;
+ FFC_EN_CGA_2 : in std_logic;
+ FFC_EN_CGA_3 : in std_logic;
+
+ FFC_ALIGN_EN_0 : in std_logic;
+ FFC_ALIGN_EN_1 : in std_logic;
+ FFC_ALIGN_EN_2 : in std_logic;
+ FFC_ALIGN_EN_3 : in std_logic;
+
+ FFC_AB_RESET : in std_logic;
+ FFC_CD_RESET : in std_logic;
+
+ FFS_LS_STATUS_0 : out std_logic;
+ FFS_LS_STATUS_1 : out std_logic;
+ FFS_LS_STATUS_2 : out std_logic;
+ FFS_LS_STATUS_3 : out std_logic;
+
+ FFS_AB_STATUS : out std_logic;
+ FFS_CD_STATUS : out std_logic;
+
+ FFS_AB_ALIGNED : out std_logic;
+ FFS_CD_ALIGNED : out std_logic;
+
+ FFS_RLOS_LO0 : out std_logic;
+ FFS_RLOS_LO1 : out std_logic;
+ FFS_RLOS_LO2 : out std_logic;
+ FFS_RLOS_LO3 : out std_logic;
+
+ FFS_AB_FAILED : out std_logic;
+ FFS_CD_FAILED : out std_logic;
+
+ FFC_FB_LB_0 : in std_logic;
+ FFC_FB_LB_1 : in std_logic;
+ FFC_FB_LB_2 : in std_logic;
+ FFC_FB_LB_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;
+
+ FFS_CC_ORUN_0 : out std_logic;
+ FFS_CC_ORUN_1 : out std_logic;
+ FFS_CC_ORUN_2 : out std_logic;
+ FFS_CC_ORUN_3 : out std_logic;
+
+ FFS_CC_URUN_0 : out std_logic;
+ FFS_CC_URUN_1 : out std_logic;
+ FFS_CC_URUN_2 : out std_logic;
+ FFS_CC_URUN_3 : out std_logic;
+
+ FFC_CK_CORE_TX : in std_logic;
+ FFC_CK_CORE_RX : in std_logic;
+ RDATAO_7 : out std_logic;
+ RDATAO_6 : out std_logic;
+ RDATAO_5 : out std_logic;
+ RDATAO_4 : out std_logic;
+ RDATAO_3 : out std_logic;
+ RDATAO_2 : out std_logic;
+ RDATAO_1 : out std_logic;
+ RDATAO_0 : out std_logic;
+ INTO : out std_logic;
+
+ ADDRI_7 : in std_logic;
+ ADDRI_6 : in std_logic;
+ ADDRI_5 : in std_logic;
+ ADDRI_4 : in std_logic;
+ ADDRI_3 : in std_logic;
+ ADDRI_2 : in std_logic;
+ ADDRI_1 : in std_logic;
+ ADDRI_0 : in std_logic;
+ WDATAI_7 : in std_logic;
+ WDATAI_6 : in std_logic;
+ WDATAI_5 : in std_logic;
+ WDATAI_4 : in std_logic;
+ WDATAI_3 : in std_logic;
+ WDATAI_2 : in std_logic;
+ WDATAI_1 : in std_logic;
+ WDATAI_0 : in std_logic;
+ RDI : in std_logic;
+ WSTBI : in std_logic;
+
+ CS_CHIF_0 : in std_logic;
+ CS_CHIF_1 : in std_logic;
+ CS_CHIF_2 : in std_logic;
+ CS_CHIF_3 : in std_logic;
+ CS_QIF : in std_logic;
+
+ QUAD_ID_1 : in std_logic;
+ QUAD_ID_0 : in std_logic;
+
+ FF_SYSCLK_P1 : out std_logic;
+
+ FF_SYSCLK0 : out std_logic;
+ FF_SYSCLK1 : out std_logic;
+ FF_SYSCLK2 : out std_logic;
+ FF_SYSCLK3 : out std_logic;
+
+ FF_RXCLK_P1 : out std_logic;
+ FF_RXCLK_P2 : out std_logic;
+
+ FF_RXCLK0 : out std_logic;
+ FF_RXCLK1 : out std_logic;
+ FF_RXCLK2 : out std_logic;
+ FF_RXCLK3 : out std_logic;
+
+ QUAD_CLK : out std_logic;
+
+ GRP_CLK_P1_3 : in std_logic;
+ GRP_CLK_P1_2 : in std_logic;
+ GRP_CLK_P1_1 : in std_logic;
+ GRP_CLK_P1_0 : in std_logic;
+
+ GRP_CLK_P2_3 : in std_logic;
+ GRP_CLK_P2_2 : in std_logic;
+ GRP_CLK_P2_1 : in std_logic;
+ GRP_CLK_P2_0 : in std_logic;
+
+ GRP_START_3 : in std_logic;
+ GRP_START_2 : in std_logic;
+ GRP_START_1 : in std_logic;
+ GRP_START_0 : in std_logic;
+
+ GRP_DONE_3 : in std_logic;
+ GRP_DONE_2 : in std_logic;
+ GRP_DONE_1 : in std_logic;
+ GRP_DONE_0 : in std_logic;
+
+ GRP_DESKEW_ERROR_3 : in std_logic;
+ GRP_DESKEW_ERROR_2 : in std_logic;
+ GRP_DESKEW_ERROR_1 : in std_logic;
+ GRP_DESKEW_ERROR_0 : in std_logic;
+
+ IQA_START_LS : out std_logic;
+ IQA_DONE_LS : out std_logic;
+ IQA_AND_FP1_LS : out std_logic;
+ IQA_AND_FP0_LS : out std_logic;
+ IQA_OR_FP1_LS : out std_logic;
+ IQA_OR_FP0_LS : out std_logic;
+ IQA_RST_N : out std_logic;
+
+ FF_TCLK0 : in std_logic;
+ FF_TCLK1 : in std_logic;
+ FF_TCLK2 : in std_logic;
+ FF_TCLK3 : in std_logic;
+
+ FF_RCLK0 : in std_logic;
+ FF_RCLK1 : in std_logic;
+ FF_RCLK2 : in std_logic;
+ FF_RCLK3 : in std_logic;
+ TCK_FMACP : in std_logic;
+
+ FF_TXD_0_23 : in std_logic;
+ FF_TXD_0_22 : in std_logic;
+ FF_TXD_0_21 : in std_logic;
+ FF_TXD_0_20 : in std_logic;
+ FF_TXD_0_19 : in std_logic;
+ FF_TXD_0_18 : in std_logic;
+ FF_TXD_0_17 : in std_logic;
+ FF_TXD_0_16 : in std_logic;
+ FF_TXD_0_15 : in std_logic;
+ FF_TXD_0_14 : in std_logic;
+ FF_TXD_0_13 : in std_logic;
+ FF_TXD_0_12 : in std_logic;
+ FF_TXD_0_11 : in std_logic;
+ FF_TXD_0_10 : in std_logic;
+ FF_TXD_0_9 : in std_logic;
+ FF_TXD_0_8 : in std_logic;
+ FF_TXD_0_7 : in std_logic;
+ FF_TXD_0_6 : in std_logic;
+ FF_TXD_0_5 : in std_logic;
+ FF_TXD_0_4 : in std_logic;
+ FF_TXD_0_3 : in std_logic;
+ FF_TXD_0_2 : in std_logic;
+ FF_TXD_0_1 : in std_logic;
+ FF_TXD_0_0 : in std_logic;
+ FB_RXD_0_23 : out std_logic;
+ FB_RXD_0_22 : out std_logic;
+ FB_RXD_0_21 : out std_logic;
+ FB_RXD_0_20 : out std_logic;
+ FB_RXD_0_19 : out std_logic;
+ FB_RXD_0_18 : out std_logic;
+ FB_RXD_0_17 : out std_logic;
+ FB_RXD_0_16 : out std_logic;
+ FB_RXD_0_15 : out std_logic;
+ FB_RXD_0_14 : out std_logic;
+ FB_RXD_0_13 : out std_logic;
+ FB_RXD_0_12 : out std_logic;
+ FB_RXD_0_11 : out std_logic;
+ FB_RXD_0_10 : out std_logic;
+ FB_RXD_0_9 : out std_logic;
+ FB_RXD_0_8 : out std_logic;
+ FB_RXD_0_7 : out std_logic;
+ FB_RXD_0_6 : out std_logic;
+ FB_RXD_0_5 : out std_logic;
+ FB_RXD_0_4 : out std_logic;
+ FB_RXD_0_3 : out std_logic;
+ FB_RXD_0_2 : out std_logic;
+ FB_RXD_0_1 : out std_logic;
+ FB_RXD_0_0 : out std_logic;
+ FF_TXD_1_23 : in std_logic;
+ FF_TXD_1_22 : in std_logic;
+ FF_TXD_1_21 : in std_logic;
+ FF_TXD_1_20 : in std_logic;
+ FF_TXD_1_19 : in std_logic;
+ FF_TXD_1_18 : in std_logic;
+ FF_TXD_1_17 : in std_logic;
+ FF_TXD_1_16 : in std_logic;
+ FF_TXD_1_15 : in std_logic;
+ FF_TXD_1_14 : in std_logic;
+ FF_TXD_1_13 : in std_logic;
+ FF_TXD_1_12 : in std_logic;
+ FF_TXD_1_11 : in std_logic;
+ FF_TXD_1_10 : in std_logic;
+ FF_TXD_1_9 : in std_logic;
+ FF_TXD_1_8 : in std_logic;
+ FF_TXD_1_7 : in std_logic;
+ FF_TXD_1_6 : in std_logic;
+ FF_TXD_1_5 : in std_logic;
+ FF_TXD_1_4 : in std_logic;
+ FF_TXD_1_3 : in std_logic;
+ FF_TXD_1_2 : in std_logic;
+ FF_TXD_1_1 : in std_logic;
+ FF_TXD_1_0 : in std_logic;
+ FB_RXD_1_23 : out std_logic;
+ FB_RXD_1_22 : out std_logic;
+ FB_RXD_1_21 : out std_logic;
+ FB_RXD_1_20 : out std_logic;
+ FB_RXD_1_19 : out std_logic;
+ FB_RXD_1_18 : out std_logic;
+ FB_RXD_1_17 : out std_logic;
+ FB_RXD_1_16 : out std_logic;
+ FB_RXD_1_15 : out std_logic;
+ FB_RXD_1_14 : out std_logic;
+ FB_RXD_1_13 : out std_logic;
+ FB_RXD_1_12 : out std_logic;
+ FB_RXD_1_11 : out std_logic;
+ FB_RXD_1_10 : out std_logic;
+ FB_RXD_1_9 : out std_logic;
+ FB_RXD_1_8 : out std_logic;
+ FB_RXD_1_7 : out std_logic;
+ FB_RXD_1_6 : out std_logic;
+ FB_RXD_1_5 : out std_logic;
+ FB_RXD_1_4 : out std_logic;
+ FB_RXD_1_3 : out std_logic;
+ FB_RXD_1_2 : out std_logic;
+ FB_RXD_1_1 : out std_logic;
+ FB_RXD_1_0 : out std_logic;
+ FF_TXD_2_23 : in std_logic;
+ FF_TXD_2_22 : in std_logic;
+ FF_TXD_2_21 : in std_logic;
+ FF_TXD_2_20 : in std_logic;
+ FF_TXD_2_19 : in std_logic;
+ FF_TXD_2_18 : in std_logic;
+ FF_TXD_2_17 : in std_logic;
+ FF_TXD_2_16 : in std_logic;
+ FF_TXD_2_15 : in std_logic;
+ FF_TXD_2_14 : in std_logic;
+ FF_TXD_2_13 : in std_logic;
+ FF_TXD_2_12 : in std_logic;
+ FF_TXD_2_11 : in std_logic;
+ FF_TXD_2_10 : in std_logic;
+ FF_TXD_2_9 : in std_logic;
+ FF_TXD_2_8 : in std_logic;
+ FF_TXD_2_7 : in std_logic;
+ FF_TXD_2_6 : in std_logic;
+ FF_TXD_2_5 : in std_logic;
+ FF_TXD_2_4 : in std_logic;
+ FF_TXD_2_3 : in std_logic;
+ FF_TXD_2_2 : in std_logic;
+ FF_TXD_2_1 : in std_logic;
+ FF_TXD_2_0 : in std_logic;
+ FB_RXD_2_23 : out std_logic;
+ FB_RXD_2_22 : out std_logic;
+ FB_RXD_2_21 : out std_logic;
+ FB_RXD_2_20 : out std_logic;
+ FB_RXD_2_19 : out std_logic;
+ FB_RXD_2_18 : out std_logic;
+ FB_RXD_2_17 : out std_logic;
+ FB_RXD_2_16 : out std_logic;
+ FB_RXD_2_15 : out std_logic;
+ FB_RXD_2_14 : out std_logic;
+ FB_RXD_2_13 : out std_logic;
+ FB_RXD_2_12 : out std_logic;
+ FB_RXD_2_11 : out std_logic;
+ FB_RXD_2_10 : out std_logic;
+ FB_RXD_2_9 : out std_logic;
+ FB_RXD_2_8 : out std_logic;
+ FB_RXD_2_7 : out std_logic;
+ FB_RXD_2_6 : out std_logic;
+ FB_RXD_2_5 : out std_logic;
+ FB_RXD_2_4 : out std_logic;
+ FB_RXD_2_3 : out std_logic;
+ FB_RXD_2_2 : out std_logic;
+ FB_RXD_2_1 : out std_logic;
+ FB_RXD_2_0 : out std_logic;
+ FF_TXD_3_23 : in std_logic;
+ FF_TXD_3_22 : in std_logic;
+ FF_TXD_3_21 : in std_logic;
+ FF_TXD_3_20 : in std_logic;
+ FF_TXD_3_19 : in std_logic;
+ FF_TXD_3_18 : in std_logic;
+ FF_TXD_3_17 : in std_logic;
+ FF_TXD_3_16 : in std_logic;
+ FF_TXD_3_15 : in std_logic;
+ FF_TXD_3_14 : in std_logic;
+ FF_TXD_3_13 : in std_logic;
+ FF_TXD_3_12 : in std_logic;
+ FF_TXD_3_11 : in std_logic;
+ FF_TXD_3_10 : in std_logic;
+ FF_TXD_3_9 : in std_logic;
+ FF_TXD_3_8 : in std_logic;
+ FF_TXD_3_7 : in std_logic;
+ FF_TXD_3_6 : in std_logic;
+ FF_TXD_3_5 : in std_logic;
+ FF_TXD_3_4 : in std_logic;
+ FF_TXD_3_3 : in std_logic;
+ FF_TXD_3_2 : in std_logic;
+ FF_TXD_3_1 : in std_logic;
+ FF_TXD_3_0 : in std_logic;
+ FB_RXD_3_23 : out std_logic;
+ FB_RXD_3_22 : out std_logic;
+ FB_RXD_3_21 : out std_logic;
+ FB_RXD_3_20 : out std_logic;
+ FB_RXD_3_19 : out std_logic;
+ FB_RXD_3_18 : out std_logic;
+ FB_RXD_3_17 : out std_logic;
+ FB_RXD_3_16 : out std_logic;
+ FB_RXD_3_15 : out std_logic;
+ FB_RXD_3_14 : out std_logic;
+ FB_RXD_3_13 : out std_logic;
+ FB_RXD_3_12 : out std_logic;
+ FB_RXD_3_11 : out std_logic;
+ FB_RXD_3_10 : out std_logic;
+ FB_RXD_3_9 : out std_logic;
+ FB_RXD_3_8 : out std_logic;
+ FB_RXD_3_7 : out std_logic;
+ FB_RXD_3_6 : out std_logic;
+ FB_RXD_3_5 : out std_logic;
+ FB_RXD_3_4 : out std_logic;
+ FB_RXD_3_3 : out std_logic;
+ FB_RXD_3_2 : out std_logic;
+ FB_RXD_3_1 : out std_logic;
+ FB_RXD_3_0 : out std_logic;
+ TCK_FMAC : out std_logic;
+ BS4PAD_0 : out std_logic;
+ BS4PAD_1 : out std_logic;
+ BS4PAD_2 : out std_logic;
+ BS4PAD_3 : out std_logic;
+ COUT_21 : out std_logic;
+ COUT_20 : out std_logic;
+ COUT_19 : out std_logic;
+ COUT_18 : out std_logic;
+ COUT_17 : out std_logic;
+ COUT_16 : out std_logic;
+ COUT_15 : out std_logic;
+ COUT_14 : out std_logic;
+ COUT_13 : out std_logic;
+ COUT_12 : out std_logic;
+ COUT_11 : out std_logic;
+ COUT_10 : out std_logic;
+ COUT_9 : out std_logic;
+ COUT_8 : out std_logic;
+ COUT_7 : out std_logic;
+ COUT_6 : out std_logic;
+ COUT_5 : out std_logic;
+ COUT_4 : out std_logic;
+ COUT_3 : out std_logic;
+ COUT_2 : out std_logic;
+ COUT_1 : out std_logic;
+ COUT_0 : out std_logic;
+ CIN_12 : in std_logic;
+ CIN_11 : in std_logic;
+ CIN_10 : in std_logic;
+ CIN_9 : in std_logic;
+ CIN_8 : in std_logic;
+ CIN_7 : in std_logic;
+ CIN_6 : in std_logic;
+ CIN_5 : in std_logic;
+ CIN_4 : in std_logic;
+ CIN_3 : in std_logic;
+ CIN_2 : in std_logic;
+ CIN_1 : in std_logic;
+ CIN_0 : in std_logic;
+ TESTCLK_MACO : in std_logic
+);
+
+end PCSA;
+
+architecture PCSA_arch of PCSA is
+
+component PCSA_sim
+GENERIC(
+ CONFIG_FILE : String
+ );
+port (
+ HDINP0 : in std_logic;
+ HDINN0 : in std_logic;
+ HDINP1 : in std_logic;
+ HDINN1 : in std_logic;
+ HDINP2 : in std_logic;
+ HDINN2 : in std_logic;
+ HDINP3 : in std_logic;
+ HDINN3 : in std_logic;
+ HDOUTP0 : out std_logic;
+ HDOUTN0 : out std_logic;
+ HDOUTP1 : out std_logic;
+ HDOUTN1 : out std_logic;
+ HDOUTP2 : out std_logic;
+ HDOUTN2 : out std_logic;
+ HDOUTP3 : out std_logic;
+ HDOUTN3 : out std_logic;
+ REFCLKP : in std_logic;
+ REFCLKN : in std_logic;
+ RXREFCLKP : in std_logic;
+ RXREFCLKN : in std_logic;
+ FFC_QUAD_RST : in std_logic;
+ FFC_MACRO_RST : in std_logic;
+
+ FFC_LANE_TX_RST0 : in std_logic;
+ FFC_LANE_TX_RST1 : in std_logic;
+ FFC_LANE_TX_RST2 : in std_logic;
+ FFC_LANE_TX_RST3 : in std_logic;
+
+ FFC_LANE_RX_RST0 : in std_logic;
+ FFC_LANE_RX_RST1 : in std_logic;
+ FFC_LANE_RX_RST2 : in std_logic;
+ FFC_LANE_RX_RST3 : in std_logic;
+
+ FFC_PCIE_EI_EN_0 : in std_logic;
+ FFC_PCIE_EI_EN_1 : in std_logic;
+ FFC_PCIE_EI_EN_2 : in std_logic;
+ FFC_PCIE_EI_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;
+
+ 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;
+
+ FFC_PCIE_TX_0 : in std_logic;
+ FFC_PCIE_TX_1 : in std_logic;
+ FFC_PCIE_TX_2 : in std_logic;
+ FFC_PCIE_TX_3 : in std_logic;
+
+ FFC_PCIE_RX_0 : in std_logic;
+ FFC_PCIE_RX_1 : in std_logic;
+ FFC_PCIE_RX_2 : in std_logic;
+ FFC_PCIE_RX_3 : in std_logic;
+
+ FFC_SD_0 : in std_logic;
+ FFC_SD_1 : in std_logic;
+ FFC_SD_2 : in std_logic;
+ FFC_SD_3 : in std_logic;
+
+ FFC_EN_CGA_0 : in std_logic;
+ FFC_EN_CGA_1 : in std_logic;
+ FFC_EN_CGA_2 : in std_logic;
+ FFC_EN_CGA_3 : in std_logic;
+
+ FFC_ALIGN_EN_0 : in std_logic;
+ FFC_ALIGN_EN_1 : in std_logic;
+ FFC_ALIGN_EN_2 : in std_logic;
+ FFC_ALIGN_EN_3 : in std_logic;
+
+ FFC_AB_RESET : in std_logic;
+ FFC_CD_RESET : in std_logic;
+
+ FFS_LS_STATUS_0 : out std_logic;
+ FFS_LS_STATUS_1 : out std_logic;
+ FFS_LS_STATUS_2 : out std_logic;
+ FFS_LS_STATUS_3 : out std_logic;
+
+ FFS_AB_STATUS : out std_logic;
+ FFS_CD_STATUS : out std_logic;
+
+ FFS_AB_ALIGNED : out std_logic;
+ FFS_CD_ALIGNED : out std_logic;
+
+ FFS_AB_FAILED : out std_logic;
+ FFS_CD_FAILED : out std_logic;
+
+ FFS_RLOS_LO0 : out std_logic;
+ FFS_RLOS_LO1 : out std_logic;
+ FFS_RLOS_LO2 : out std_logic;
+ FFS_RLOS_LO3 : out std_logic;
+
+ FFC_FB_LB_0 : in std_logic;
+ FFC_FB_LB_1 : in std_logic;
+ FFC_FB_LB_2 : in std_logic;
+ FFC_FB_LB_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;
+
+ FFS_CC_ORUN_0 : out std_logic;
+ FFS_CC_ORUN_1 : out std_logic;
+ FFS_CC_ORUN_2 : out std_logic;
+ FFS_CC_ORUN_3 : out std_logic;
+
+ FFS_CC_URUN_0 : out std_logic;
+ FFS_CC_URUN_1 : out std_logic;
+ FFS_CC_URUN_2 : out std_logic;
+ FFS_CC_URUN_3 : out std_logic;
+
+ FFC_CK_CORE_TX : in std_logic;
+ FFC_CK_CORE_RX : in std_logic;
+ RDATAO_7 : out std_logic;
+ RDATAO_6 : out std_logic;
+ RDATAO_5 : out std_logic;
+ RDATAO_4 : out std_logic;
+ RDATAO_3 : out std_logic;
+ RDATAO_2 : out std_logic;
+ RDATAO_1 : out std_logic;
+ RDATAO_0 : out std_logic;
+ INTO : out std_logic;
+
+ ADDRI_7 : in std_logic;
+ ADDRI_6 : in std_logic;
+ ADDRI_5 : in std_logic;
+ ADDRI_4 : in std_logic;
+ ADDRI_3 : in std_logic;
+ ADDRI_2 : in std_logic;
+ ADDRI_1 : in std_logic;
+ ADDRI_0 : in std_logic;
+ WDATAI_7 : in std_logic;
+ WDATAI_6 : in std_logic;
+ WDATAI_5 : in std_logic;
+ WDATAI_4 : in std_logic;
+ WDATAI_3 : in std_logic;
+ WDATAI_2 : in std_logic;
+ WDATAI_1 : in std_logic;
+ WDATAI_0 : in std_logic;
+ RDI : in std_logic;
+ WSTBI : in std_logic;
+
+ CS_CHIF_0 : in std_logic;
+ CS_CHIF_1 : in std_logic;
+ CS_CHIF_2 : in std_logic;
+ CS_CHIF_3 : in std_logic;
+ CS_QIF : in std_logic;
+
+ QUAD_ID_1 : in std_logic;
+ QUAD_ID_0 : in std_logic;
+
+ FF_SYSCLK_P1 : out std_logic;
+
+ FF_SYSCLK0 : out std_logic;
+ FF_SYSCLK1 : out std_logic;
+ FF_SYSCLK2 : out std_logic;
+ FF_SYSCLK3 : out std_logic;
+
+ FF_RXCLK_P1 : out std_logic;
+ FF_RXCLK_P2 : out std_logic;
+
+ FF_RXCLK0 : out std_logic;
+ FF_RXCLK1 : out std_logic;
+ FF_RXCLK2 : out std_logic;
+ FF_RXCLK3 : out std_logic;
+
+ QUAD_CLK : out std_logic;
+
+ GRP_CLK_P1_3 : in std_logic;
+ GRP_CLK_P1_2 : in std_logic;
+ GRP_CLK_P1_1 : in std_logic;
+ GRP_CLK_P1_0 : in std_logic;
+
+ GRP_CLK_P2_3 : in std_logic;
+ GRP_CLK_P2_2 : in std_logic;
+ GRP_CLK_P2_1 : in std_logic;
+ GRP_CLK_P2_0 : in std_logic;
+
+ GRP_START_3 : in std_logic;
+ GRP_START_2 : in std_logic;
+ GRP_START_1 : in std_logic;
+ GRP_START_0 : in std_logic;
+
+ GRP_DONE_3 : in std_logic;
+ GRP_DONE_2 : in std_logic;
+ GRP_DONE_1 : in std_logic;
+ GRP_DONE_0 : in std_logic;
+
+ GRP_DESKEW_ERROR_3 : in std_logic;
+ GRP_DESKEW_ERROR_2 : in std_logic;
+ GRP_DESKEW_ERROR_1 : in std_logic;
+ GRP_DESKEW_ERROR_0 : in std_logic;
+
+ IQA_START_LS : out std_logic;
+ IQA_DONE_LS : out std_logic;
+ IQA_AND_FP1_LS : out std_logic;
+ IQA_AND_FP0_LS : out std_logic;
+ IQA_OR_FP1_LS : out std_logic;
+ IQA_OR_FP0_LS : out std_logic;
+ IQA_RST_N : out std_logic;
+
+ FF_TCLK0 : in std_logic;
+ FF_TCLK1 : in std_logic;
+ FF_TCLK2 : in std_logic;
+ FF_TCLK3 : in std_logic;
+
+ FF_RCLK0 : in std_logic;
+ FF_RCLK1 : in std_logic;
+ FF_RCLK2 : in std_logic;
+ FF_RCLK3 : in std_logic;
+ TCK_FMACP : in std_logic;
+
+ FF_TXD_0_23 : in std_logic;
+ FF_TXD_0_22 : in std_logic;
+ FF_TXD_0_21 : in std_logic;
+ FF_TXD_0_20 : in std_logic;
+ FF_TXD_0_19 : in std_logic;
+ FF_TXD_0_18 : in std_logic;
+ FF_TXD_0_17 : in std_logic;
+ FF_TXD_0_16 : in std_logic;
+ FF_TXD_0_15 : in std_logic;
+ FF_TXD_0_14 : in std_logic;
+ FF_TXD_0_13 : in std_logic;
+ FF_TXD_0_12 : in std_logic;
+ FF_TXD_0_11 : in std_logic;
+ FF_TXD_0_10 : in std_logic;
+ FF_TXD_0_9 : in std_logic;
+ FF_TXD_0_8 : in std_logic;
+ FF_TXD_0_7 : in std_logic;
+ FF_TXD_0_6 : in std_logic;
+ FF_TXD_0_5 : in std_logic;
+ FF_TXD_0_4 : in std_logic;
+ FF_TXD_0_3 : in std_logic;
+ FF_TXD_0_2 : in std_logic;
+ FF_TXD_0_1 : in std_logic;
+ FF_TXD_0_0 : in std_logic;
+ FB_RXD_0_23 : out std_logic;
+ FB_RXD_0_22 : out std_logic;
+ FB_RXD_0_21 : out std_logic;
+ FB_RXD_0_20 : out std_logic;
+ FB_RXD_0_19 : out std_logic;
+ FB_RXD_0_18 : out std_logic;
+ FB_RXD_0_17 : out std_logic;
+ FB_RXD_0_16 : out std_logic;
+ FB_RXD_0_15 : out std_logic;
+ FB_RXD_0_14 : out std_logic;
+ FB_RXD_0_13 : out std_logic;
+ FB_RXD_0_12 : out std_logic;
+ FB_RXD_0_11 : out std_logic;
+ FB_RXD_0_10 : out std_logic;
+ FB_RXD_0_9 : out std_logic;
+ FB_RXD_0_8 : out std_logic;
+ FB_RXD_0_7 : out std_logic;
+ FB_RXD_0_6 : out std_logic;
+ FB_RXD_0_5 : out std_logic;
+ FB_RXD_0_4 : out std_logic;
+ FB_RXD_0_3 : out std_logic;
+ FB_RXD_0_2 : out std_logic;
+ FB_RXD_0_1 : out std_logic;
+ FB_RXD_0_0 : out std_logic;
+ FF_TXD_1_23 : in std_logic;
+ FF_TXD_1_22 : in std_logic;
+ FF_TXD_1_21 : in std_logic;
+ FF_TXD_1_20 : in std_logic;
+ FF_TXD_1_19 : in std_logic;
+ FF_TXD_1_18 : in std_logic;
+ FF_TXD_1_17 : in std_logic;
+ FF_TXD_1_16 : in std_logic;
+ FF_TXD_1_15 : in std_logic;
+ FF_TXD_1_14 : in std_logic;
+ FF_TXD_1_13 : in std_logic;
+ FF_TXD_1_12 : in std_logic;
+ FF_TXD_1_11 : in std_logic;
+ FF_TXD_1_10 : in std_logic;
+ FF_TXD_1_9 : in std_logic;
+ FF_TXD_1_8 : in std_logic;
+ FF_TXD_1_7 : in std_logic;
+ FF_TXD_1_6 : in std_logic;
+ FF_TXD_1_5 : in std_logic;
+ FF_TXD_1_4 : in std_logic;
+ FF_TXD_1_3 : in std_logic;
+ FF_TXD_1_2 : in std_logic;
+ FF_TXD_1_1 : in std_logic;
+ FF_TXD_1_0 : in std_logic;
+ FB_RXD_1_23 : out std_logic;
+ FB_RXD_1_22 : out std_logic;
+ FB_RXD_1_21 : out std_logic;
+ FB_RXD_1_20 : out std_logic;
+ FB_RXD_1_19 : out std_logic;
+ FB_RXD_1_18 : out std_logic;
+ FB_RXD_1_17 : out std_logic;
+ FB_RXD_1_16 : out std_logic;
+ FB_RXD_1_15 : out std_logic;
+ FB_RXD_1_14 : out std_logic;
+ FB_RXD_1_13 : out std_logic;
+ FB_RXD_1_12 : out std_logic;
+ FB_RXD_1_11 : out std_logic;
+ FB_RXD_1_10 : out std_logic;
+ FB_RXD_1_9 : out std_logic;
+ FB_RXD_1_8 : out std_logic;
+ FB_RXD_1_7 : out std_logic;
+ FB_RXD_1_6 : out std_logic;
+ FB_RXD_1_5 : out std_logic;
+ FB_RXD_1_4 : out std_logic;
+ FB_RXD_1_3 : out std_logic;
+ FB_RXD_1_2 : out std_logic;
+ FB_RXD_1_1 : out std_logic;
+ FB_RXD_1_0 : out std_logic;
+ FF_TXD_2_23 : in std_logic;
+ FF_TXD_2_22 : in std_logic;
+ FF_TXD_2_21 : in std_logic;
+ FF_TXD_2_20 : in std_logic;
+ FF_TXD_2_19 : in std_logic;
+ FF_TXD_2_18 : in std_logic;
+ FF_TXD_2_17 : in std_logic;
+ FF_TXD_2_16 : in std_logic;
+ FF_TXD_2_15 : in std_logic;
+ FF_TXD_2_14 : in std_logic;
+ FF_TXD_2_13 : in std_logic;
+ FF_TXD_2_12 : in std_logic;
+ FF_TXD_2_11 : in std_logic;
+ FF_TXD_2_10 : in std_logic;
+ FF_TXD_2_9 : in std_logic;
+ FF_TXD_2_8 : in std_logic;
+ FF_TXD_2_7 : in std_logic;
+ FF_TXD_2_6 : in std_logic;
+ FF_TXD_2_5 : in std_logic;
+ FF_TXD_2_4 : in std_logic;
+ FF_TXD_2_3 : in std_logic;
+ FF_TXD_2_2 : in std_logic;
+ FF_TXD_2_1 : in std_logic;
+ FF_TXD_2_0 : in std_logic;
+ FB_RXD_2_23 : out std_logic;
+ FB_RXD_2_22 : out std_logic;
+ FB_RXD_2_21 : out std_logic;
+ FB_RXD_2_20 : out std_logic;
+ FB_RXD_2_19 : out std_logic;
+ FB_RXD_2_18 : out std_logic;
+ FB_RXD_2_17 : out std_logic;
+ FB_RXD_2_16 : out std_logic;
+ FB_RXD_2_15 : out std_logic;
+ FB_RXD_2_14 : out std_logic;
+ FB_RXD_2_13 : out std_logic;
+ FB_RXD_2_12 : out std_logic;
+ FB_RXD_2_11 : out std_logic;
+ FB_RXD_2_10 : out std_logic;
+ FB_RXD_2_9 : out std_logic;
+ FB_RXD_2_8 : out std_logic;
+ FB_RXD_2_7 : out std_logic;
+ FB_RXD_2_6 : out std_logic;
+ FB_RXD_2_5 : out std_logic;
+ FB_RXD_2_4 : out std_logic;
+ FB_RXD_2_3 : out std_logic;
+ FB_RXD_2_2 : out std_logic;
+ FB_RXD_2_1 : out std_logic;
+ FB_RXD_2_0 : out std_logic;
+ FF_TXD_3_23 : in std_logic;
+ FF_TXD_3_22 : in std_logic;
+ FF_TXD_3_21 : in std_logic;
+ FF_TXD_3_20 : in std_logic;
+ FF_TXD_3_19 : in std_logic;
+ FF_TXD_3_18 : in std_logic;
+ FF_TXD_3_17 : in std_logic;
+ FF_TXD_3_16 : in std_logic;
+ FF_TXD_3_15 : in std_logic;
+ FF_TXD_3_14 : in std_logic;
+ FF_TXD_3_13 : in std_logic;
+ FF_TXD_3_12 : in std_logic;
+ FF_TXD_3_11 : in std_logic;
+ FF_TXD_3_10 : in std_logic;
+ FF_TXD_3_9 : in std_logic;
+ FF_TXD_3_8 : in std_logic;
+ FF_TXD_3_7 : in std_logic;
+ FF_TXD_3_6 : in std_logic;
+ FF_TXD_3_5 : in std_logic;
+ FF_TXD_3_4 : in std_logic;
+ FF_TXD_3_3 : in std_logic;
+ FF_TXD_3_2 : in std_logic;
+ FF_TXD_3_1 : in std_logic;
+ FF_TXD_3_0 : in std_logic;
+ FB_RXD_3_23 : out std_logic;
+ FB_RXD_3_22 : out std_logic;
+ FB_RXD_3_21 : out std_logic;
+ FB_RXD_3_20 : out std_logic;
+ FB_RXD_3_19 : out std_logic;
+ FB_RXD_3_18 : out std_logic;
+ FB_RXD_3_17 : out std_logic;
+ FB_RXD_3_16 : out std_logic;
+ FB_RXD_3_15 : out std_logic;
+ FB_RXD_3_14 : out std_logic;
+ FB_RXD_3_13 : out std_logic;
+ FB_RXD_3_12 : out std_logic;
+ FB_RXD_3_11 : out std_logic;
+ FB_RXD_3_10 : out std_logic;
+ FB_RXD_3_9 : out std_logic;
+ FB_RXD_3_8 : out std_logic;
+ FB_RXD_3_7 : out std_logic;
+ FB_RXD_3_6 : out std_logic;
+ FB_RXD_3_5 : out std_logic;
+ FB_RXD_3_4 : out std_logic;
+ FB_RXD_3_3 : out std_logic;
+ FB_RXD_3_2 : out std_logic;
+ FB_RXD_3_1 : out std_logic;
+ FB_RXD_3_0 : out std_logic;
+ TCK_FMAC : out std_logic;
+ BS4PAD_0 : out std_logic;
+ BS4PAD_1 : out std_logic;
+ BS4PAD_2 : out std_logic;
+ BS4PAD_3 : out std_logic;
+ COUT_21 : out std_logic;
+ COUT_20 : out std_logic;
+ COUT_19 : out std_logic;
+ COUT_18 : out std_logic;
+ COUT_17 : out std_logic;
+ COUT_16 : out std_logic;
+ COUT_15 : out std_logic;
+ COUT_14 : out std_logic;
+ COUT_13 : out std_logic;
+ COUT_12 : out std_logic;
+ COUT_11 : out std_logic;
+ COUT_10 : out std_logic;
+ COUT_9 : out std_logic;
+ COUT_8 : out std_logic;
+ COUT_7 : out std_logic;
+ COUT_6 : out std_logic;
+ COUT_5 : out std_logic;
+ COUT_4 : out std_logic;
+ COUT_3 : out std_logic;
+ COUT_2 : out std_logic;
+ COUT_1 : out std_logic;
+ COUT_0 : out std_logic;
+ CIN_12 : in std_logic;
+ CIN_11 : in std_logic;
+ CIN_10 : in std_logic;
+ CIN_9 : in std_logic;
+ CIN_8 : in std_logic;
+ CIN_7 : in std_logic;
+ CIN_6 : in std_logic;
+ CIN_5 : in std_logic;
+ CIN_4 : in std_logic;
+ CIN_3 : in std_logic;
+ CIN_2 : in std_logic;
+ CIN_1 : in std_logic;
+ CIN_0 : in std_logic;
+ TESTCLK_MACO : in std_logic
+);
+end component;
+
+begin
+
+PCSA_sim_inst : PCSA_sim
+generic map (
+ CONFIG_FILE => CONFIG_FILE)
+port map (
+ HDINP0 => HDINP0,
+ HDINN0 => HDINN0,
+ HDINP1 => HDINP1,
+ HDINN1 => HDINN1,
+ HDINP2 => HDINP2,
+ HDINN2 => HDINN2,
+ HDINP3 => HDINP3,
+ HDINN3 => HDINN3,
+ HDOUTP0 => HDOUTP0,
+ HDOUTN0 => HDOUTN0,
+ HDOUTP1 => HDOUTP1,
+ HDOUTN1 => HDOUTN1,
+ HDOUTP2 => HDOUTP2,
+ HDOUTN2 => HDOUTN2,
+ HDOUTP3 => HDOUTP3,
+ HDOUTN3 => HDOUTN3,
+ REFCLKP => REFCLKP,
+ REFCLKN => REFCLKN,
+ RXREFCLKP => RXREFCLKP,
+ RXREFCLKN => RXREFCLKN,
+ FFC_QUAD_RST => FFC_QUAD_RST,
+ FFC_MACRO_RST => FFC_MACRO_RST,
+ FFC_LANE_TX_RST0 => FFC_LANE_TX_RST0,
+ FFC_LANE_TX_RST1 => FFC_LANE_TX_RST1,
+ FFC_LANE_TX_RST2 => FFC_LANE_TX_RST2,
+ FFC_LANE_TX_RST3 => FFC_LANE_TX_RST3,
+ FFC_LANE_RX_RST0 => FFC_LANE_RX_RST0,
+ FFC_LANE_RX_RST1 => FFC_LANE_RX_RST1,
+ FFC_LANE_RX_RST2 => FFC_LANE_RX_RST2,
+ FFC_LANE_RX_RST3 => FFC_LANE_RX_RST3,
+ FFC_PCIE_EI_EN_0 => FFC_PCIE_EI_EN_0,
+ FFC_PCIE_EI_EN_1 => FFC_PCIE_EI_EN_1,
+ FFC_PCIE_EI_EN_2 => FFC_PCIE_EI_EN_2,
+ FFC_PCIE_EI_EN_3 => FFC_PCIE_EI_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,
+ 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,
+ FFC_PCIE_TX_0 => FFC_PCIE_TX_0,
+ FFC_PCIE_TX_1 => FFC_PCIE_TX_1,
+ FFC_PCIE_TX_2 => FFC_PCIE_TX_2,
+ FFC_PCIE_TX_3 => FFC_PCIE_TX_3,
+ FFC_PCIE_RX_0 => FFC_PCIE_RX_0,
+ FFC_PCIE_RX_1 => FFC_PCIE_RX_1,
+ FFC_PCIE_RX_2 => FFC_PCIE_RX_2,
+ FFC_PCIE_RX_3 => FFC_PCIE_RX_3,
+ FFC_SD_0 => FFC_SD_0,
+ FFC_SD_1 => FFC_SD_1,
+ FFC_SD_2 => FFC_SD_2,
+ FFC_SD_3 => FFC_SD_3,
+ FFC_EN_CGA_0 => FFC_EN_CGA_0,
+ FFC_EN_CGA_1 => FFC_EN_CGA_1,
+ FFC_EN_CGA_2 => FFC_EN_CGA_2,
+ FFC_EN_CGA_3 => FFC_EN_CGA_3,
+ FFC_ALIGN_EN_0 => FFC_ALIGN_EN_0,
+ FFC_ALIGN_EN_1 => FFC_ALIGN_EN_1,
+ FFC_ALIGN_EN_2 => FFC_ALIGN_EN_2,
+ FFC_ALIGN_EN_3 => FFC_ALIGN_EN_3,
+ FFC_AB_RESET => FFC_AB_RESET,
+ FFC_CD_RESET => FFC_CD_RESET,
+ FFS_LS_STATUS_0 => FFS_LS_STATUS_0,
+ FFS_LS_STATUS_1 => FFS_LS_STATUS_1,
+ FFS_LS_STATUS_2 => FFS_LS_STATUS_2,
+ FFS_LS_STATUS_3 => FFS_LS_STATUS_3,
+ FFS_AB_STATUS => FFS_AB_STATUS,
+ FFS_CD_STATUS => FFS_CD_STATUS,
+ FFS_AB_ALIGNED => FFS_AB_ALIGNED,
+ FFS_CD_ALIGNED => FFS_CD_ALIGNED,
+ FFS_AB_FAILED => FFS_AB_FAILED,
+ FFS_CD_FAILED => FFS_CD_FAILED,
+ FFS_RLOS_LO0 => FFS_RLOS_LO0,
+ FFS_RLOS_LO1 => FFS_RLOS_LO1,
+ FFS_RLOS_LO2 => FFS_RLOS_LO2,
+ FFS_RLOS_LO3 => FFS_RLOS_LO3,
+ FFC_FB_LB_0 => FFC_FB_LB_0,
+ FFC_FB_LB_1 => FFC_FB_LB_1,
+ FFC_FB_LB_2 => FFC_FB_LB_2,
+ FFC_FB_LB_3 => FFC_FB_LB_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,
+ FFS_CC_ORUN_0 => FFS_CC_ORUN_0,
+ FFS_CC_ORUN_1 => FFS_CC_ORUN_1,
+ FFS_CC_ORUN_2 => FFS_CC_ORUN_2,
+ FFS_CC_ORUN_3 => FFS_CC_ORUN_3,
+ FFS_CC_URUN_0 => FFS_CC_URUN_0,
+ FFS_CC_URUN_1 => FFS_CC_URUN_1,
+ FFS_CC_URUN_2 => FFS_CC_URUN_2,
+ FFS_CC_URUN_3 => FFS_CC_URUN_3,
+ FFC_CK_CORE_TX => FFC_CK_CORE_TX,
+ FFC_CK_CORE_RX => FFC_CK_CORE_RX,
+ BS4PAD_0 => BS4PAD_0,
+ BS4PAD_1 => BS4PAD_1,
+ BS4PAD_2 => BS4PAD_2,
+ BS4PAD_3 => BS4PAD_3,
+ RDATAO_7 => RDATAO_7,
+ RDATAO_6 => RDATAO_6,
+ RDATAO_5 => RDATAO_5,
+ RDATAO_4 => RDATAO_4,
+ RDATAO_3 => RDATAO_3,
+ RDATAO_2 => RDATAO_2,
+ RDATAO_1 => RDATAO_1,
+ RDATAO_0 => RDATAO_0,
+ INTO => INTO,
+ ADDRI_7 => ADDRI_7,
+ ADDRI_6 => ADDRI_6,
+ ADDRI_5 => ADDRI_5,
+ ADDRI_4 => ADDRI_4,
+ ADDRI_3 => ADDRI_3,
+ ADDRI_2 => ADDRI_2,
+ ADDRI_1 => ADDRI_1,
+ ADDRI_0 => ADDRI_0,
+ WDATAI_7 => WDATAI_7,
+ WDATAI_6 => WDATAI_6,
+ WDATAI_5 => WDATAI_5,
+ WDATAI_4 => WDATAI_4,
+ WDATAI_3 => WDATAI_3,
+ WDATAI_2 => WDATAI_2,
+ WDATAI_1 => WDATAI_1,
+ WDATAI_0 => WDATAI_0,
+ RDI => RDI,
+ WSTBI => WSTBI,
+ CS_CHIF_0 => CS_CHIF_0,
+ CS_CHIF_1 => CS_CHIF_1,
+ CS_CHIF_2 => CS_CHIF_2,
+ CS_CHIF_3 => CS_CHIF_3,
+ CS_QIF => CS_QIF,
+ QUAD_ID_1 => QUAD_ID_1,
+ QUAD_ID_0 => QUAD_ID_0,
+ FF_SYSCLK_P1 => FF_SYSCLK_P1,
+ FF_SYSCLK0 => FF_SYSCLK0,
+ FF_SYSCLK1 => FF_SYSCLK1,
+ FF_SYSCLK2 => FF_SYSCLK2,
+ FF_SYSCLK3 => FF_SYSCLK3,
+ FF_RXCLK_P1 => FF_RXCLK_P1,
+ FF_RXCLK_P2 => FF_RXCLK_P2,
+ FF_RXCLK0 => FF_RXCLK0,
+ FF_RXCLK1 => FF_RXCLK1,
+ FF_RXCLK2 => FF_RXCLK2,
+ FF_RXCLK3 => FF_RXCLK3,
+ QUAD_CLK => QUAD_CLK,
+ GRP_CLK_P1_3 => GRP_CLK_P1_3,
+ GRP_CLK_P1_2 => GRP_CLK_P1_2,
+ GRP_CLK_P1_1 => GRP_CLK_P1_1,
+ GRP_CLK_P1_0 => GRP_CLK_P1_0,
+ GRP_CLK_P2_3 => GRP_CLK_P2_3,
+ GRP_CLK_P2_2 => GRP_CLK_P2_2,
+ GRP_CLK_P2_1 => GRP_CLK_P2_1,
+ GRP_CLK_P2_0 => GRP_CLK_P2_0,
+ GRP_START_3 => GRP_START_3,
+ GRP_START_2 => GRP_START_2,
+ GRP_START_1 => GRP_START_1,
+ GRP_START_0 => GRP_START_0,
+ GRP_DONE_3 => GRP_DONE_3,
+ GRP_DONE_2 => GRP_DONE_2,
+ GRP_DONE_1 => GRP_DONE_1,
+ GRP_DONE_0 => GRP_DONE_0,
+ GRP_DESKEW_ERROR_3 => GRP_DESKEW_ERROR_3,
+ GRP_DESKEW_ERROR_2 => GRP_DESKEW_ERROR_2,
+ GRP_DESKEW_ERROR_1 => GRP_DESKEW_ERROR_1,
+ GRP_DESKEW_ERROR_0 => GRP_DESKEW_ERROR_0,
+ IQA_START_LS => IQA_START_LS,
+ IQA_DONE_LS => IQA_DONE_LS,
+ IQA_AND_FP1_LS => IQA_AND_FP1_LS,
+ IQA_AND_FP0_LS => IQA_AND_FP0_LS,
+ IQA_OR_FP1_LS => IQA_OR_FP1_LS,
+ IQA_OR_FP0_LS => IQA_OR_FP0_LS,
+ IQA_RST_N => IQA_RST_N,
+ FF_TCLK0 => FF_TCLK0,
+ FF_TCLK1 => FF_TCLK1,
+ FF_TCLK2 => FF_TCLK2,
+ FF_TCLK3 => FF_TCLK3,
+ FF_RCLK0 => FF_RCLK0,
+ FF_RCLK1 => FF_RCLK1,
+ FF_RCLK2 => FF_RCLK2,
+ FF_RCLK3 => FF_RCLK3,
+ TCK_FMACP => TCK_FMACP,
+ FF_TXD_0_23 => FF_TXD_0_23,
+ FF_TXD_0_22 => FF_TXD_0_22,
+ FF_TXD_0_21 => FF_TXD_0_21,
+ FF_TXD_0_20 => FF_TXD_0_20,
+ FF_TXD_0_19 => FF_TXD_0_19,
+ FF_TXD_0_18 => FF_TXD_0_18,
+ FF_TXD_0_17 => FF_TXD_0_17,
+ FF_TXD_0_16 => FF_TXD_0_16,
+ FF_TXD_0_15 => FF_TXD_0_15,
+ FF_TXD_0_14 => FF_TXD_0_14,
+ FF_TXD_0_13 => FF_TXD_0_13,
+ FF_TXD_0_12 => FF_TXD_0_12,
+ FF_TXD_0_11 => FF_TXD_0_11,
+ FF_TXD_0_10 => FF_TXD_0_10,
+ FF_TXD_0_9 => FF_TXD_0_9,
+ FF_TXD_0_8 => FF_TXD_0_8,
+ FF_TXD_0_7 => FF_TXD_0_7,
+ FF_TXD_0_6 => FF_TXD_0_6,
+ FF_TXD_0_5 => FF_TXD_0_5,
+ FF_TXD_0_4 => FF_TXD_0_4,
+ FF_TXD_0_3 => FF_TXD_0_3,
+ FF_TXD_0_2 => FF_TXD_0_2,
+ FF_TXD_0_1 => FF_TXD_0_1,
+ FF_TXD_0_0 => FF_TXD_0_0,
+ FB_RXD_0_23 => FB_RXD_0_23,
+ FB_RXD_0_22 => FB_RXD_0_22,
+ FB_RXD_0_21 => FB_RXD_0_21,
+ FB_RXD_0_20 => FB_RXD_0_20,
+ FB_RXD_0_19 => FB_RXD_0_19,
+ FB_RXD_0_18 => FB_RXD_0_18,
+ FB_RXD_0_17 => FB_RXD_0_17,
+ FB_RXD_0_16 => FB_RXD_0_16,
+ FB_RXD_0_15 => FB_RXD_0_15,
+ FB_RXD_0_14 => FB_RXD_0_14,
+ FB_RXD_0_13 => FB_RXD_0_13,
+ FB_RXD_0_12 => FB_RXD_0_12,
+ FB_RXD_0_11 => FB_RXD_0_11,
+ FB_RXD_0_10 => FB_RXD_0_10,
+ FB_RXD_0_9 => FB_RXD_0_9,
+ FB_RXD_0_8 => FB_RXD_0_8,
+ FB_RXD_0_7 => FB_RXD_0_7,
+ FB_RXD_0_6 => FB_RXD_0_6,
+ FB_RXD_0_5 => FB_RXD_0_5,
+ FB_RXD_0_4 => FB_RXD_0_4,
+ FB_RXD_0_3 => FB_RXD_0_3,
+ FB_RXD_0_2 => FB_RXD_0_2,
+ FB_RXD_0_1 => FB_RXD_0_1,
+ FB_RXD_0_0 => FB_RXD_0_0,
+ FF_TXD_1_23 => FF_TXD_1_23,
+ FF_TXD_1_22 => FF_TXD_1_22,
+ FF_TXD_1_21 => FF_TXD_1_21,
+ FF_TXD_1_20 => FF_TXD_1_20,
+ FF_TXD_1_19 => FF_TXD_1_19,
+ FF_TXD_1_18 => FF_TXD_1_18,
+ FF_TXD_1_17 => FF_TXD_1_17,
+ FF_TXD_1_16 => FF_TXD_1_16,
+ FF_TXD_1_15 => FF_TXD_1_15,
+ FF_TXD_1_14 => FF_TXD_1_14,
+ FF_TXD_1_13 => FF_TXD_1_13,
+ FF_TXD_1_12 => FF_TXD_1_12,
+ FF_TXD_1_11 => FF_TXD_1_11,
+ FF_TXD_1_10 => FF_TXD_1_10,
+ FF_TXD_1_9 => FF_TXD_1_9,
+ FF_TXD_1_8 => FF_TXD_1_8,
+ FF_TXD_1_7 => FF_TXD_1_7,
+ FF_TXD_1_6 => FF_TXD_1_6,
+ FF_TXD_1_5 => FF_TXD_1_5,
+ FF_TXD_1_4 => FF_TXD_1_4,
+ FF_TXD_1_3 => FF_TXD_1_3,
+ FF_TXD_1_2 => FF_TXD_1_2,
+ FF_TXD_1_1 => FF_TXD_1_1,
+ FF_TXD_1_0 => FF_TXD_1_0,
+ FB_RXD_1_23 => FB_RXD_1_23,
+ FB_RXD_1_22 => FB_RXD_1_22,
+ FB_RXD_1_21 => FB_RXD_1_21,
+ FB_RXD_1_20 => FB_RXD_1_20,
+ FB_RXD_1_19 => FB_RXD_1_19,
+ FB_RXD_1_18 => FB_RXD_1_18,
+ FB_RXD_1_17 => FB_RXD_1_17,
+ FB_RXD_1_16 => FB_RXD_1_16,
+ FB_RXD_1_15 => FB_RXD_1_15,
+ FB_RXD_1_14 => FB_RXD_1_14,
+ FB_RXD_1_13 => FB_RXD_1_13,
+ FB_RXD_1_12 => FB_RXD_1_12,
+ FB_RXD_1_11 => FB_RXD_1_11,
+ FB_RXD_1_10 => FB_RXD_1_10,
+ FB_RXD_1_9 => FB_RXD_1_9,
+ FB_RXD_1_8 => FB_RXD_1_8,
+ FB_RXD_1_7 => FB_RXD_1_7,
+ FB_RXD_1_6 => FB_RXD_1_6,
+ FB_RXD_1_5 => FB_RXD_1_5,
+ FB_RXD_1_4 => FB_RXD_1_4,
+ FB_RXD_1_3 => FB_RXD_1_3,
+ FB_RXD_1_2 => FB_RXD_1_2,
+ FB_RXD_1_1 => FB_RXD_1_1,
+ FB_RXD_1_0 => FB_RXD_1_0,
+ FF_TXD_2_23 => FF_TXD_2_23,
+ FF_TXD_2_22 => FF_TXD_2_22,
+ FF_TXD_2_21 => FF_TXD_2_21,
+ FF_TXD_2_20 => FF_TXD_2_20,
+ FF_TXD_2_19 => FF_TXD_2_19,
+ FF_TXD_2_18 => FF_TXD_2_18,
+ FF_TXD_2_17 => FF_TXD_2_17,
+ FF_TXD_2_16 => FF_TXD_2_16,
+ FF_TXD_2_15 => FF_TXD_2_15,
+ FF_TXD_2_14 => FF_TXD_2_14,
+ FF_TXD_2_13 => FF_TXD_2_13,
+ FF_TXD_2_12 => FF_TXD_2_12,
+ FF_TXD_2_11 => FF_TXD_2_11,
+ FF_TXD_2_10 => FF_TXD_2_10,
+ FF_TXD_2_9 => FF_TXD_2_9,
+ FF_TXD_2_8 => FF_TXD_2_8,
+ FF_TXD_2_7 => FF_TXD_2_7,
+ FF_TXD_2_6 => FF_TXD_2_6,
+ FF_TXD_2_5 => FF_TXD_2_5,
+ FF_TXD_2_4 => FF_TXD_2_4,
+ FF_TXD_2_3 => FF_TXD_2_3,
+ FF_TXD_2_2 => FF_TXD_2_2,
+ FF_TXD_2_1 => FF_TXD_2_1,
+ FF_TXD_2_0 => FF_TXD_2_0,
+ FB_RXD_2_23 => FB_RXD_2_23,
+ FB_RXD_2_22 => FB_RXD_2_22,
+ FB_RXD_2_21 => FB_RXD_2_21,
+ FB_RXD_2_20 => FB_RXD_2_20,
+ FB_RXD_2_19 => FB_RXD_2_19,
+ FB_RXD_2_18 => FB_RXD_2_18,
+ FB_RXD_2_17 => FB_RXD_2_17,
+ FB_RXD_2_16 => FB_RXD_2_16,
+ FB_RXD_2_15 => FB_RXD_2_15,
+ FB_RXD_2_14 => FB_RXD_2_14,
+ FB_RXD_2_13 => FB_RXD_2_13,
+ FB_RXD_2_12 => FB_RXD_2_12,
+ FB_RXD_2_11 => FB_RXD_2_11,
+ FB_RXD_2_10 => FB_RXD_2_10,
+ FB_RXD_2_9 => FB_RXD_2_9,
+ FB_RXD_2_8 => FB_RXD_2_8,
+ FB_RXD_2_7 => FB_RXD_2_7,
+ FB_RXD_2_6 => FB_RXD_2_6,
+ FB_RXD_2_5 => FB_RXD_2_5,
+ FB_RXD_2_4 => FB_RXD_2_4,
+ FB_RXD_2_3 => FB_RXD_2_3,
+ FB_RXD_2_2 => FB_RXD_2_2,
+ FB_RXD_2_1 => FB_RXD_2_1,
+ FB_RXD_2_0 => FB_RXD_2_0,
+ FF_TXD_3_23 => FF_TXD_3_23,
+ FF_TXD_3_22 => FF_TXD_3_22,
+ FF_TXD_3_21 => FF_TXD_3_21,
+ FF_TXD_3_20 => FF_TXD_3_20,
+ FF_TXD_3_19 => FF_TXD_3_19,
+ FF_TXD_3_18 => FF_TXD_3_18,
+ FF_TXD_3_17 => FF_TXD_3_17,
+ FF_TXD_3_16 => FF_TXD_3_16,
+ FF_TXD_3_15 => FF_TXD_3_15,
+ FF_TXD_3_14 => FF_TXD_3_14,
+ FF_TXD_3_13 => FF_TXD_3_13,
+ FF_TXD_3_12 => FF_TXD_3_12,
+ FF_TXD_3_11 => FF_TXD_3_11,
+ FF_TXD_3_10 => FF_TXD_3_10,
+ FF_TXD_3_9 => FF_TXD_3_9,
+ FF_TXD_3_8 => FF_TXD_3_8,
+ FF_TXD_3_7 => FF_TXD_3_7,
+ FF_TXD_3_6 => FF_TXD_3_6,
+ FF_TXD_3_5 => FF_TXD_3_5,
+ FF_TXD_3_4 => FF_TXD_3_4,
+ FF_TXD_3_3 => FF_TXD_3_3,
+ FF_TXD_3_2 => FF_TXD_3_2,
+ FF_TXD_3_1 => FF_TXD_3_1,
+ FF_TXD_3_0 => FF_TXD_3_0,
+ FB_RXD_3_23 => FB_RXD_3_23,
+ FB_RXD_3_22 => FB_RXD_3_22,
+ FB_RXD_3_21 => FB_RXD_3_21,
+ FB_RXD_3_20 => FB_RXD_3_20,
+ FB_RXD_3_19 => FB_RXD_3_19,
+ FB_RXD_3_18 => FB_RXD_3_18,
+ FB_RXD_3_17 => FB_RXD_3_17,
+ FB_RXD_3_16 => FB_RXD_3_16,
+ FB_RXD_3_15 => FB_RXD_3_15,
+ FB_RXD_3_14 => FB_RXD_3_14,
+ FB_RXD_3_13 => FB_RXD_3_13,
+ FB_RXD_3_12 => FB_RXD_3_12,
+ FB_RXD_3_11 => FB_RXD_3_11,
+ FB_RXD_3_10 => FB_RXD_3_10,
+ FB_RXD_3_9 => FB_RXD_3_9,
+ FB_RXD_3_8 => FB_RXD_3_8,
+ FB_RXD_3_7 => FB_RXD_3_7,
+ FB_RXD_3_6 => FB_RXD_3_6,
+ FB_RXD_3_5 => FB_RXD_3_5,
+ FB_RXD_3_4 => FB_RXD_3_4,
+ FB_RXD_3_3 => FB_RXD_3_3,
+ FB_RXD_3_2 => FB_RXD_3_2,
+ FB_RXD_3_1 => FB_RXD_3_1,
+ FB_RXD_3_0 => FB_RXD_3_0,
+ TCK_FMAC => TCK_FMAC,
+ COUT_21 => COUT_21,
+ COUT_20 => COUT_20,
+ COUT_19 => COUT_19,
+ COUT_18 => COUT_18,
+ COUT_17 => COUT_17,
+ COUT_16 => COUT_16,
+ COUT_15 => COUT_15,
+ COUT_14 => COUT_14,
+ COUT_13 => COUT_13,
+ COUT_12 => COUT_12,
+ COUT_11 => COUT_11,
+ COUT_10 => COUT_10,
+ COUT_9 => COUT_9,
+ COUT_8 => COUT_8,
+ COUT_7 => COUT_7,
+ COUT_6 => COUT_6,
+ COUT_5 => COUT_5,
+ COUT_4 => COUT_4,
+ COUT_3 => COUT_3,
+ COUT_2 => COUT_2,
+ COUT_1 => COUT_1,
+ COUT_0 => COUT_0,
+ CIN_12 => CIN_12,
+ CIN_11 => CIN_11,
+ CIN_10 => CIN_10,
+ CIN_9 => CIN_9,
+ CIN_8 => CIN_8,
+ CIN_7 => CIN_7,
+ CIN_6 => CIN_6,
+ CIN_5 => CIN_5,
+ CIN_4 => CIN_4,
+ CIN_3 => CIN_3,
+ CIN_2 => CIN_2,
+ CIN_1 => CIN_1,
+ CIN_0 => CIN_0,
+ TESTCLK_MACO => TESTCLK_MACO
+);
+
+end PCSA_arch;
+
+--synopsys translate_on
+
+--synopsys translate_off
+library SC;
+use SC.components.all;
+--synopsys translate_on
+
+library IEEE, STD;
+use IEEE.std_logic_1164.all;
+use STD.TEXTIO.all;
+
+
+entity serdes_fpga_ref_clk is
+ GENERIC (USER_CONFIG_FILE : String := "serdes_fpga_ref_clk.txt");
+ port (
+-- serdes clk pins --
+ rxrefclk, refclk : in std_logic;
+ rxa_pclk, rxb_pclk : out std_logic;
+ hdinp_0, hdinn_0 : in std_logic;
+ hdoutp_0, hdoutn_0 : out std_logic;
+ tclk_0, rclk_0 : in std_logic;
+ tx_rst_0, rx_rst_0 : in std_logic;
+ ref_0_sclk, rx_0_sclk : out std_logic;
+ txd_0 : in std_logic_vector (15 downto 0);
+ tx_k_0, tx_force_disp_0, tx_disp_sel_0 : in std_logic_vector (1 downto 0);
+ rxd_0 : out std_logic_vector (15 downto 0);
+ rx_k_0, rx_disp_err_detect_0, rx_cv_detect_0 : out std_logic_vector (1 downto 0);
+ tx_crc_init_0 : in std_logic_vector (1 downto 0);
+ rx_crc_eop_0 : out std_logic_vector (1 downto 0);
+ word_align_en_0, mca_align_en_0, felb_0 : in std_logic;
+ lsm_en_0 : in std_logic;
+ lsm_status_0 : out std_logic;
+
+ hdinp_1, hdinn_1 : in std_logic;
+ hdoutp_1, hdoutn_1 : out std_logic;
+ tclk_1, rclk_1 : in std_logic;
+ tx_rst_1, rx_rst_1 : in std_logic;
+ ref_1_sclk, rx_1_sclk : out std_logic;
+ txd_1 : in std_logic_vector (15 downto 0);
+ tx_k_1, tx_force_disp_1, tx_disp_sel_1 : in std_logic_vector (1 downto 0);
+ rxd_1 : out std_logic_vector (15 downto 0);
+ rx_k_1, rx_disp_err_detect_1, rx_cv_detect_1 : out std_logic_vector (1 downto 0);
+ tx_crc_init_1 : in std_logic_vector (1 downto 0);
+ rx_crc_eop_1 : out std_logic_vector (1 downto 0);
+ word_align_en_1, mca_align_en_1, felb_1 : in std_logic;
+ lsm_en_1 : in std_logic;
+ lsm_status_1 : out std_logic;
+
+ hdinp_2, hdinn_2 : in std_logic;
+ hdoutp_2, hdoutn_2 : out std_logic;
+ tclk_2, rclk_2 : in std_logic;
+ tx_rst_2, rx_rst_2 : in std_logic;
+ ref_2_sclk, rx_2_sclk : out std_logic;
+ txd_2 : in std_logic_vector (15 downto 0);
+ tx_k_2, tx_force_disp_2, tx_disp_sel_2 : in std_logic_vector (1 downto 0);
+ rxd_2 : out std_logic_vector (15 downto 0);
+ rx_k_2, rx_disp_err_detect_2, rx_cv_detect_2 : out std_logic_vector (1 downto 0);
+ tx_crc_init_2 : in std_logic_vector (1 downto 0);
+ rx_crc_eop_2 : out std_logic_vector (1 downto 0);
+ word_align_en_2, mca_align_en_2, felb_2 : in std_logic;
+ lsm_en_2 : in std_logic;
+ lsm_status_2 : out std_logic;
+
+ hdinp_3, hdinn_3 : in std_logic;
+ hdoutp_3, hdoutn_3 : out std_logic;
+ tclk_3, rclk_3 : in std_logic;
+ tx_rst_3, rx_rst_3 : in std_logic;
+ ref_3_sclk, rx_3_sclk : out std_logic;
+ txd_3 : in std_logic_vector (15 downto 0);
+ tx_k_3, tx_force_disp_3, tx_disp_sel_3 : in std_logic_vector (1 downto 0);
+ rxd_3 : out std_logic_vector (15 downto 0);
+ rx_k_3, rx_disp_err_detect_3, rx_cv_detect_3 : out std_logic_vector (1 downto 0);
+ tx_crc_init_3 : in std_logic_vector (1 downto 0);
+ rx_crc_eop_3 : out std_logic_vector (1 downto 0);
+ word_align_en_3, mca_align_en_3, felb_3 : in std_logic;
+ lsm_en_3 : in std_logic;
+ lsm_status_3 : out std_logic;
+ mca_resync_01 : in std_logic;
+ mca_aligned_01, mca_inskew_01, mca_outskew_01 : out std_logic;
+ mca_resync_23 : in std_logic;
+ mca_aligned_23, mca_inskew_23, mca_outskew_23 : out std_logic;
+ quad_rst, serdes_rst : in std_logic;
+ ref_pclk : out std_logic);
+
+end serdes_fpga_ref_clk;
+
+architecture serdes_fpga_ref_clk_arch of serdes_fpga_ref_clk is
+
+component VLO
+port (
+ Z : out std_logic);
+end component;
+
+component VHI
+port (
+ Z : out std_logic);
+end component;
+
+component PCSA
+--synopsys translate_off
+GENERIC(
+ CONFIG_FILE : String
+ );
+--synopsys translate_on
+port (
+ HDINP0 : in std_logic;
+ HDINN0 : in std_logic;
+ HDINP1 : in std_logic;
+ HDINN1 : in std_logic;
+ HDINP2 : in std_logic;
+ HDINN2 : in std_logic;
+ HDINP3 : in std_logic;
+ HDINN3 : in std_logic;
+ HDOUTP0 : out std_logic;
+ HDOUTN0 : out std_logic;
+ HDOUTP1 : out std_logic;
+ HDOUTN1 : out std_logic;
+ HDOUTP2 : out std_logic;
+ HDOUTN2 : out std_logic;
+ HDOUTP3 : out std_logic;
+ HDOUTN3 : out std_logic;
+ REFCLKP : in std_logic;
+ REFCLKN : in std_logic;
+ RXREFCLKP : in std_logic;
+ RXREFCLKN : in std_logic;
+ FFC_QUAD_RST : in std_logic;
+ FFC_MACRO_RST : in std_logic;
+
+ FFC_LANE_TX_RST0 : in std_logic;
+ FFC_LANE_TX_RST1 : in std_logic;
+ FFC_LANE_TX_RST2 : in std_logic;
+ FFC_LANE_TX_RST3 : in std_logic;
+
+ FFC_LANE_RX_RST0 : in std_logic;
+ FFC_LANE_RX_RST1 : in std_logic;
+ FFC_LANE_RX_RST2 : in std_logic;
+ FFC_LANE_RX_RST3 : in std_logic;
+
+ FFC_PCIE_EI_EN_0 : in std_logic;
+ FFC_PCIE_EI_EN_1 : in std_logic;
+ FFC_PCIE_EI_EN_2 : in std_logic;
+ FFC_PCIE_EI_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;
+
+ 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;
+
+ FFC_PCIE_TX_0 : in std_logic;
+ FFC_PCIE_TX_1 : in std_logic;
+ FFC_PCIE_TX_2 : in std_logic;
+ FFC_PCIE_TX_3 : in std_logic;
+
+ FFC_PCIE_RX_0 : in std_logic;
+ FFC_PCIE_RX_1 : in std_logic;
+ FFC_PCIE_RX_2 : in std_logic;
+ FFC_PCIE_RX_3 : in std_logic;
+
+ FFC_SD_0 : in std_logic;
+ FFC_SD_1 : in std_logic;
+ FFC_SD_2 : in std_logic;
+ FFC_SD_3 : in std_logic;
+
+ FFC_EN_CGA_0 : in std_logic;
+ FFC_EN_CGA_1 : in std_logic;
+ FFC_EN_CGA_2 : in std_logic;
+ FFC_EN_CGA_3 : in std_logic;
+
+ FFC_ALIGN_EN_0 : in std_logic;
+ FFC_ALIGN_EN_1 : in std_logic;
+ FFC_ALIGN_EN_2 : in std_logic;
+ FFC_ALIGN_EN_3 : in std_logic;
+
+ FFC_AB_RESET : in std_logic;
+ FFC_CD_RESET : in std_logic;
+
+ FFS_LS_STATUS_0 : out std_logic;
+ FFS_LS_STATUS_1 : out std_logic;
+ FFS_LS_STATUS_2 : out std_logic;
+ FFS_LS_STATUS_3 : out std_logic;
+
+ FFS_AB_STATUS : out std_logic;
+ FFS_CD_STATUS : out std_logic;
+
+ FFS_AB_ALIGNED : out std_logic;
+ FFS_CD_ALIGNED : out std_logic;
+
+ FFS_AB_FAILED : out std_logic;
+ FFS_CD_FAILED : out std_logic;
+
+ FFS_RLOS_LO0 : out std_logic;
+ FFS_RLOS_LO1 : out std_logic;
+ FFS_RLOS_LO2 : out std_logic;
+ FFS_RLOS_LO3 : out std_logic;
+
+ FFC_FB_LB_0 : in std_logic;
+ FFC_FB_LB_1 : in std_logic;
+ FFC_FB_LB_2 : in std_logic;
+ FFC_FB_LB_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;
+
+ FFS_CC_ORUN_0 : out std_logic;
+ FFS_CC_ORUN_1 : out std_logic;
+ FFS_CC_ORUN_2 : out std_logic;
+ FFS_CC_ORUN_3 : out std_logic;
+
+ FFS_CC_URUN_0 : out std_logic;
+ FFS_CC_URUN_1 : out std_logic;
+ FFS_CC_URUN_2 : out std_logic;
+ FFS_CC_URUN_3 : out std_logic;
+
+ FFC_CK_CORE_TX : in std_logic;
+ FFC_CK_CORE_RX : in std_logic;
+ RDATAO_7 : out std_logic;
+ RDATAO_6 : out std_logic;
+ RDATAO_5 : out std_logic;
+ RDATAO_4 : out std_logic;
+ RDATAO_3 : out std_logic;
+ RDATAO_2 : out std_logic;
+ RDATAO_1 : out std_logic;
+ RDATAO_0 : out std_logic;
+ INTO : out std_logic;
+
+ ADDRI_7 : in std_logic;
+ ADDRI_6 : in std_logic;
+ ADDRI_5 : in std_logic;
+ ADDRI_4 : in std_logic;
+ ADDRI_3 : in std_logic;
+ ADDRI_2 : in std_logic;
+ ADDRI_1 : in std_logic;
+ ADDRI_0 : in std_logic;
+ WDATAI_7 : in std_logic;
+ WDATAI_6 : in std_logic;
+ WDATAI_5 : in std_logic;
+ WDATAI_4 : in std_logic;
+ WDATAI_3 : in std_logic;
+ WDATAI_2 : in std_logic;
+ WDATAI_1 : in std_logic;
+ WDATAI_0 : in std_logic;
+ RDI : in std_logic;
+ WSTBI : in std_logic;
+
+ CS_CHIF_0 : in std_logic;
+ CS_CHIF_1 : in std_logic;
+ CS_CHIF_2 : in std_logic;
+ CS_CHIF_3 : in std_logic;
+ CS_QIF : in std_logic;
+
+ QUAD_ID_1 : in std_logic;
+ QUAD_ID_0 : in std_logic;
+
+ FF_SYSCLK_P1 : out std_logic;
+
+ FF_SYSCLK0 : out std_logic;
+ FF_SYSCLK1 : out std_logic;
+ FF_SYSCLK2 : out std_logic;
+ FF_SYSCLK3 : out std_logic;
+
+ FF_RXCLK_P1 : out std_logic;
+ FF_RXCLK_P2 : out std_logic;
+
+ FF_RXCLK0 : out std_logic;
+ FF_RXCLK1 : out std_logic;
+ FF_RXCLK2 : out std_logic;
+ FF_RXCLK3 : out std_logic;
+
+ QUAD_CLK : out std_logic;
+
+ GRP_CLK_P1_3 : in std_logic;
+ GRP_CLK_P1_2 : in std_logic;
+ GRP_CLK_P1_1 : in std_logic;
+ GRP_CLK_P1_0 : in std_logic;
+
+ GRP_CLK_P2_3 : in std_logic;
+ GRP_CLK_P2_2 : in std_logic;
+ GRP_CLK_P2_1 : in std_logic;
+ GRP_CLK_P2_0 : in std_logic;
+
+ GRP_START_3 : in std_logic;
+ GRP_START_2 : in std_logic;
+ GRP_START_1 : in std_logic;
+ GRP_START_0 : in std_logic;
+
+ GRP_DONE_3 : in std_logic;
+ GRP_DONE_2 : in std_logic;
+ GRP_DONE_1 : in std_logic;
+ GRP_DONE_0 : in std_logic;
+
+ GRP_DESKEW_ERROR_3 : in std_logic;
+ GRP_DESKEW_ERROR_2 : in std_logic;
+ GRP_DESKEW_ERROR_1 : in std_logic;
+ GRP_DESKEW_ERROR_0 : in std_logic;
+
+ IQA_START_LS : out std_logic;
+ IQA_DONE_LS : out std_logic;
+ IQA_AND_FP1_LS : out std_logic;
+ IQA_AND_FP0_LS : out std_logic;
+ IQA_OR_FP1_LS : out std_logic;
+ IQA_OR_FP0_LS : out std_logic;
+ IQA_RST_N : out std_logic;
+
+ FF_TCLK0 : in std_logic;
+ FF_TCLK1 : in std_logic;
+ FF_TCLK2 : in std_logic;
+ FF_TCLK3 : in std_logic;
+
+ FF_RCLK0 : in std_logic;
+ FF_RCLK1 : in std_logic;
+ FF_RCLK2 : in std_logic;
+ FF_RCLK3 : in std_logic;
+ TCK_FMACP : in std_logic;
+
+ FF_TXD_0_23 : in std_logic;
+ FF_TXD_0_22 : in std_logic;
+ FF_TXD_0_21 : in std_logic;
+ FF_TXD_0_20 : in std_logic;
+ FF_TXD_0_19 : in std_logic;
+ FF_TXD_0_18 : in std_logic;
+ FF_TXD_0_17 : in std_logic;
+ FF_TXD_0_16 : in std_logic;
+ FF_TXD_0_15 : in std_logic;
+ FF_TXD_0_14 : in std_logic;
+ FF_TXD_0_13 : in std_logic;
+ FF_TXD_0_12 : in std_logic;
+ FF_TXD_0_11 : in std_logic;
+ FF_TXD_0_10 : in std_logic;
+ FF_TXD_0_9 : in std_logic;
+ FF_TXD_0_8 : in std_logic;
+ FF_TXD_0_7 : in std_logic;
+ FF_TXD_0_6 : in std_logic;
+ FF_TXD_0_5 : in std_logic;
+ FF_TXD_0_4 : in std_logic;
+ FF_TXD_0_3 : in std_logic;
+ FF_TXD_0_2 : in std_logic;
+ FF_TXD_0_1 : in std_logic;
+ FF_TXD_0_0 : in std_logic;
+ FB_RXD_0_23 : out std_logic;
+ FB_RXD_0_22 : out std_logic;
+ FB_RXD_0_21 : out std_logic;
+ FB_RXD_0_20 : out std_logic;
+ FB_RXD_0_19 : out std_logic;
+ FB_RXD_0_18 : out std_logic;
+ FB_RXD_0_17 : out std_logic;
+ FB_RXD_0_16 : out std_logic;
+ FB_RXD_0_15 : out std_logic;
+ FB_RXD_0_14 : out std_logic;
+ FB_RXD_0_13 : out std_logic;
+ FB_RXD_0_12 : out std_logic;
+ FB_RXD_0_11 : out std_logic;
+ FB_RXD_0_10 : out std_logic;
+ FB_RXD_0_9 : out std_logic;
+ FB_RXD_0_8 : out std_logic;
+ FB_RXD_0_7 : out std_logic;
+ FB_RXD_0_6 : out std_logic;
+ FB_RXD_0_5 : out std_logic;
+ FB_RXD_0_4 : out std_logic;
+ FB_RXD_0_3 : out std_logic;
+ FB_RXD_0_2 : out std_logic;
+ FB_RXD_0_1 : out std_logic;
+ FB_RXD_0_0 : out std_logic;
+ FF_TXD_1_23 : in std_logic;
+ FF_TXD_1_22 : in std_logic;
+ FF_TXD_1_21 : in std_logic;
+ FF_TXD_1_20 : in std_logic;
+ FF_TXD_1_19 : in std_logic;
+ FF_TXD_1_18 : in std_logic;
+ FF_TXD_1_17 : in std_logic;
+ FF_TXD_1_16 : in std_logic;
+ FF_TXD_1_15 : in std_logic;
+ FF_TXD_1_14 : in std_logic;
+ FF_TXD_1_13 : in std_logic;
+ FF_TXD_1_12 : in std_logic;
+ FF_TXD_1_11 : in std_logic;
+ FF_TXD_1_10 : in std_logic;
+ FF_TXD_1_9 : in std_logic;
+ FF_TXD_1_8 : in std_logic;
+ FF_TXD_1_7 : in std_logic;
+ FF_TXD_1_6 : in std_logic;
+ FF_TXD_1_5 : in std_logic;
+ FF_TXD_1_4 : in std_logic;
+ FF_TXD_1_3 : in std_logic;
+ FF_TXD_1_2 : in std_logic;
+ FF_TXD_1_1 : in std_logic;
+ FF_TXD_1_0 : in std_logic;
+ FB_RXD_1_23 : out std_logic;
+ FB_RXD_1_22 : out std_logic;
+ FB_RXD_1_21 : out std_logic;
+ FB_RXD_1_20 : out std_logic;
+ FB_RXD_1_19 : out std_logic;
+ FB_RXD_1_18 : out std_logic;
+ FB_RXD_1_17 : out std_logic;
+ FB_RXD_1_16 : out std_logic;
+ FB_RXD_1_15 : out std_logic;
+ FB_RXD_1_14 : out std_logic;
+ FB_RXD_1_13 : out std_logic;
+ FB_RXD_1_12 : out std_logic;
+ FB_RXD_1_11 : out std_logic;
+ FB_RXD_1_10 : out std_logic;
+ FB_RXD_1_9 : out std_logic;
+ FB_RXD_1_8 : out std_logic;
+ FB_RXD_1_7 : out std_logic;
+ FB_RXD_1_6 : out std_logic;
+ FB_RXD_1_5 : out std_logic;
+ FB_RXD_1_4 : out std_logic;
+ FB_RXD_1_3 : out std_logic;
+ FB_RXD_1_2 : out std_logic;
+ FB_RXD_1_1 : out std_logic;
+ FB_RXD_1_0 : out std_logic;
+ FF_TXD_2_23 : in std_logic;
+ FF_TXD_2_22 : in std_logic;
+ FF_TXD_2_21 : in std_logic;
+ FF_TXD_2_20 : in std_logic;
+ FF_TXD_2_19 : in std_logic;
+ FF_TXD_2_18 : in std_logic;
+ FF_TXD_2_17 : in std_logic;
+ FF_TXD_2_16 : in std_logic;
+ FF_TXD_2_15 : in std_logic;
+ FF_TXD_2_14 : in std_logic;
+ FF_TXD_2_13 : in std_logic;
+ FF_TXD_2_12 : in std_logic;
+ FF_TXD_2_11 : in std_logic;
+ FF_TXD_2_10 : in std_logic;
+ FF_TXD_2_9 : in std_logic;
+ FF_TXD_2_8 : in std_logic;
+ FF_TXD_2_7 : in std_logic;
+ FF_TXD_2_6 : in std_logic;
+ FF_TXD_2_5 : in std_logic;
+ FF_TXD_2_4 : in std_logic;
+ FF_TXD_2_3 : in std_logic;
+ FF_TXD_2_2 : in std_logic;
+ FF_TXD_2_1 : in std_logic;
+ FF_TXD_2_0 : in std_logic;
+ FB_RXD_2_23 : out std_logic;
+ FB_RXD_2_22 : out std_logic;
+ FB_RXD_2_21 : out std_logic;
+ FB_RXD_2_20 : out std_logic;
+ FB_RXD_2_19 : out std_logic;
+ FB_RXD_2_18 : out std_logic;
+ FB_RXD_2_17 : out std_logic;
+ FB_RXD_2_16 : out std_logic;
+ FB_RXD_2_15 : out std_logic;
+ FB_RXD_2_14 : out std_logic;
+ FB_RXD_2_13 : out std_logic;
+ FB_RXD_2_12 : out std_logic;
+ FB_RXD_2_11 : out std_logic;
+ FB_RXD_2_10 : out std_logic;
+ FB_RXD_2_9 : out std_logic;
+ FB_RXD_2_8 : out std_logic;
+ FB_RXD_2_7 : out std_logic;
+ FB_RXD_2_6 : out std_logic;
+ FB_RXD_2_5 : out std_logic;
+ FB_RXD_2_4 : out std_logic;
+ FB_RXD_2_3 : out std_logic;
+ FB_RXD_2_2 : out std_logic;
+ FB_RXD_2_1 : out std_logic;
+ FB_RXD_2_0 : out std_logic;
+ FF_TXD_3_23 : in std_logic;
+ FF_TXD_3_22 : in std_logic;
+ FF_TXD_3_21 : in std_logic;
+ FF_TXD_3_20 : in std_logic;
+ FF_TXD_3_19 : in std_logic;
+ FF_TXD_3_18 : in std_logic;
+ FF_TXD_3_17 : in std_logic;
+ FF_TXD_3_16 : in std_logic;
+ FF_TXD_3_15 : in std_logic;
+ FF_TXD_3_14 : in std_logic;
+ FF_TXD_3_13 : in std_logic;
+ FF_TXD_3_12 : in std_logic;
+ FF_TXD_3_11 : in std_logic;
+ FF_TXD_3_10 : in std_logic;
+ FF_TXD_3_9 : in std_logic;
+ FF_TXD_3_8 : in std_logic;
+ FF_TXD_3_7 : in std_logic;
+ FF_TXD_3_6 : in std_logic;
+ FF_TXD_3_5 : in std_logic;
+ FF_TXD_3_4 : in std_logic;
+ FF_TXD_3_3 : in std_logic;
+ FF_TXD_3_2 : in std_logic;
+ FF_TXD_3_1 : in std_logic;
+ FF_TXD_3_0 : in std_logic;
+ FB_RXD_3_23 : out std_logic;
+ FB_RXD_3_22 : out std_logic;
+ FB_RXD_3_21 : out std_logic;
+ FB_RXD_3_20 : out std_logic;
+ FB_RXD_3_19 : out std_logic;
+ FB_RXD_3_18 : out std_logic;
+ FB_RXD_3_17 : out std_logic;
+ FB_RXD_3_16 : out std_logic;
+ FB_RXD_3_15 : out std_logic;
+ FB_RXD_3_14 : out std_logic;
+ FB_RXD_3_13 : out std_logic;
+ FB_RXD_3_12 : out std_logic;
+ FB_RXD_3_11 : out std_logic;
+ FB_RXD_3_10 : out std_logic;
+ FB_RXD_3_9 : out std_logic;
+ FB_RXD_3_8 : out std_logic;
+ FB_RXD_3_7 : out std_logic;
+ FB_RXD_3_6 : out std_logic;
+ FB_RXD_3_5 : out std_logic;
+ FB_RXD_3_4 : out std_logic;
+ FB_RXD_3_3 : out std_logic;
+ FB_RXD_3_2 : out std_logic;
+ FB_RXD_3_1 : out std_logic;
+ FB_RXD_3_0 : out std_logic;
+ TCK_FMAC : out std_logic;
+ BS4PAD_0 : out std_logic;
+ BS4PAD_1 : out std_logic;
+ BS4PAD_2 : out std_logic;
+ BS4PAD_3 : out std_logic;
+ COUT_21 : out std_logic;
+ COUT_20 : out std_logic;
+ COUT_19 : out std_logic;
+ COUT_18 : out std_logic;
+ COUT_17 : out std_logic;
+ COUT_16 : out std_logic;
+ COUT_15 : out std_logic;
+ COUT_14 : out std_logic;
+ COUT_13 : out std_logic;
+ COUT_12 : out std_logic;
+ COUT_11 : out std_logic;
+ COUT_10 : out std_logic;
+ COUT_9 : out std_logic;
+ COUT_8 : out std_logic;
+ COUT_7 : out std_logic;
+ COUT_6 : out std_logic;
+ COUT_5 : out std_logic;
+ COUT_4 : out std_logic;
+ COUT_3 : out std_logic;
+ COUT_2 : out std_logic;
+ COUT_1 : out std_logic;
+ COUT_0 : out std_logic;
+ CIN_12 : in std_logic;
+ CIN_11 : in std_logic;
+ CIN_10 : in std_logic;
+ CIN_9 : in std_logic;
+ CIN_8 : in std_logic;
+ CIN_7 : in std_logic;
+ CIN_6 : in std_logic;
+ CIN_5 : in std_logic;
+ CIN_4 : in std_logic;
+ CIN_3 : in std_logic;
+ CIN_2 : in std_logic;
+ CIN_1 : in std_logic;
+ CIN_0 : in std_logic;
+ TESTCLK_MACO : in std_logic
+);
+end component;
+ attribute IS_ASB: string;
+ attribute IS_ASB of PCSA_INST : label is "or5s00/data/or5s00.acd";
+ attribute CONFIG_FILE: string;
+ attribute CONFIG_FILE of PCSA_INST : label is USER_CONFIG_FILE;
+ attribute CH0_RX_MAXRATE: string;
+ attribute CH0_RX_MAXRATE of PCSA_INST : label is "RXF3";
+ attribute CH1_RX_MAXRATE: string;
+ attribute CH1_RX_MAXRATE of PCSA_INST : label is "RXF3";
+ attribute CH2_RX_MAXRATE: string;
+ attribute CH2_RX_MAXRATE of PCSA_INST : label is "RXF3";
+ attribute CH3_RX_MAXRATE: string;
+ attribute CH3_RX_MAXRATE of PCSA_INST : label is "RXF3";
+ attribute CH0_TX_MAXRATE: string;
+ attribute CH0_TX_MAXRATE of PCSA_INST : label is "TXF2";
+ attribute CH1_TX_MAXRATE: string;
+ attribute CH1_TX_MAXRATE of PCSA_INST : label is "TXF2";
+ attribute CH2_TX_MAXRATE: string;
+ attribute CH2_TX_MAXRATE of PCSA_INST : label is "TXF2";
+ attribute CH3_TX_MAXRATE: string;
+ attribute CH3_TX_MAXRATE of PCSA_INST : label is "TXF2";
+ attribute AMP_BOOST: string;
+ attribute AMP_BOOST of PCSA_INST : label is "DISABLED";
+ attribute black_box_pad_pin: string;
+ attribute black_box_pad_pin of PCSA : component is "HDINP0, HDINN0, HDINP1, HDINN1, HDINP2, HDINN2, HDINP3, HDINN3, HDOUTP0, HDOUTN0, HDOUTP1, HDOUTN1, HDOUTP2, HDOUTN2, HDOUTP3, HDOUTN3, REFCLKP, REFCLKN, RXREFCLKP, RXREFCLKN";
+
+signal fpsc_vlo : std_logic := '0';
+
+begin
+
+vlo_inst : VLO port map(Z => fpsc_vlo);
+
+-- pcs_quad instance
+PCSA_INST : PCSA
+--synopsys translate_off
+ generic map (CONFIG_FILE => USER_CONFIG_FILE)
+--synopsys translate_on
+port map (
+ REFCLKP => fpsc_vlo,
+ REFCLKN => fpsc_vlo,
+ RXREFCLKP => fpsc_vlo,
+ RXREFCLKN => fpsc_vlo,
+ FFC_CK_CORE_RX => rxrefclk,
+ FFC_CK_CORE_TX => refclk,
+ CS_CHIF_0 => fpsc_vlo,
+ CS_CHIF_1 => fpsc_vlo,
+ CS_CHIF_2 => fpsc_vlo,
+ CS_CHIF_3 => fpsc_vlo,
+ CS_QIF => fpsc_vlo,
+ QUAD_ID_0 => fpsc_vlo,
+ QUAD_ID_1 => fpsc_vlo,
+ ADDRI_0 => fpsc_vlo,
+ ADDRI_1 => fpsc_vlo,
+ ADDRI_2 => fpsc_vlo,
+ ADDRI_3 => fpsc_vlo,
+ ADDRI_4 => fpsc_vlo,
+ ADDRI_5 => fpsc_vlo,
+ ADDRI_6 => fpsc_vlo,
+ ADDRI_7 => fpsc_vlo,
+ WDATAI_0 => fpsc_vlo,
+ WDATAI_1 => fpsc_vlo,
+ WDATAI_2 => fpsc_vlo,
+ WDATAI_3 => fpsc_vlo,
+ WDATAI_4 => fpsc_vlo,
+ WDATAI_5 => fpsc_vlo,
+ WDATAI_6 => fpsc_vlo,
+ WDATAI_7 => fpsc_vlo,
+ RDI => fpsc_vlo,
+ WSTBI => fpsc_vlo,
+ GRP_CLK_P1_0 => fpsc_vlo,
+ GRP_CLK_P1_1 => fpsc_vlo,
+ GRP_CLK_P1_2 => fpsc_vlo,
+ GRP_CLK_P1_3 => fpsc_vlo,
+ GRP_CLK_P2_0 => fpsc_vlo,
+ GRP_CLK_P2_1 => fpsc_vlo,
+ GRP_CLK_P2_2 => fpsc_vlo,
+ GRP_CLK_P2_3 => fpsc_vlo,
+ GRP_START_0 => fpsc_vlo,
+ GRP_START_1 => fpsc_vlo,
+ GRP_START_2 => fpsc_vlo,
+ GRP_START_3 => fpsc_vlo,
+ GRP_DONE_0 => fpsc_vlo,
+ GRP_DONE_1 => fpsc_vlo,
+ GRP_DONE_2 => fpsc_vlo,
+ GRP_DONE_3 => fpsc_vlo,
+ GRP_DESKEW_ERROR_0 => fpsc_vlo,
+ GRP_DESKEW_ERROR_1 => fpsc_vlo,
+ GRP_DESKEW_ERROR_2 => fpsc_vlo,
+ GRP_DESKEW_ERROR_3 => fpsc_vlo,
+-- to sysbusa
+ RDATAO_0 => open,
+ RDATAO_1 => open,
+ RDATAO_2 => open,
+ RDATAO_3 => open,
+ RDATAO_4 => open,
+ RDATAO_5 => open,
+ RDATAO_6 => open,
+ RDATAO_7 => open,
+ INTO => open,
+ QUAD_CLK => open,
+ IQA_START_LS => open,
+ IQA_DONE_LS => open,
+ IQA_AND_FP1_LS => open,
+ IQA_AND_FP0_LS => open,
+ IQA_OR_FP1_LS => open,
+ IQA_OR_FP0_LS => open,
+ IQA_RST_N => open,
+
+ FF_TXD_0_19 => txd_0(15),
+ FF_TXD_0_18 => txd_0(14),
+ FF_TXD_0_17 => txd_0(13),
+ FF_TXD_0_16 => txd_0(12),
+ FF_TXD_0_15 => txd_0(11),
+ FF_TXD_0_14 => txd_0(10),
+ FF_TXD_0_13 => txd_0(9),
+ FF_TXD_0_12 => txd_0(8),
+ FF_TXD_0_7 => txd_0(7),
+ FF_TXD_0_6 => txd_0(6),
+ FF_TXD_0_5 => txd_0(5),
+ FF_TXD_0_4 => txd_0(4),
+ FF_TXD_0_3 => txd_0(3),
+ FF_TXD_0_2 => txd_0(2),
+ FF_TXD_0_1 => txd_0(1),
+ FF_TXD_0_0 => txd_0(0),
+ FB_RXD_0_19 => rxd_0(15),
+ FB_RXD_0_18 => rxd_0(14),
+ FB_RXD_0_17 => rxd_0(13),
+ FB_RXD_0_16 => rxd_0(12),
+ FB_RXD_0_15 => rxd_0(11),
+ FB_RXD_0_14 => rxd_0(10),
+ FB_RXD_0_13 => rxd_0(9),
+ FB_RXD_0_12 => rxd_0(8),
+ FB_RXD_0_7 => rxd_0(7),
+ FB_RXD_0_6 => rxd_0(6),
+ FB_RXD_0_5 => rxd_0(5),
+ FB_RXD_0_4 => rxd_0(4),
+ FB_RXD_0_3 => rxd_0(3),
+ FB_RXD_0_2 => rxd_0(2),
+ FB_RXD_0_1 => rxd_0(1),
+ FB_RXD_0_0 => rxd_0(0),
+
+ FF_TXD_0_20 => tx_k_0(1),
+ FF_TXD_0_8 => tx_k_0(0),
+ FB_RXD_0_20 => rx_k_0(1),
+ FB_RXD_0_8 => rx_k_0(0),
+
+ FF_TXD_0_21 => tx_force_disp_0(1),
+ FF_TXD_0_9 => tx_force_disp_0(0),
+
+ FF_TXD_0_22 => tx_disp_sel_0(1),
+ FF_TXD_0_10 => tx_disp_sel_0(0),
+
+ FF_TXD_0_23 => tx_crc_init_0(1),
+ FF_TXD_0_11 => tx_crc_init_0(0),
+
+ FB_RXD_0_21 => rx_disp_err_detect_0(1),
+ FB_RXD_0_9 => rx_disp_err_detect_0(0),
+
+ FB_RXD_0_22 => rx_cv_detect_0(1),
+ FB_RXD_0_10 => rx_cv_detect_0(0),
+
+ FB_RXD_0_23 => rx_crc_eop_0(1),
+ FB_RXD_0_11 => rx_crc_eop_0(0),
+
+ FF_TXD_1_19 => txd_1(15),
+ FF_TXD_1_18 => txd_1(14),
+ FF_TXD_1_17 => txd_1(13),
+ FF_TXD_1_16 => txd_1(12),
+ FF_TXD_1_15 => txd_1(11),
+ FF_TXD_1_14 => txd_1(10),
+ FF_TXD_1_13 => txd_1(9),
+ FF_TXD_1_12 => txd_1(8),
+ FF_TXD_1_7 => txd_1(7),
+ FF_TXD_1_6 => txd_1(6),
+ FF_TXD_1_5 => txd_1(5),
+ FF_TXD_1_4 => txd_1(4),
+ FF_TXD_1_3 => txd_1(3),
+ FF_TXD_1_2 => txd_1(2),
+ FF_TXD_1_1 => txd_1(1),
+ FF_TXD_1_0 => txd_1(0),
+ FB_RXD_1_19 => rxd_1(15),
+ FB_RXD_1_18 => rxd_1(14),
+ FB_RXD_1_17 => rxd_1(13),
+ FB_RXD_1_16 => rxd_1(12),
+ FB_RXD_1_15 => rxd_1(11),
+ FB_RXD_1_14 => rxd_1(10),
+ FB_RXD_1_13 => rxd_1(9),
+ FB_RXD_1_12 => rxd_1(8),
+ FB_RXD_1_7 => rxd_1(7),
+ FB_RXD_1_6 => rxd_1(6),
+ FB_RXD_1_5 => rxd_1(5),
+ FB_RXD_1_4 => rxd_1(4),
+ FB_RXD_1_3 => rxd_1(3),
+ FB_RXD_1_2 => rxd_1(2),
+ FB_RXD_1_1 => rxd_1(1),
+ FB_RXD_1_0 => rxd_1(0),
+
+ FF_TXD_1_20 => tx_k_1(1),
+ FF_TXD_1_8 => tx_k_1(0),
+ FB_RXD_1_20 => rx_k_1(1),
+ FB_RXD_1_8 => rx_k_1(0),
+
+ FF_TXD_1_21 => tx_force_disp_1(1),
+ FF_TXD_1_9 => tx_force_disp_1(0),
+
+ FF_TXD_1_22 => tx_disp_sel_1(1),
+ FF_TXD_1_10 => tx_disp_sel_1(0),
+ FF_TXD_1_23 => tx_crc_init_1(1),
+ FF_TXD_1_11 => tx_crc_init_1(0),
+
+ FB_RXD_1_21 => rx_disp_err_detect_1(1),
+ FB_RXD_1_9 => rx_disp_err_detect_1(0),
+
+ FB_RXD_1_22 => rx_cv_detect_1(1),
+ FB_RXD_1_10 => rx_cv_detect_1(0),
+
+ FB_RXD_1_23 => rx_crc_eop_1(1),
+ FB_RXD_1_11 => rx_crc_eop_1(0),
+
+ FF_TXD_2_19 => txd_2(15),
+ FF_TXD_2_18 => txd_2(14),
+ FF_TXD_2_17 => txd_2(13),
+ FF_TXD_2_16 => txd_2(12),
+ FF_TXD_2_15 => txd_2(11),
+ FF_TXD_2_14 => txd_2(10),
+ FF_TXD_2_13 => txd_2(9),
+ FF_TXD_2_12 => txd_2(8),
+ FF_TXD_2_7 => txd_2(7),
+ FF_TXD_2_6 => txd_2(6),
+ FF_TXD_2_5 => txd_2(5),
+ FF_TXD_2_4 => txd_2(4),
+ FF_TXD_2_3 => txd_2(3),
+ FF_TXD_2_2 => txd_2(2),
+ FF_TXD_2_1 => txd_2(1),
+ FF_TXD_2_0 => txd_2(0),
+ FB_RXD_2_19 => rxd_2(15),
+ FB_RXD_2_18 => rxd_2(14),
+ FB_RXD_2_17 => rxd_2(13),
+ FB_RXD_2_16 => rxd_2(12),
+ FB_RXD_2_15 => rxd_2(11),
+ FB_RXD_2_14 => rxd_2(10),
+ FB_RXD_2_13 => rxd_2(9),
+ FB_RXD_2_12 => rxd_2(8),
+ FB_RXD_2_7 => rxd_2(7),
+ FB_RXD_2_6 => rxd_2(6),
+ FB_RXD_2_5 => rxd_2(5),
+ FB_RXD_2_4 => rxd_2(4),
+ FB_RXD_2_3 => rxd_2(3),
+ FB_RXD_2_2 => rxd_2(2),
+ FB_RXD_2_1 => rxd_2(1),
+ FB_RXD_2_0 => rxd_2(0),
+
+ FF_TXD_2_20 => tx_k_2(1),
+ FF_TXD_2_8 => tx_k_2(0),
+ FB_RXD_2_20 => rx_k_2(1),
+ FB_RXD_2_8 => rx_k_2(0),
+
+ FF_TXD_2_21 => tx_force_disp_2(1),
+ FF_TXD_2_9 => tx_force_disp_2(0),
+
+ FF_TXD_2_22 => tx_disp_sel_2(1),
+ FF_TXD_2_10 => tx_disp_sel_2(0),
+ FF_TXD_2_23 => tx_crc_init_2(1),
+ FF_TXD_2_11 => tx_crc_init_2(0),
+
+ FB_RXD_2_21 => rx_disp_err_detect_2(1),
+ FB_RXD_2_9 => rx_disp_err_detect_2(0),
+
+ FB_RXD_2_22 => rx_cv_detect_2(1),
+ FB_RXD_2_10 => rx_cv_detect_2(0),
+
+ FB_RXD_2_23 => rx_crc_eop_2(1),
+ FB_RXD_2_11 => rx_crc_eop_2(0),
+
+ FF_TXD_3_19 => txd_3(15),
+ FF_TXD_3_18 => txd_3(14),
+ FF_TXD_3_17 => txd_3(13),
+ FF_TXD_3_16 => txd_3(12),
+ FF_TXD_3_15 => txd_3(11),
+ FF_TXD_3_14 => txd_3(10),
+ FF_TXD_3_13 => txd_3(9),
+ FF_TXD_3_12 => txd_3(8),
+ FF_TXD_3_7 => txd_3(7),
+ FF_TXD_3_6 => txd_3(6),
+ FF_TXD_3_5 => txd_3(5),
+ FF_TXD_3_4 => txd_3(4),
+ FF_TXD_3_3 => txd_3(3),
+ FF_TXD_3_2 => txd_3(2),
+ FF_TXD_3_1 => txd_3(1),
+ FF_TXD_3_0 => txd_3(0),
+ FB_RXD_3_19 => rxd_3(15),
+ FB_RXD_3_18 => rxd_3(14),
+ FB_RXD_3_17 => rxd_3(13),
+ FB_RXD_3_16 => rxd_3(12),
+ FB_RXD_3_15 => rxd_3(11),
+ FB_RXD_3_14 => rxd_3(10),
+ FB_RXD_3_13 => rxd_3(9),
+ FB_RXD_3_12 => rxd_3(8),
+ FB_RXD_3_7 => rxd_3(7),
+ FB_RXD_3_6 => rxd_3(6),
+ FB_RXD_3_5 => rxd_3(5),
+ FB_RXD_3_4 => rxd_3(4),
+ FB_RXD_3_3 => rxd_3(3),
+ FB_RXD_3_2 => rxd_3(2),
+ FB_RXD_3_1 => rxd_3(1),
+ FB_RXD_3_0 => rxd_3(0),
+
+ FF_TXD_3_20 => tx_k_3(1),
+ FF_TXD_3_8 => tx_k_3(0),
+ FB_RXD_3_20 => rx_k_3(1),
+ FB_RXD_3_8 => rx_k_3(0),
+
+ FF_TXD_3_21 => tx_force_disp_3(1),
+ FF_TXD_3_9 => tx_force_disp_3(0),
+
+ FF_TXD_3_22 => tx_disp_sel_3(1),
+ FF_TXD_3_10 => tx_disp_sel_3(0),
+ FF_TXD_3_23 => tx_crc_init_3(1),
+ FF_TXD_3_11 => tx_crc_init_3(0),
+
+ FB_RXD_3_21 => rx_disp_err_detect_3(1),
+ FB_RXD_3_9 => rx_disp_err_detect_3(0),
+
+ FB_RXD_3_22 => rx_cv_detect_3(1),
+ FB_RXD_3_10 => rx_cv_detect_3(0),
+
+ FB_RXD_3_23 => rx_crc_eop_3(1),
+ FB_RXD_3_11 => rx_crc_eop_3(0),
+
+ HDINP0 => hdinp_0,
+ HDINN0 => hdinn_0,
+ HDOUTP0 => hdoutp_0,
+ HDOUTN0 => hdoutn_0,
+ FF_SYSCLK0 => ref_0_sclk,
+ FF_RXCLK0 => rx_0_sclk,
+ FFC_LANE_TX_RST0 => tx_rst_0,
+ FFC_LANE_RX_RST0 => rx_rst_0,
+ FF_TCLK0 => tclk_0,
+ FF_RCLK0 => rclk_0,
+ HDINP1 => hdinp_1,
+ HDINN1 => hdinn_1,
+ HDOUTP1 => hdoutp_1,
+ HDOUTN1 => hdoutn_1,
+ FF_SYSCLK1 => ref_1_sclk,
+ FF_RXCLK1 => rx_1_sclk,
+ FFC_LANE_TX_RST1 => tx_rst_1,
+ FFC_LANE_RX_RST1 => rx_rst_1,
+ FF_TCLK1 => tclk_1,
+ FF_RCLK1 => rclk_1,
+ HDINP2 => hdinp_2,
+ HDINN2 => hdinn_2,
+ HDOUTP2 => hdoutp_2,
+ HDOUTN2 => hdoutn_2,
+ FF_SYSCLK2 => ref_2_sclk,
+ FF_RXCLK2 => rx_2_sclk,
+ FFC_LANE_TX_RST2 => tx_rst_2,
+ FFC_LANE_RX_RST2 => rx_rst_2,
+ FF_TCLK2 => tclk_2,
+ FF_RCLK2 => rclk_2,
+ HDINP3 => hdinp_3,
+ HDINN3 => hdinn_3,
+ HDOUTP3 => hdoutp_3,
+ HDOUTN3 => hdoutn_3,
+ FF_SYSCLK3 => ref_3_sclk,
+ FF_RXCLK3 => rx_3_sclk,
+ FFC_LANE_TX_RST3 => tx_rst_3,
+ FFC_LANE_RX_RST3 => rx_rst_3,
+ FF_TCLK3 => tclk_3,
+ FF_RCLK3 => rclk_3,
+
+ FFC_PCIE_EI_EN_0 => fpsc_vlo,
+ FFC_PCIE_CT_0 => fpsc_vlo,
+ FFC_PCIE_TX_0 => fpsc_vlo,
+ FFC_PCIE_RX_0 => fpsc_vlo,
+ FFS_PCIE_CON_0 => open,
+ FFS_PCIE_DONE_0 => open,
+ FFC_PCIE_EI_EN_1 => fpsc_vlo,
+ FFC_PCIE_CT_1 => fpsc_vlo,
+ FFC_PCIE_TX_1 => fpsc_vlo,
+ FFC_PCIE_RX_1 => fpsc_vlo,
+ FFS_PCIE_CON_1 => open,
+ FFS_PCIE_DONE_1 => open,
+ FFC_PCIE_EI_EN_2 => fpsc_vlo,
+ FFC_PCIE_CT_2 => fpsc_vlo,
+ FFC_PCIE_TX_2 => fpsc_vlo,
+ FFC_PCIE_RX_2 => fpsc_vlo,
+ FFS_PCIE_CON_2 => open,
+ FFS_PCIE_DONE_2 => open,
+ FFC_PCIE_EI_EN_3 => fpsc_vlo,
+ FFC_PCIE_CT_3 => fpsc_vlo,
+ FFC_PCIE_TX_3 => fpsc_vlo,
+ FFC_PCIE_RX_3 => fpsc_vlo,
+ FFS_PCIE_CON_3 => open,
+ FFS_PCIE_DONE_3 => open,
+
+ FFC_SD_0 => lsm_en_0,
+ FFC_SD_1 => lsm_en_1,
+ FFC_SD_2 => lsm_en_2,
+ FFC_SD_3 => lsm_en_3,
+
+ FFC_EN_CGA_0 => word_align_en_0,
+ FFC_EN_CGA_1 => word_align_en_1,
+ FFC_EN_CGA_2 => word_align_en_2,
+ FFC_EN_CGA_3 => word_align_en_3,
+
+ FFC_ALIGN_EN_0 => mca_align_en_0,
+ FFC_ALIGN_EN_1 => mca_align_en_1,
+ FFC_ALIGN_EN_2 => mca_align_en_2,
+ FFC_ALIGN_EN_3 => mca_align_en_3,
+
+ FFC_FB_LB_0 => felb_0,
+ FFC_FB_LB_1 => felb_1,
+ FFC_FB_LB_2 => felb_2,
+ FFC_FB_LB_3 => felb_3,
+
+ FFS_LS_STATUS_0 => lsm_status_0,
+ FFS_LS_STATUS_1 => lsm_status_1,
+ FFS_LS_STATUS_2 => lsm_status_2,
+ FFS_LS_STATUS_3 => lsm_status_3,
+
+ FFS_CC_ORUN_0 => open,
+ FFS_CC_URUN_0 => open,
+ FFS_CC_ORUN_1 => open,
+ FFS_CC_URUN_1 => open,
+ FFS_CC_ORUN_2 => open,
+ FFS_CC_URUN_2 => open,
+ FFS_CC_ORUN_3 => open,
+ FFS_CC_URUN_3 => open,
+
+ FFC_AB_RESET => mca_resync_01,
+
+ FFS_AB_STATUS => mca_aligned_01,
+ FFS_AB_ALIGNED => mca_inskew_01,
+ FFS_AB_FAILED => mca_outskew_01,
+
+ FFC_CD_RESET => mca_resync_23,
+ FFS_CD_STATUS => mca_aligned_23,
+
+ FFS_CD_ALIGNED => mca_inskew_23,
+ FFS_CD_FAILED => mca_outskew_23,
+ BS4PAD_0 => open,
+ BS4PAD_1 => open,
+ BS4PAD_2 => open,
+ BS4PAD_3 => open,
+ FFC_SB_INV_RX_0 => fpsc_vlo,
+ FFC_SB_INV_RX_1 => fpsc_vlo,
+ FFC_SB_INV_RX_2 => fpsc_vlo,
+ FFC_SB_INV_RX_3 => fpsc_vlo,
+ TCK_FMAC => open,
+ TCK_FMACP => fpsc_vlo,
+ FF_SYSCLK_P1 => ref_pclk,
+ FF_RXCLK_P1 => rxa_pclk,
+ FF_RXCLK_P2 => rxb_pclk,
+ FFC_QUAD_RST => quad_rst,
+ FFS_RLOS_LO0 => open,
+ FFS_RLOS_LO1 => open,
+ FFS_RLOS_LO2 => open,
+ FFS_RLOS_LO3 => open,
+ COUT_21 => open,
+ COUT_20 => open,
+ COUT_19 => open,
+ COUT_18 => open,
+ COUT_17 => open,
+ COUT_16 => open,
+ COUT_15 => open,
+ COUT_14 => open,
+ COUT_13 => open,
+ COUT_12 => open,
+ COUT_11 => open,
+ COUT_10 => open,
+ COUT_9 => open,
+ COUT_8 => open,
+ COUT_7 => open,
+ COUT_6 => open,
+ COUT_5 => open,
+ COUT_4 => open,
+ COUT_3 => open,
+ COUT_2 => open,
+ COUT_1 => open,
+ COUT_0 => open,
+ CIN_12 => fpsc_vlo,
+ CIN_11 => fpsc_vlo,
+ CIN_10 => fpsc_vlo,
+ CIN_9 => fpsc_vlo,
+ CIN_8 => fpsc_vlo,
+ CIN_7 => fpsc_vlo,
+ CIN_6 => fpsc_vlo,
+ CIN_5 => fpsc_vlo,
+ CIN_4 => fpsc_vlo,
+ CIN_3 => fpsc_vlo,
+ CIN_2 => fpsc_vlo,
+ CIN_1 => fpsc_vlo,
+ CIN_0 => fpsc_vlo,
+ TESTCLK_MACO => fpsc_vlo,
+ FFC_MACRO_RST => serdes_rst);
+
+--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_fpga_ref_clk_arch ;
--- /dev/null
+export ISPLEVER_PATH=/opt/lattice/isplever7.0/isptools
+
+export ISPCPLD=$ISPLEVER_PATH/ispcpld
+export ISPJTOOLS=$ISPLEVER_PATH/ispjtools
+export PDSPLUS=$ISPLEVER_PATH/ispcomp
+export ISPFPGA=$ISPLEVER_PATH/ispfpga
+export ISPVM_DIR=$ISPLEVER_PATH/ispvmsystem
+export INI_FILE=lsc_7_0.ini
+export MWHOME=$ISPCPLD/mw
+export MWUSER_DIRECTORY=$HOME/isplever_lin_window
+export MWREGISTRY=:$MWUSER_DIRECTORY/hklm_linux.bin
+#unexport LD_LIBRARY_PATH
+#source $MWHOME/setmwruntime.csh
+export COMSPEC=/bin/csh
+export PATH=$PATH:$ISPCPLD/bin:$PDSPLUS/bin:$ISPVM_DIR
+export LD_LIBRARY_PATH=$ISPCPLD/bin:$PDSPLUS/bin:$ISPCPLD/../ispvmsystem/lib:$ISPFPGA/bin/lin:$ISPJTOOLS/vm15/lib/i386:$ISPJTOOLS/vm15/lib/i386/client:$ISPCPLD/tcltk/linux-ix86/lib:$LD_LIBRARY_PATH
+export WINHELPDIR=$ISPCPLD/bin
+export WINHELPPATH=$ISPCPLD/bin
+export ABEL5DEV=$ISPCPLD/lib5
+#export LD_ASSUME_KERNEL 2.4.0
+export MWRT_MODE=professional
+
+export LM_LICENSE_FILE=$ISPCPLD/../license/license.dat:$LM_LICENSE_FILE
+
+sed -e "s?home_dir?$HOME/isplever_lin_window?" -e "s?bin_dir?$ISPLEVER_PATH/ispcpld/bin?" -e "s?isptool_dir?$ISPLEVER_PATH?" $ISPCPLD/config/$INI_FILE > $ISPLEVER_PATH/$INI_FILE
+export LSC_INI_PATH=$ISPLEVER_PATH
+export LSC_INI_FILE=$LSC_INI_PATH/$INI_FILE
+
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+-- Uncomment the following lines to use the declarations that are
+-- provided for instantiating Xilinx primitive components.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity simpleupcounter_16bit is
+ Port ( QOUT : out std_logic_vector(15 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+end simpleupcounter_16bit;
+
+architecture simpleupcounter_16bit of simpleupcounter_16bit is
+
+signal counter: std_logic_vector (15 downto 0);
+
+begin
+
+ process (CLR, UP, CLK)
+
+ begin
+ if CLR = '1' then
+ counter <= "0000000000000000";
+ elsif clk'event and clk = '1' then
+ if UP = '1' then
+ counter <= counter + 1;
+ else
+ counter <= counter;
+ end if;
+end if;
+end process;
+
+QOUT <= counter;
+
+end simpleupcounter_16bit;
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+-- Uncomment the following lines to use the declarations that are
+-- provided for instantiating Xilinx primitive components.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity simpleupcounter_32bit is
+ Port ( QOUT : out std_logic_vector(31 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+end simpleupcounter_32bit;
+
+architecture simpleupcounter_32bit of simpleupcounter_32bit is
+
+signal counter: std_logic_vector (31 downto 0);
+
+begin
+
+ process (CLR, UP, CLK)
+
+ begin
+ if CLR = '1' then
+ counter <= "00000000000000000000000000000000";
+ elsif clk'event and clk = '1' then
+ if UP = '1' then
+ counter <= counter + 1;
+ else
+ counter <= counter;
+ end if;
+end if;
+end process;
+
+QOUT <= counter;
+
+end simpleupcounter_32bit;
--- /dev/null
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+-- Uncomment the following lines to use the declarations that are
+-- provided for instantiating Xilinx primitive components.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity simpleupcounter_8bit is
+ Port ( QOUT : out std_logic_vector(7 downto 0);
+ UP : in std_logic;
+ CLK : in std_logic;
+ CLR : in std_logic);
+end simpleupcounter_8bit;
+
+architecture Behavioral of simpleupcounter_8bit is
+
+signal counter: std_logic_vector (7 downto 0);
+
+begin
+
+ process (CLR, UP, CLK)
+
+ begin
+ if CLR = '1' then
+ counter <= ( others => '0');
+ elsif clk'event and clk = '1' then
+ if UP = '1' then
+ counter <= counter + 1;
+ else
+ counter <= counter;
+ end if;
+end if;
+end process;
+
+QOUT <= counter;
+
+end Behavioral;