# LOCATE COMP "gen_PCSD.THE_MEDIA_4_PCSD/THE_SERDES/PCSD_INST" SITE "PCSD" ;
LOCATE COMP "gen_PCSB.THE_MEDIA_PCSB/gen_pcs3.THE_SERDES/PCSD_INST" SITE "PCSB";
+LOCATE COMP "gen_PCSC.THE_MEDIA_PCSC/THE_SERDES/PCSD_INST" SITE "PCSC";
LOCATE COMP "gen_GBE.GBE/physical_impl_gen.physical/impl_gen.gbe_serdes/PCSD_INST" SITE "PCSD";
+
+
REGION "MEDIA_DOWN1" "R102C40D" 13 100;
#LOCATE UGROUP "gen_PCSA.THE_MEDIA_PCSA/media_interface_group" REGION "MEDIA_DOWN1" ;
#LOCATE UGROUP "gen_PCSB_BKPL.THE_MEDIA_4_PCSB/media_interface_group" REGION "MEDIA_DOWN1" ;
#LOCATE UGROUP "THE_MEDIA_4_PCSC/media_interface_group" REGION "MEDIA_DOWN1" ;
#LOCATE UGROUP "gen_PCSD.THE_MEDIA_4_PCSD/media_interface_group" REGION "MEDIA_DOWN1" ;
LOCATE UGROUP "gen_PCSB.THE_MEDIA_PCSB/media_interface_group" REGION "MEDIA_DOWN1" ;
+LOCATE UGROUP "gen_PCSC.THE_MEDIA_PCSC/media_interface_group" REGION "MEDIA_DOWN1" ;
FREQUENCY NET "GBE/imp_gen.serdes_intclk_gen.PCS_SERDES/clk_int.SERDES_GBE/sd_rx_clk_1" 125.0 MHz;
BLOCK PATH TO CLKNET "gen_PCSB.THE_MEDIA_PCSB/sci_read_i";
BLOCK PATH FROM CLKNET "gen_PCSB.THE_MEDIA_PCSB/sci_read_i";
#
+MULTICYCLE TO CELL "gen_PCSC.THE_MEDIA_PCSC/sci*" 20 ns;
+MULTICYCLE FROM CELL "gen_PCSC.THE_MEDIA_PCSC/sci*" 20 ns;
+MULTICYCLE TO CELL "gen_PCSC.THE_MEDIA_PCSC/PROC_SCI_CTRL.wa*" 20 ns;
+BLOCK PATH TO CLKNET "gen_PCSC.THE_MEDIA_PCSC/sci_write_i";
+BLOCK PATH FROM CLKNET "gen_PCSC.THE_MEDIA_PCSC/sci_write_i";
+BLOCK PATH TO CLKNET "gen_PCSC.THE_MEDIA_PCSC/sci_read_i";
+BLOCK PATH FROM CLKNET "gen_PCSC.THE_MEDIA_PCSC/sci_read_i";
#MULTICYCLE TO CELL "gen_PCSB_noBKPL.THE_MEDIA_4_PCSB/sci*" 20 ns;
#MULTICYCLE FROM CELL "gen_PCSB_noBKPL.THE_MEDIA_4_PCSB/sci*" 20 ns;
#MULTICYCLE TO CELL "gen_PCSB_noBKPL.THE_MEDIA_4_PCSB/PROC_SCI_CTRL.wa*" 20 ns;
MULTICYCLE TO ASIC gen_PCSB.THE_MEDIA_PCSB/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
MAXDELAY TO ASIC gen_PCSB.THE_MEDIA_PCSB/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
#
+MULTICYCLE TO ASIC gen_PCSC.THE_MEDIA_PCSC/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
+MAXDELAY TO ASIC gen_PCSC.THE_MEDIA_PCSC/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
+
#MULTICYCLE TO ASIC gen_PCSB_noBKPL.THE_MEDIA_4_PCSB/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
#MAXDELAY TO ASIC gen_PCSB_noBKPL.THE_MEDIA_4_PCSB/THE_SERDES/PCSD_INST PIN SCIRD 15 ns;
#
signal cts_ipu_status_bits : std_logic_vector(31 downto 0);
signal cts_ipu_busy : std_logic;
+ signal reset_via_gbe_long, reset_via_gbe_timer, last_reset_via_gbe_long, make_reset : std_logic;
+
attribute syn_keep of GSR_N : signal is true;
attribute syn_preserve of GSR_N : signal is true;
attribute syn_keep of bussci1_rx : signal is true;
EXT_CLK_IN => CLK_EXT_PLL_LEFT,
NET_CLK_FULL_IN => '0',
NET_CLK_HALF_IN => '0',
- RESET_FROM_NET => reset_via_gbe,
+ RESET_FROM_NET => make_reset,
BUS_RX => bustc_rx,
BUS_TX => bustc_tx,
);
+ make_reset : process begin
+ wait until rising_edge(clk_sys);
+ if(reset_via_gbe = '1') then
+ reset_via_gbe_long <= '1';
+ reset_via_gbe_timer <= '1';
+ end if;
+ if timer_ticks(0) = '1' then
+ reset_via_gbe_timer <= '0';
+ reset_via_gbe_long <= reset_via_gbe_timer;
+ end if;
+ last_reset_via_gbe_long <= reset_via_gbe_long;
+ make_reset <= last_reset_via_gbe_long and not reset_via_gbe_long;
+ end process;
+
---------------------------------------------------------------------------
-- PCSA
---------------------------------------------------------------------------
-- bussci3_tx.ack <= '0';
-- bussci3_tx.nack <= '0';
-- bussci3_tx.unknown <= '1';
- THE_MEDIA_4_PCSC : entity work.med_ecp3_sfp_sync_4
+gen_PCSC : if USE_BACKPLANE = c_NO and USE_ADDON = c_NO generate
+ THE_MEDIA_PCSC : entity work.med_ecp3_sfp_sync_4
generic map(
IS_SYNC_SLAVE => (c_NO, c_NO, c_NO, c_NO),
IS_USED => (c_YES,c_YES ,c_YES ,c_YES)
STAT_DEBUG => open, --med_stat_debug(63 downto 0),
CTRL_DEBUG => open
);
-
+end generate;
---------------------------------------------------------------------------
--- PCSD GBE
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--- GbE
+-- GbE (PCSD)
---------------------------------------------------------------------------
GBE : entity work.gbe_wrapper
generic map(
RESET => reset_i,
GSR_N => GSR_N,
- TRIGGER_IN => '0',
+ TRIGGER_IN => cts_rdo_trg_data_valid,
SD_PRSNT_N_IN(0) => SFP_MOD0(0),
SD_LOS_IN(0) => SFP_LOS(0),
USE_ONEWIRE => c_YES,
BROADCAST_SPECIAL_ADDR => x"35",
RDO_ADDITIONAL_PORT => cts_rdo_additional_ports,
- RDO_DATA_BUFFER_DEPTH => 9,
- RDO_DATA_BUFFER_FULL_THRESH => 2**9-128,
+ RDO_DATA_BUFFER_DEPTH => 10,
+ RDO_DATA_BUFFER_FULL_THRESH => 2**9-2,
RDO_HEADER_BUFFER_DEPTH => 9,
RDO_HEADER_BUFFER_FULL_THRESH => 2**9-16
)
--- gen_hub_leds : for i in 1 to 4 generate
--- LED_HUB_LINKOK(i) <= not med2int(i).stat_op(9);
--- LED_HUB_TX(i) <= not (med2int(i).stat_op(10) or not med2int(i).stat_op(9));
--- LED_HUB_RX(i) <= not (med2int(i).stat_op(11));
--- end generate;
+gen_hub_leds : for i in 1 to 4 generate
+ LED_HUB_LINKOK(i) <= not med2int(i).stat_op(9);
+ LED_HUB_TX(i) <= not (med2int(i).stat_op(10) or not med2int(i).stat_op(9));
+ LED_HUB_RX(i) <= not (med2int(i).stat_op(11));
+end generate;
-- LED_HUB_LINKOK(8) <= not med2int(7).stat_op(9) when INCLUDE_GBE = 0 else
-- '1';