diff --git a/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd b/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd index e9010e62cb1c62babee9310df8877b965680a849..a5aed655008803e650c9cda7c49855491652e7d1 100644 --- a/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd +++ b/designs/vivado/scalp_firmware/2019.2/src/hdl/scalp_firmware.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.2 -- Description: scalp_firmware -- --- Last update: 2020-11-10 +-- Last update: 2020-11-25 -- --------------------------------------------------------------------------------- @@ -36,8 +36,9 @@ use unisim.vcomponents.all; entity scalp_firmware is generic ( - C_USE_IBERT : boolean := false; - C_DEBUG_MODE : boolean := false); + C_USE_IBERT : boolean := false; + C_DEBUG_MODE : boolean := false; + C_RX_FIFO_MODE : boolean := true); port ( ----------------------------------------------------------------------- @@ -278,338 +279,258 @@ architecture arch of scalp_firmware is component scalp_aurora_phy is generic ( - C_DEBUG_MODE : boolean); + C_DEBUG_MODE : boolean; + C_RX_FIFO_MODE : boolean); port ( - GTRefClkxCI : in t_gt_ref_slave_clk; - AuroraClkxCI : in t_aurora_slave_clk; - AuroraClkxCO : out t_aurora_master_clk; - AuroraResetxRI : in t_aurora_slave_reset; - AuroraResetxRO : out t_aurora_master_link_reset; - GTPFromNorthxDI : in t_aurora_gtp_diff_io_rx; - GTPToNorthxDO : out t_aurora_gtp_diff_io_tx; - GTPFromEastxDI : in t_aurora_gtp_diff_io_rx; - GTPToEastxDO : out t_aurora_gtp_diff_io_tx; - GTPFromSouthxDI : in t_aurora_gtp_diff_io_rx; - GTPToSouthxDO : out t_aurora_gtp_diff_io_tx; - GTPFromWestxDI : in t_aurora_gtp_diff_io_rx; - GTPToWestxDO : out t_aurora_gtp_diff_io_tx; - NorthRXM2SxDO : out t_axi4m2s; - NorthTXM2SxDI : in t_axi4m2s; - NorthTXS2MxDO : out t_axi4s2m; - EastRXM2SxDO : out t_axi4m2s; - EastTXM2SxDI : in t_axi4m2s; - EastTXS2MxDO : out t_axi4s2m; - SouthRXM2SxDO : out t_axi4m2s; - SouthTXM2SxDI : in t_axi4m2s; - SouthTXS2MxDO : out t_axi4s2m; - WestRXM2SxDO : out t_axi4m2s; - WestTXM2SxDI : in t_axi4m2s; - WestTXS2MxDO : out t_axi4s2m; - NorthRXUFCM2SxDO : out t_axi4ufcm2s_rx; - NorthTXUFCM2SxDI : in t_axi4ufcm2s_tx; - NorthTXUFCS2MxDO : out t_axi4ufcs2m_tx; - EastRXUFCM2SxDO : out t_axi4ufcm2s_rx; - EastTXUFCM2SxDI : in t_axi4ufcm2s_tx; - EastTXUFCS2MxDO : out t_axi4ufcs2m_tx; - SouthRXUFCM2SxDO : out t_axi4ufcm2s_rx; - SouthTXUFCM2SxDI : in t_axi4ufcm2s_tx; - SouthTXUFCS2MxDO : out t_axi4ufcs2m_tx; - WestRXUFCM2SxDO : out t_axi4ufcm2s_rx; - WestTXUFCM2SxDI : in t_axi4ufcm2s_tx; - WestTXUFCS2MxDO : out t_axi4ufcs2m_tx; - NorthRXNFCM2SxDO : out t_axi4nfcm2s; - NorthTXNFCM2SxDI : in t_axi4nfcm2s; - NorthTXNFCS2MxDO : out t_axi4nfcs2m; - EastRXNFCM2SxDO : out t_axi4nfcm2s; - EastTXNFCM2SxDI : in t_axi4nfcm2s; - EastTXNFCS2MxDO : out t_axi4nfcs2m; - SouthRXNFCM2SxDO : out t_axi4nfcm2s; - SouthTXNFCM2SxDI : in t_axi4nfcm2s; - SouthTXNFCS2mxDO : out t_axi4nfcs2m; - WestRXNFCM2SxDO : out t_axi4nfcm2s; - WestTXNFCM2SxDI : in t_axi4nfcm2s; - WestTXNFCS2MxDO : out t_axi4nfcs2m; - AuroraCtrlxDI : in t_aurora_control; - AuroraStatusxDO : out t_aurora_status; - AuroraDRPM2SxDI : in t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0); - AuroraDRPS2MxDO : out t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0)); + GTRefClkxCI : in t_gt_ref_slave_clk; + AuroraClkxCI : in t_aurora_slave_clk; + AuroraClkxCO : out t_aurora_master_clk; + AuroraResetxRI : in t_aurora_slave_reset; + AuroraResetxRO : out t_aurora_master_link_reset; + RXResetxRI : in t_rx_reset; + RXFifoResetDonexDO : out t_rx_fifo_reset_done; + GTPFromNorthxDI : in t_aurora_gtp_diff_io_rx; + GTPToNorthxDO : out t_aurora_gtp_diff_io_tx; + GTPFromEastxDI : in t_aurora_gtp_diff_io_rx; + GTPToEastxDO : out t_aurora_gtp_diff_io_tx; + GTPFromSouthxDI : in t_aurora_gtp_diff_io_rx; + GTPToSouthxDO : out t_aurora_gtp_diff_io_tx; + GTPFromWestxDI : in t_aurora_gtp_diff_io_rx; + GTPToWestxDO : out t_aurora_gtp_diff_io_tx; + NorthRXM2SxDO : out t_axi4m2s; + NorthRXS2MxDI : in t_axi4s2m; + NorthTXM2SxDI : in t_axi4m2s; + NorthTXS2MxDO : out t_axi4s2m; + EastRXM2SxDO : out t_axi4m2s; + EastRXS2MxDI : in t_axi4s2m; + EastTXM2SxDI : in t_axi4m2s; + EastTXS2MxDO : out t_axi4s2m; + SouthRXM2SxDO : out t_axi4m2s; + SouthRXS2MxDI : in t_axi4s2m; + SouthTXM2SxDI : in t_axi4m2s; + SouthTXS2MxDO : out t_axi4s2m; + WestRXM2SxDO : out t_axi4m2s; + WestRXS2MxDI : in t_axi4s2m; + WestTXM2SxDI : in t_axi4m2s; + WestTXS2MxDO : out t_axi4s2m; + NorthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + NorthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + NorthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + EastRXUFCM2SxDO : out t_axi4ufcm2s_rx; + EastTXUFCM2SxDI : in t_axi4ufcm2s_tx; + EastTXUFCS2MxDO : out t_axi4ufcs2m_tx; + SouthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + SouthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + SouthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + WestRXUFCM2SxDO : out t_axi4ufcm2s_rx; + WestTXUFCM2SxDI : in t_axi4ufcm2s_tx; + WestTXUFCS2MxDO : out t_axi4ufcs2m_tx; + NorthRXNFCM2SxDO : out t_axi4nfcm2s; + NorthTXNFCM2SxDI : in t_axi4nfcm2s; + NorthTXNFCS2MxDO : out t_axi4nfcs2m; + EastRXNFCM2SxDO : out t_axi4nfcm2s; + EastTXNFCM2SxDI : in t_axi4nfcm2s; + EastTXNFCS2MxDO : out t_axi4nfcs2m; + SouthRXNFCM2SxDO : out t_axi4nfcm2s; + SouthTXNFCM2SxDI : in t_axi4nfcm2s; + SouthTXNFCS2mxDO : out t_axi4nfcs2m; + WestRXNFCM2SxDO : out t_axi4nfcm2s; + WestTXNFCM2SxDI : in t_axi4nfcm2s; + WestTXNFCS2MxDO : out t_axi4nfcs2m; + AuroraCtrlxDI : in t_aurora_control; + AuroraStatusxDO : out t_aurora_status; + AuroraDRPM2SxDI : in t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0); + AuroraDRPS2MxDO : out t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0); + NorthRXFifoStatusxDO : out t_axi4fifo_status; + EastRXFifoStatusxDO : out t_axi4fifo_status; + SouthRXFifoStatusxDO : out t_axi4fifo_status; + WestRXFifoStatusxDO : out t_axi4fifo_status; + AxisFifoErrorxDO : out t_axi4fifo_error); end component scalp_aurora_phy; -- Signals -- Clocks -- Processing system clock - signal PSSysClkxC : std_logic := '0'; + signal PSSysClkxC : std_logic := '0'; -- GTP Clocks -- signal GTPRefClk0xC : std_logic := '0'; -- signal GTPRefClk1xC : std_logic := '0'; - signal GTRefClk0DiffxC : t_gtp_diff_ref_clk := C_NO_GTP_DIFF_REF_CLK; - signal GTRefClk1DiffxC : t_gtp_diff_ref_clk := C_NO_GTP_DIFF_REF_CLK; + signal GTRefClk0DiffxC : t_gtp_diff_ref_clk := C_NO_GTP_DIFF_REF_CLK; + signal GTRefClk1DiffxC : t_gtp_diff_ref_clk := C_NO_GTP_DIFF_REF_CLK; -- Resets -- Processing system reset - signal PSSysResetxR : std_logic := '0'; + signal PSSysResetxR : std_logic := '0'; -- Scalp Aurora Phy - signal GTRefClk0xC : t_gt_ref_slave_clk := C_GT_REF_NO_SLAVE_CLK; - signal GTRefClk1xC : t_gt_ref_slave_clk := C_GT_REF_NO_SLAVE_CLK; - signal AuroraClkSlavexC : t_aurora_slave_clk := C_AURORA_NO_SLAVE_CLK; - signal AuroraClkMasterxC : t_aurora_master_clk := C_AURORA_NO_MASTER_CLK; - signal AuroraResetSlavexR : t_aurora_slave_reset := C_AURORA_NO_SLAVE_RESET; - signal AuroraResetMasterLinkxR : t_aurora_master_link_reset := C_AURORA_NO_MASTER_LINK_RESET; - signal GTPFromNorthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToNorthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromEastxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToEastxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromSouthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToSouthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromWestxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToWestxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal NorthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal NorthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal EastRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal EastTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal EastTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal SouthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal SouthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal SouthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal WestRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal NorthRXfromPhyTXfromFifoM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal NorthRXfromPhyTXfromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal EastRXfromPhyTXfromFifoM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal EastRXfromPhyTXfromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal SouthRXfromPhyTXfromFifoM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal SouthRXfromPhyTXfromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal WestRXfromPhyTXfromFifoM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal WestRXfromPhyTXfromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal NorthRXFromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal EastRXFromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal SouthRXFromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal WestRXFromFifoS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal NorthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal NorthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal NorthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal EastRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal EastTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal EastTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal SouthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal SouthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal SouthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal WestRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal WestTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal WestTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal NorthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal NorthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal NorthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; - signal EastRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal EastTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal EastTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; - signal SouthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal SouthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal SouthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; - signal WestRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal WestTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; - signal WestTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; - signal AuroraCtrlxD : t_aurora_control := C_AURORA_NO_CONTROL; - signal AuroraStatusxD : t_aurora_status := C_AURORA_NO_STATUS; - signal AuroraDRPM2SxD : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S); - signal AuroraDRPS2MxD : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M); - signal NorthFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; - signal EastFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; - signal SouthFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; - signal WestFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal GTRefClk0xC : t_gt_ref_slave_clk := C_GT_REF_NO_SLAVE_CLK; + signal GTRefClk1xC : t_gt_ref_slave_clk := C_GT_REF_NO_SLAVE_CLK; + signal AuroraClkSlavexC : t_aurora_slave_clk := C_AURORA_NO_SLAVE_CLK; + signal AuroraClkMasterxC : t_aurora_master_clk := C_AURORA_NO_MASTER_CLK; + signal AuroraResetSlavexR : t_aurora_slave_reset := C_AURORA_NO_SLAVE_RESET; + signal AuroraResetMasterLinkxR : t_aurora_master_link_reset := C_AURORA_NO_MASTER_LINK_RESET; + signal RXResetxR : t_rx_reset := C_NO_RX_RESET; + signal RXFifoResetDonexD : t_rx_fifo_reset_done := C_NO_RX_FIFO_RESET_DONE; + signal RXFifoResetDoneDelayedxD : t_rx_fifo_reset_done := C_NO_RX_FIFO_RESET_DONE; + signal GTPFromNorthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToNorthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromEastxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToEastxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromSouthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToSouthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromWestxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToWestxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal NorthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal NorthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal NorthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal NorthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal EastRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal EastTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal EastTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal SouthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal SouthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal SouthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal WestRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal WestTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal WestTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal NorthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal EastRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal SouthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal WestRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal AuroraCtrlxD : t_aurora_control := C_AURORA_NO_CONTROL; + signal AuroraStatusxD : t_aurora_status := C_AURORA_NO_STATUS; + signal AuroraDRPM2SxD : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S); + signal AuroraDRPS2MxD : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M); + signal NorthRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal EastRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal SouthRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal WestRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal AxisFifoErrorxD : t_axi4fifo_error := C_NO_AXI4_FIFO_ERROR; -- Scalp Axi Lite interface and IRQ - signal InterruptxS : std_ulogic := '0'; - signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal RdValidxS : std_ulogic := '0'; - signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); - signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WrValidxS : std_ulogic := '0'; + signal InterruptxS : std_ulogic := '0'; + signal RdAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal RdDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal RdValidxS : std_ulogic := '0'; + signal WrAddrxD : std_ulogic_vector((C_AXI_ADDR_SIZE - 1) downto 0) := (others => '0'); + signal WrDataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WrValidxS : std_ulogic := '0'; -- Zynq Reg Bank - type t_status_send_word is (E_IDLE, E_SEND); - - signal NorthStatusSendWordxDN : t_status_send_word := E_IDLE; - signal NorthStatusSendWordxDP : t_status_send_word := E_IDLE; - signal EastStatusSendWordxDN : t_status_send_word := E_IDLE; - signal EastStatusSendWordxDP : t_status_send_word := E_IDLE; - signal SouthStatusSendWordxDN : t_status_send_word := E_IDLE; - signal SouthStatusSendWordxDP : t_status_send_word := E_IDLE; - signal WestStatusSendWordxDN : t_status_send_word := E_IDLE; - signal WestStatusSendWordxDP : t_status_send_word := E_IDLE; - -- - signal NorthNativeSlavexD : t_native_fifo_slave; - signal NorthNativeMasterxD : t_native_fifo_master; - signal EastNativeSlavexD : t_native_fifo_slave; - signal EastNativeMasterxD : t_native_fifo_master; - signal SouthNativeSlavexD : t_native_fifo_slave; - signal SouthNativeMasterxD : t_native_fifo_master; - signal WestNativeSlavexD : t_native_fifo_slave; - signal WestNativeMasterxD : t_native_fifo_master; + -- type t_status_send_word is (E_IDLE, E_SEND); + + -- signal NorthStatusSendWordxDN : t_status_send_word := E_IDLE; + -- signal NorthStatusSendWordxDP : t_status_send_word := E_IDLE; + -- signal EastStatusSendWordxDN : t_status_send_word := E_IDLE; + -- signal EastStatusSendWordxDP : t_status_send_word := E_IDLE; + -- signal SouthStatusSendWordxDN : t_status_send_word := E_IDLE; + -- signal SouthStatusSendWordxDP : t_status_send_word := E_IDLE; + -- signal WestStatusSendWordxDN : t_status_send_word := E_IDLE; + -- signal WestStatusSendWordxDP : t_status_send_word := E_IDLE; + -- -- + -- signal NorthNativeSlavexD : t_native_fifo_slave; + -- signal NorthNativeMasterxD : t_native_fifo_master; + -- signal EastNativeSlavexD : t_native_fifo_slave; + -- signal EastNativeMasterxD : t_native_fifo_master; + -- signal SouthNativeSlavexD : t_native_fifo_slave; + -- signal SouthNativeMasterxD : t_native_fifo_master; + -- signal WestNativeSlavexD : t_native_fifo_slave; + -- signal WestNativeMasterxD : t_native_fifo_master; -- -- signal InterruptRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- signal InterruptRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- North - signal NorthStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal NorthWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- East - signal EastStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal EastWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- South - signal SouthStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal SouthWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- West - signal WestStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestStatusRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestStatusRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestCtrlRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestCtrlRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestWrDataRegPortxDN : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); + -- signal WestWrDataRegPortxDP : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0) := (others => '0'); -- Debug -- signal CntRstxR : std_ulogic := '0'; - signal ClkEnxS : std_ulogic := '0'; - signal DataCounterxD : std_ulogic_vector(31 downto 0) := (others => '0'); + signal ClkEnxS : std_ulogic := '0'; + signal NorthDataCounterxDN : unsigned(31 downto 0) := (others => '0'); + signal NorthDataCounterxDP : unsigned(31 downto 0) := (others => '0'); + signal EastDataCounterxDN : unsigned(31 downto 0) := (others => '0'); + signal EastDataCounterxDP : unsigned(31 downto 0) := (others => '0'); + signal SouthDataCounterxDN : unsigned(31 downto 0) := (others => '0'); + signal SouthDataCounterxDP : unsigned(31 downto 0) := (others => '0'); + signal WestDataCounterxDN : unsigned(31 downto 0) := (others => '0'); + signal WestDataCounterxDP : unsigned(31 downto 0) := (others => '0'); -- - signal DebugCounterResetxR : std_ulogic := '0'; - signal DebugRXFifoResetxR : std_ulogic := '0'; - signal DebugBackPressureResetxR : std_ulogic := '0'; + signal DebugCounterResetxR : t_if_common_reset := C_NO_IF_COMMON_RESET; + signal DebugRXFifoResetxR : t_rx_fifo_reset := C_NO_RX_FIFO_RESET; + signal DebugBackPressureResetxR : t_rx_back_pressure_reset := C_NO_RX_BACK_PRESSURE_RESET; -- Attributes - attribute mark_debug : string; - attribute keep : string; + attribute mark_debug : string; + attribute keep : string; -- Clocks - attribute keep of PSSysClkxC : signal is "true"; - attribute keep of GTRefClk0xC : signal is "true"; - attribute keep of GTRefClk1xC : signal is "true"; - attribute keep of AuroraClkSlavexC : signal is "true"; - attribute keep of AuroraClkMasterxC : signal is "true"; - -- Resets - -- attribute mark_debug of PSSysResetxR : signal is "true"; - -- attribute keep of PSSysResetxR : signal is "true"; - -- attribute mark_debug of AuroraResetSlavexR : signal is "true"; - -- attribute keep of AuroraResetSlavexR : signal is "true"; - -- attribute mark_debug of AuroraResetMasterLinkxR : signal is "true"; - -- attribute keep of AuroraResetMasterLinkxR : signal is "true"; - -- Aurora - attribute mark_debug of NorthFifoStatusxD : signal is "true"; - attribute keep of NorthFifoStatusxD : signal is "true"; - attribute mark_debug of EastFifoStatusxD : signal is "true"; - attribute keep of EastFifoStatusxD : signal is "true"; - attribute mark_debug of SouthFifoStatusxD : signal is "true"; - attribute keep of SouthFifoStatusxD : signal is "true"; - attribute mark_debug of WestFifoStatusxD : signal is "true"; - attribute keep of WestFifoStatusxD : signal is "true"; - -- attribute mark_debug of NorthRXM2SxD : signal is "true"; - -- attribute keep of NorthRXM2SxD : signal is "true"; - -- attribute mark_debug of NorthRXFromFifoS2MxD : signal is "true"; - -- attribute keep of NorthRXFromFifoS2MxD : signal is "true"; - -- attribute mark_debug of NorthRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute keep of NorthRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute mark_debug of NorthRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute keep of NorthRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute mark_debug of EastFifoStatusxD : signal is "true"; - -- attribute keep of EastFifoStatusxD : signal is "true"; - -- attribute mark_debug of EastRXM2SxD : signal is "true"; - -- attribute keep of EastRXM2SxD : signal is "true"; - -- attribute mark_debug of EastRXFromFifoS2MxD : signal is "true"; - -- attribute keep of EastRXFromFifoS2MxD : signal is "true"; - -- attribute mark_debug of EastRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute keep of EastRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute mark_debug of EastRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute keep of EastRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute mark_debug of SouthFifoStatusxD : signal is "true"; - -- attribute keep of SouthFifoStatusxD : signal is "true"; - -- attribute mark_debug of SouthRXM2SxD : signal is "true"; - -- attribute keep of SouthRXM2SxD : signal is "true"; - -- attribute mark_debug of SouthRXFromFifoS2MxD : signal is "true"; - -- attribute keep of SouthRXFromFifoS2MxD : signal is "true"; - -- attribute mark_debug of SouthRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute keep of SouthRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute mark_debug of SouthRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute keep of SouthRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute mark_debug of WestFifoStatusxD : signal is "true"; - -- attribute keep of WestFifoStatusxD : signal is "true"; - -- attribute mark_debug of WestRXM2SxD : signal is "true"; - -- attribute keep of WestRXM2SxD : signal is "true"; - -- attribute mark_debug of WestRXFromFifoS2MxD : signal is "true"; - -- attribute keep of WestRXFromFifoS2MxD : signal is "true"; - -- attribute mark_debug of WestRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute keep of WestRXfromPhyTXfromFifoM2SxD : signal is "true"; - -- attribute mark_debug of WestRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- attribute keep of WestRXfromPhyTXfromFifoS2MxD : signal is "true"; - -- - attribute mark_debug of NorthRXM2SxD : signal is "true"; - attribute keep of NorthRXM2SxD : signal is "true"; - attribute mark_debug of NorthTXM2SxD : signal is "true"; - attribute keep of NorthTXM2SxD : signal is "true"; - attribute mark_debug of NorthTXS2MxD : signal is "true"; - attribute keep of NorthTXS2MxD : signal is "true"; - attribute mark_debug of EastRXM2SxD : signal is "true"; - attribute keep of EastRXM2SxD : signal is "true"; - attribute mark_debug of EastTXM2SxD : signal is "true"; - attribute keep of EastTXM2SxD : signal is "true"; - attribute mark_debug of EastTXS2MxD : signal is "true"; - attribute keep of EastTXS2MxD : signal is "true"; - attribute mark_debug of SouthRXM2SxD : signal is "true"; - attribute keep of SouthRXM2SxD : signal is "true"; - attribute mark_debug of SouthTXM2SxD : signal is "true"; - attribute keep of SouthTXM2SxD : signal is "true"; - attribute mark_debug of SouthTXS2MxD : signal is "true"; - attribute keep of SouthTXS2MxD : signal is "true"; - attribute mark_debug of WestRXM2SxD : signal is "true"; - attribute keep of WestRXM2SxD : signal is "true"; - attribute mark_debug of WestTXM2SxD : signal is "true"; - attribute keep of WestTXM2SxD : signal is "true"; - attribute mark_debug of WestTXS2MxD : signal is "true"; - attribute keep of WestTXS2MxD : signal is "true"; - attribute mark_debug of NorthRXNFCM2SxD : signal is "true"; - attribute keep of NorthRXNFCM2SxD : signal is "true"; - attribute mark_debug of NorthTXNFCM2SxD : signal is "true"; - attribute keep of NorthTXNFCM2SxD : signal is "true"; - attribute mark_debug of NorthTXNFCS2MxD : signal is "true"; - attribute keep of NorthTXNFCS2MxD : signal is "true"; - attribute mark_debug of EastRXNFCM2SxD : signal is "true"; - attribute keep of EastRXNFCM2SxD : signal is "true"; - attribute mark_debug of EastTXNFCM2SxD : signal is "true"; - attribute keep of EastTXNFCM2SxD : signal is "true"; - attribute mark_debug of EastTXNFCS2MxD : signal is "true"; - attribute keep of EastTXNFCS2MxD : signal is "true"; - attribute mark_debug of SouthRXNFCM2SxD : signal is "true"; - attribute keep of SouthRXNFCM2SxD : signal is "true"; - attribute mark_debug of SouthTXNFCM2SxD : signal is "true"; - attribute keep of SouthTXNFCM2SxD : signal is "true"; - attribute mark_debug of SouthTXNFCS2mxD : signal is "true"; - attribute keep of SouthTXNFCS2mxD : signal is "true"; - attribute mark_debug of WestRXNFCM2SxD : signal is "true"; - attribute keep of WestRXNFCM2SxD : signal is "true"; - attribute mark_debug of WestTXNFCM2SxD : signal is "true"; - attribute keep of WestTXNFCM2SxD : signal is "true"; - attribute mark_debug of WestTXNFCS2MxD : signal is "true"; - attribute keep of WestTXNFCS2MxD : signal is "true"; - attribute mark_debug of AuroraCtrlxD : signal is "true"; - attribute keep of AuroraCtrlxD : signal is "true"; - attribute mark_debug of AuroraStatusxD : signal is "true"; - attribute keep of AuroraStatusxD : signal is "true"; - -- attribute mark_debug of NorthTXM2SxD : signal is "true"; - -- attribute keep of NorthTXM2SxD : signal is "true"; - -- attribute mark_debug of EastTXM2SxD : signal is "true"; - -- attribute keep of EastTXM2SxD : signal is "true"; - -- attribute mark_debug of SouthTXM2SxD : signal is "true"; - -- attribute keep of SouthTXM2SxD : signal is "true"; - -- attribute mark_debug of WestTXM2SxD : signal is "true"; - -- attribute keep of WestTXM2SxD : signal is "true"; + attribute keep of PSSysClkxC : signal is "true"; + attribute keep of GTRefClk0xC : signal is "true"; + attribute keep of GTRefClk1xC : signal is "true"; + attribute keep of AuroraClkSlavexC : signal is "true"; + attribute keep of AuroraClkMasterxC : signal is "true"; + -- North + attribute mark_debug of NorthRXM2SxD : signal is "true"; + attribute keep of NorthRXM2SxD : signal is "true"; + attribute mark_debug of NorthRXS2MxD : signal is "true"; + attribute keep of NorthRXS2MxD : signal is "true"; + -- East + -- attribute keep of EastRXM2SxD : signal is "true"; + -- attribute keep of EastRXM2SxD : signal is "true"; + -- attribute keep of EastRXS2MxD : signal is "true"; + -- attribute keep of EastRXS2MxD : signal is "true"; + -- South + attribute mark_debug of SouthRXM2SxD : signal is "true"; + attribute keep of SouthRXM2SxD : signal is "true"; + attribute mark_debug of SouthRXS2MxD : signal is "true"; + attribute keep of SouthRXS2MxD : signal is "true"; + -- West + -- attribute keep of WestRXM2SxD : signal is "true"; + -- attribute keep of WestRXM2SxD : signal is "true"; + -- attribute keep of WestRXS2MxD : signal is "true"; + -- attribute keep of WestRXS2MxD : signal is "true"; begin @@ -733,6 +654,9 @@ begin end block PllClocksxB; GTPhyxB : block is + + constant C_RX_FIFO_RST_DONE_DLY_TICKS : integer := 100; + begin -- block GTPhyxB -- GTP @@ -761,474 +685,114 @@ begin end block CtrlxB; - ScalpAuroraPyhxI : entity work.scalp_aurora_phy + ScalpAuroraPhyxI : entity work.scalp_aurora_phy generic map ( - C_DEBUG_MODE => C_DEBUG_MODE) + C_DEBUG_MODE => C_DEBUG_MODE, + C_RX_FIFO_MODE => C_RX_FIFO_MODE, + C_RX_FIFO_RST_DONE_DLY_TICKS => C_RX_FIFO_RST_DONE_DLY_TICKS) port map ( + -- Clocks -- GTP Ref Clocks - GTRefClkxCI => GTRefClk0xC, + GTRefClkxCI => GTRefClk0xC, -- Aurora System and GTP Clocks - AuroraClkxCI => AuroraClkSlavexC, - AuroraClkxCO => AuroraClkMasterxC, + AuroraClkxCI => AuroraClkSlavexC, + AuroraClkxCO => AuroraClkMasterxC, + -- Reset -- Aurora Reset - AuroraResetxRI => AuroraResetSlavexR, - AuroraResetxRO => AuroraResetMasterLinkxR, + AuroraResetxRI => AuroraResetSlavexR, + AuroraResetxRO => AuroraResetMasterLinkxR, + -- RX Fifo and Back Pressure Reset + RXResetxRI => RXResetxR, + RXFifoResetDonexDO => RXFifoResetDonexD, + RXFifoResetDoneDelayedxDO => RXFifoResetDoneDelayedxD, + -- Back Pressure Reset -- GTP Serial IO -- North - GTPFromNorthxDI => GTPFromNorthxD, - GTPToNorthxDO => GTPToNorthxD, + GTPFromNorthxDI => GTPFromNorthxD, + GTPToNorthxDO => GTPToNorthxD, -- East - GTPFromEastxDI => GTPFromEastxD, - GTPToEastxDO => GTPToEastxD, + GTPFromEastxDI => GTPFromEastxD, + GTPToEastxDO => GTPToEastxD, -- South - GTPFromSouthxDI => GTPFromSouthxD, - GTPToSouthxDO => GTPToSouthxD, + GTPFromSouthxDI => GTPFromSouthxD, + GTPToSouthxDO => GTPToSouthxD, -- West - GTPFromWestxDI => GTPFromWestxD, - GTPToWestxDO => GTPToWestxD, + GTPFromWestxDI => GTPFromWestxD, + GTPToWestxDO => GTPToWestxD, -- Axi4 Framing Interface -- North - NorthRXM2SxDO => NorthRXM2SxD, - NorthTXM2SxDI => NorthTXM2SxD, - NorthTXS2MxDO => NorthTXS2MxD, + NorthRXM2SxDO => NorthRXM2SxD, + NorthRXS2MxDI => NorthRXS2MxD, + NorthTXM2SxDI => NorthTXM2SxD, + NorthTXS2MxDO => NorthTXS2MxD, -- East - EastRXM2SxDO => EastRXM2SxD, - EastTXM2SxDI => EastTXM2SxD, - EastTXS2MxDO => EastTXS2MxD, + EastRXM2SxDO => EastRXM2SxD, + EastRXS2MxDI => EastRXS2MxD, + EastTXM2SxDI => EastTXM2SxD, + EastTXS2MxDO => EastTXS2MxD, -- South - SouthRXM2SxDO => SouthRXM2SxD, - SouthTXM2SxDI => SouthTXM2SxD, - SouthTXS2MxDO => SouthTXS2MxD, + SouthRXM2SxDO => SouthRXM2SxD, + SouthRXS2MxDI => SouthRXS2MxD, + SouthTXM2SxDI => SouthTXM2SxD, + SouthTXS2MxDO => SouthTXS2MxD, -- West - WestRXM2SxDO => WestRXM2SxD, - WestTXM2SxDI => WestTXM2SxD, - WestTXS2MxDO => WestTXS2MxD, + WestRXM2SxDO => WestRXM2SxD, + WestRXS2MxDI => WestRXS2MxD, + WestTXM2SxDI => WestTXM2SxD, + WestTXS2MxDO => WestTXS2MxD, -- Axi4 Framing UFC Interface -- North - NorthRXUFCM2SxDO => NorthRXUFCM2SxD, - NorthTXUFCM2SxDI => NorthTXUFCM2SxD, - NorthTXUFCS2MxDO => NorthTXUFCS2MxD, + NorthRXUFCM2SxDO => NorthRXUFCM2SxD, + NorthTXUFCM2SxDI => NorthTXUFCM2SxD, + NorthTXUFCS2MxDO => NorthTXUFCS2MxD, -- East - EastRXUFCM2SxDO => EastRXUFCM2SxD, - EastTXUFCM2SxDI => EastTXUFCM2SxD, - EastTXUFCS2MxDO => EastTXUFCS2MxD, + EastRXUFCM2SxDO => EastRXUFCM2SxD, + EastTXUFCM2SxDI => EastTXUFCM2SxD, + EastTXUFCS2MxDO => EastTXUFCS2MxD, -- South - SouthRXUFCM2SxDO => SouthRXUFCM2SxD, - SouthTXUFCM2SxDI => SouthTXUFCM2SxD, - SouthTXUFCS2MxDO => SouthTXUFCS2MxD, + SouthRXUFCM2SxDO => SouthRXUFCM2SxD, + SouthTXUFCM2SxDI => SouthTXUFCM2SxD, + SouthTXUFCS2MxDO => SouthTXUFCS2MxD, -- West - WestRXUFCM2SxDO => WestRXUFCM2SxD, - WestTXUFCM2SxDI => WestTXUFCM2SxD, - WestTXUFCS2MxDO => WestTXUFCS2MxD, + WestRXUFCM2SxDO => WestRXUFCM2SxD, + WestTXUFCM2SxDI => WestTXUFCM2SxD, + WestTXUFCS2MxDO => WestTXUFCS2MxD, -- Axi4 Framing NFC Interface + -- The NFC interface is not available when the + -- constant C_RX_FIFO_MODE is set to TRUE. -- North - NorthRXNFCM2SxDO => NorthRXNFCM2SxD, - NorthTXNFCM2SxDI => NorthTXNFCM2SxD, - NorthTXNFCS2MxDO => NorthTXNFCS2MxD, + NorthRXNFCM2SxDO => NorthRXNFCM2SxD, + NorthTXNFCM2SxDI => NorthTXNFCM2SxD, + NorthTXNFCS2MxDO => NorthTXNFCS2MxD, -- East - EastRXNFCM2SxDO => EastRXNFCM2SxD, - EastTXNFCM2SxDI => EastTXNFCM2SxD, - EastTXNFCS2MxDO => EastTXNFCS2MxD, + EastRXNFCM2SxDO => EastRXNFCM2SxD, + EastTXNFCM2SxDI => EastTXNFCM2SxD, + EastTXNFCS2MxDO => EastTXNFCS2MxD, -- South - SouthRXNFCM2SxDO => SouthRXNFCM2SxD, - SouthTXNFCM2SxDI => SouthTXNFCM2SxD, - SouthTXNFCS2mxDO => SouthTXNFCS2mxD, + SouthRXNFCM2SxDO => SouthRXNFCM2SxD, + SouthTXNFCM2SxDI => SouthTXNFCM2SxD, + SouthTXNFCS2mxDO => SouthTXNFCS2mxD, -- West - WestRXNFCM2SxDO => WestRXNFCM2SxD, - WestTXNFCM2SxDI => WestTXNFCM2SxD, - WestTXNFCS2MxDO => WestTXNFCS2MxD, + WestRXNFCM2SxDO => WestRXNFCM2SxD, + WestTXNFCM2SxDI => WestTXNFCM2SxD, + WestTXNFCS2MxDO => WestTXNFCS2MxD, -- Aurora Ctrl + Status - AuroraCtrlxDI => AuroraCtrlxD, - AuroraStatusxDO => AuroraStatusxD, + AuroraCtrlxDI => AuroraCtrlxD, + AuroraStatusxDO => AuroraStatusxD, -- DRP Port - AuroraDRPM2SxDI => (others => C_NO_DRP_M2S), - AuroraDRPS2MxDO => open); - - RXFifoxB : block is - - signal RXFifoRstxRAN : std_ulogic := '0'; - - begin -- block RXFifoxB - - RXFifoRstxAS : RXFifoRstxRAN <= (not AuroraClkMasterxC.PllNotLockedxS) and (not DebugRXFifoResetxR); - - ScalpAuroraPhyRXFifoxI : entity work.scalp_aurora_phy_rx_fifo - port map ( - -- Clocks and reset - RXClkxCI => AuroraClkMasterxC.UserClkxC, - TXClkxCI => AuroraClkMasterxC.UserClkxC, - RXRstxRANI => RXFifoRstxRAN, - -- North - -- Fifo RX Side - NorthRXM2SxDI => NorthRXM2SxD, - NorthRXS2MxDO => NorthRXFromFifoS2MxD, - -- Fifo TX Side - NorthTXM2SxDO => NorthRXfromPhyTXfromFifoM2SxD, - NorthTXS2MxDI => NorthRXfromPhyTXfromFifoS2MxD, - NorthFifoStatusxDO => NorthFifoStatusxD, - -- East - -- Fifo RX Side - EastRXM2SxDI => EastRXM2SxD, - EastRXS2MxDO => EastRXFromFifoS2MxD, - -- Fifo TX Side - EastTXM2SxDO => EastRXfromPhyTXfromFifoM2SxD, - EastTXS2MxDI => EastRXfromPhyTXfromFifoS2MxD, - EastFifoStatusxDO => EastFifoStatusxD, - -- South - -- Fifo RX Side - SouthRXM2SxDI => SouthRXM2SxD, - SouthRXS2MxDO => SouthRXFromFifoS2MxD, - -- Fifo TX Side - SouthTXM2SxDO => SouthRXfromPhyTXfromFifoM2SxD, - SouthTXS2MxDI => SouthRXfromPhyTXfromFifoS2MxD, - SouthFifoStatusxDO => SouthFifoStatusxD, - -- West - -- Fifo RX Side - WestRXM2SxDI => WestRXM2SxD, - WestRXS2MxDO => WestRXFromFifoS2MxD, - -- Fifo TX Side - WestTXM2SxDO => WestRXfromPhyTXfromFifoM2SxD, - WestTXS2MxDI => WestRXfromPhyTXfromFifoS2MxD, - WestFifoStatusxDO => WestFifoStatusxD); - - end block RXFifoxB; - - BackPressurexB : block is - - signal BackPressureResetxR : std_ulogic := '0'; - -- North - signal NorthProgFullxSN : std_ulogic := '0'; - signal NorthProgFullxSP : std_ulogic := '0'; - signal NorthProgEmptyxSN : std_ulogic := '0'; - signal NorthProgEmptyxSP : std_ulogic := '0'; - signal NorthNFCStatexDN : t_nfc_states := C_NFC_IDLE; - signal NorthNFCStatexDP : t_nfc_states := C_NFC_IDLE; - signal NorthNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal NorthNFCValidxSN : std_ulogic := '0'; - signal NorthNFCValidxSP : std_ulogic := '0'; - -- East - signal EastProgFullxSN : std_ulogic := '0'; - signal EastProgFullxSP : std_ulogic := '0'; - signal EastProgEmptyxSN : std_ulogic := '0'; - signal EastProgEmptyxSP : std_ulogic := '0'; - signal EastNFCStatexDN : t_nfc_states := C_NFC_IDLE; - signal EastNFCStatexDP : t_nfc_states := C_NFC_IDLE; - signal EastNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal EastNFCValidxSN : std_ulogic := '0'; - signal EastNFCValidxSP : std_ulogic := '0'; - -- South - signal SouthProgFullxSN : std_ulogic := '0'; - signal SouthProgFullxSP : std_ulogic := '0'; - signal SouthProgEmptyxSN : std_ulogic := '0'; - signal SouthProgEmptyxSP : std_ulogic := '0'; - signal SouthNFCStatexDN : t_nfc_states := C_NFC_IDLE; - signal SouthNFCStatexDP : t_nfc_states := C_NFC_IDLE; - signal SouthNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal SouthNFCValidxSN : std_ulogic := '0'; - signal SouthNFCValidxSP : std_ulogic := '0'; - -- West - signal WestProgFullxSN : std_ulogic := '0'; - signal WestProgFullxSP : std_ulogic := '0'; - signal WestProgEmptyxSN : std_ulogic := '0'; - signal WestProgEmptyxSP : std_ulogic := '0'; - signal WestNFCStatexDN : t_nfc_states := C_NFC_IDLE; - signal WestNFCStatexDP : t_nfc_states := C_NFC_IDLE; - signal WestNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); - signal WestNFCValidxSN : std_ulogic := '0'; - signal WestNFCValidxSP : std_ulogic := '0'; - - -- Attributes - attribute mark_debug : string; - attribute keep : string; - -- - attribute mark_debug of BackPressureResetxR : signal is "true"; - attribute keep of BackPressureResetxR : signal is "true"; - -- - attribute mark_debug of NorthNFCStatexDP : signal is "true"; - attribute keep of NorthNFCStatexDP : signal is "true"; - attribute mark_debug of NorthNFCDataxDP : signal is "true"; - attribute keep of NorthNFCDataxDP : signal is "true"; - attribute mark_debug of NorthNFCValidxSP : signal is "true"; - attribute keep of NorthNFCValidxSP : signal is "true"; - -- - attribute mark_debug of EastNFCStatexDP : signal is "true"; - attribute keep of EastNFCStatexDP : signal is "true"; - attribute mark_debug of EastNFCDataxDP : signal is "true"; - attribute keep of EastNFCDataxDP : signal is "true"; - attribute mark_debug of EastNFCValidxSP : signal is "true"; - attribute keep of EastNFCValidxSP : signal is "true"; - -- - attribute mark_debug of SouthNFCStatexDP : signal is "true"; - attribute keep of SouthNFCStatexDP : signal is "true"; - attribute mark_debug of SouthNFCDataxDP : signal is "true"; - attribute keep of SouthNFCDataxDP : signal is "true"; - attribute mark_debug of SouthNFCValidxSP : signal is "true"; - attribute keep of SouthNFCValidxSP : signal is "true"; - -- - attribute mark_debug of WestNFCStatexDP : signal is "true"; - attribute keep of WestNFCStatexDP : signal is "true"; - attribute mark_debug of WestNFCDataxDP : signal is "true"; - attribute keep of WestNFCDataxDP : signal is "true"; - attribute mark_debug of WestNFCValidxSP : signal is "true"; - attribute keep of WestNFCValidxSP : signal is "true"; - - begin -- block BackPressurexB - - BackPressureResetxAS : BackPressureResetxR <= AuroraClkMasterxC.PllNotLockedxS or - DebugBackPressureResetxR; - -- NFC Data and valid signals - NorthNFCDataxAS : NorthTXNFCM2SxD.DataxD <= NorthNFCDataxDP; - NorthNFCValidxAS : NorthTXNFCM2SxD.ValidxS <= NorthNFCValidxSP; - NorthProgFullxAS : NorthProgFullxSN <= NorthFifoStatusxD.ProgFullxS; - NorthProgEmptyxAS : NorthProgEmptyxSN <= NorthFifoStatusxD.ProgEmptyxS; - EastNFCDataxAS : EastTXNFCM2SxD.DataxD <= EastNFCDataxDP; - EastNFCValidxAS : EastTXNFCM2SxD.ValidxS <= EastNFCValidxSP; - SouthNFCDataxAS : SouthTXNFCM2SxD.DataxD <= SouthNFCDataxDP; - SouthNFCValidxAS : SouthTXNFCM2SxD.ValidxS <= SouthNFCValidxSP; - WestNFCDataxAS : WestTXNFCM2SxD.DataxD <= WestNFCDataxDP; - WestNFCValidxAS : WestTXNFCM2SxD.ValidxS <= WestNFCValidxSP; - - UpdateRegxP : process (AuroraClkMasterxC.UserClkxC, - BackPressureResetxR) is - begin -- process UpdateRegxP - if BackPressureResetxR = '1' then - NorthProgFullxSP <= '0'; - NorthProgEmptyxSP <= '0'; - NorthNFCStatexDP <= C_NFC_IDLE; - NorthNFCDataxDP <= (others => '0'); - NorthNFCValidxSP <= '0'; - EastProgFullxSP <= '0'; - EastProgEmptyxSP <= '0'; - EastNFCStatexDP <= C_NFC_IDLE; - EastNFCDataxDP <= (others => '0'); - EastNFCValidxSP <= '0'; - SouthProgFullxSP <= '0'; - SouthProgEmptyxSP <= '0'; - SouthNFCStatexDP <= C_NFC_IDLE; - SouthNFCDataxDP <= (others => '0'); - SouthNFCValidxSP <= '0'; - WestProgFullxSP <= '0'; - WestProgEmptyxSP <= '0'; - WestNFCStatexDP <= C_NFC_IDLE; - WestNFCDataxDP <= (others => '0'); - WestNFCValidxSP <= '0'; - elsif rising_edge(AuroraClkMasterxC.UserClkxC) then - NorthProgFullxSP <= NorthProgFullxSN; - NorthProgEmptyxSP <= NorthProgEmptyxSN; - NorthNFCStatexDP <= NorthNFCStatexDN; - NorthNFCDataxDP <= NorthNFCDataxDN; - NorthNFCValidxSP <= NorthNFCValidxSN; - EastProgFullxSP <= EastProgFullxSN; - EastProgEmptyxSP <= EastProgEmptyxSN; - EastNFCStatexDP <= EastNFCStatexDN; - EastNFCDataxDP <= EastNFCDataxDN; - EastNFCValidxSP <= EastNFCValidxSN; - SouthProgFullxSP <= SouthProgFullxSN; - SouthProgEmptyxSP <= SouthProgEmptyxSN; - SouthNFCStatexDP <= SouthNFCStatexDN; - SouthNFCDataxDP <= SouthNFCDataxDN; - SouthNFCValidxSP <= SouthNFCValidxSN; - WestProgFullxSP <= WestProgFullxSN; - WestProgEmptyxSP <= WestProgEmptyxSN; - WestNFCStatexDP <= WestNFCStatexDN; - WestNFCDataxDP <= WestNFCDataxDN; - WestNFCValidxSP <= WestNFCValidxSN; - end if; - end process UpdateRegxP; - - NorthNFCStatexP : process (NorthNFCDataxDP, NorthNFCStatexDP, - NorthNFCValidxSP, NorthProgEmptyxSN, - NorthProgEmptyxSP, NorthProgFullxSN, - NorthProgFullxSP, - NorthTXNFCS2MxD.ReadyxS) is - begin -- process NorthNFCStatexP - -- Default values - NorthNFCStatexDN <= NorthNFCStatexDP; - NorthNFCDataxDN <= NorthNFCDataxDP; - NorthNFCValidxSN <= NorthNFCValidxSP; - - case NorthNFCStatexDP is - when C_NFC_IDLE => - NorthNFCStatexDN <= C_NFC_IS_XON; - when C_NFC_IS_XON => - if NorthProgFullxSP = '0' and NorthProgFullxSN = '1' then --or - --(NorthRXFromFifoS2MxD.ReadyxS = '0') then - NorthNFCDataxDN <= C_NFC_XOFF; - NorthNFCValidxSN <= '1'; - NorthNFCStatexDN <= C_NFC_SEND_XOFF; - end if; - - when C_NFC_IS_XOFF => - if NorthProgEmptyxSP = '0' and NorthProgEmptyxSN = '1' then -- and - --(NorthRXFromFifoS2MxD.ReadyxS = '1') then - NorthNFCDataxDN <= C_NFC_XON; - NorthNFCValidxSN <= '1'; - NorthNFCStatexDN <= C_NFC_SEND_XON; - end if; - - when C_NFC_SEND_XON => - if NorthTXNFCS2MxD.ReadyxS = '1' then - NorthNFCValidxSN <= '0'; - NorthNFCStatexDN <= C_NFC_IS_XON; - end if; - - when C_NFC_SEND_XOFF => - if NorthTXNFCS2MxD.ReadyxS = '1' then - NorthNFCValidxSN <= '0'; - NorthNFCStatexDN <= C_NFC_IS_XOFF; - end if; - - when others => null; - end case; - - end process NorthNFCStatexP; - - EastNFCStatexP : process (EastNFCDataxDP, EastNFCStatexDP, - EastNFCValidxSP, EastProgEmptyxSN, - EastProgEmptyxSP, EastProgFullxSN, - EastProgFullxSP, - EastTXNFCS2MxD.ReadyxS) is - begin -- process EastNFCStatexP - -- Default values - EastNFCStatexDN <= EastNFCStatexDP; - EastNFCDataxDN <= EastNFCDataxDP; - EastNFCValidxSN <= EastNFCValidxSP; - - case EastNFCStatexDP is - when C_NFC_IDLE => - EastNFCStatexDN <= C_NFC_IS_XON; - when C_NFC_IS_XON => - if EastProgFullxSP = '0' and EastProgFullxSN = '1' then --or - --(EastRXFromFifoS2MxD.ReadyxS = '0') then - EastNFCDataxDN <= C_NFC_XOFF; - EastNFCValidxSN <= '1'; - EastNFCStatexDN <= C_NFC_SEND_XOFF; - end if; - - when C_NFC_IS_XOFF => - if EastProgEmptyxSP = '0' and EastProgEmptyxSN = '1' then -- and - --(EastRXFromFifoS2MxD.ReadyxS = '1') then - EastNFCDataxDN <= C_NFC_XON; - EastNFCValidxSN <= '1'; - EastNFCStatexDN <= C_NFC_SEND_XON; - end if; - - when C_NFC_SEND_XON => - if EastTXNFCS2MxD.ReadyxS = '1' then - EastNFCValidxSN <= '0'; - EastNFCStatexDN <= C_NFC_IS_XON; - end if; - - when C_NFC_SEND_XOFF => - if EastTXNFCS2MxD.ReadyxS = '1' then - EastNFCValidxSN <= '0'; - EastNFCStatexDN <= C_NFC_IS_XOFF; - end if; - - when others => null; - end case; - - end process EastNFCStatexP; - - SouthNFCStatexP : process (SouthNFCDataxDP, SouthNFCStatexDP, - SouthNFCValidxSP, SouthProgEmptyxSN, - SouthProgEmptyxSP, SouthProgFullxSN, - SouthProgFullxSP, - SouthTXNFCS2MxD.ReadyxS) is - begin -- process SouthNFCStatexP - -- Default values - SouthNFCStatexDN <= SouthNFCStatexDP; - SouthNFCDataxDN <= SouthNFCDataxDP; - SouthNFCValidxSN <= SouthNFCValidxSP; - - case SouthNFCStatexDP is - when C_NFC_IDLE => - SouthNFCStatexDN <= C_NFC_IS_XON; - when C_NFC_IS_XON => - if SouthProgFullxSP = '0' and SouthProgFullxSN = '1' then -- or - --(SouthRXFromFifoS2MxD.ReadyxS = '0') then - SouthNFCDataxDN <= C_NFC_XOFF; - SouthNFCValidxSN <= '1'; - SouthNFCStatexDN <= C_NFC_SEND_XOFF; - end if; - - when C_NFC_IS_XOFF => - if SouthProgEmptyxSP = '0' and SouthProgEmptyxSN = '1' then -- and - --(SouthRXFromFifoS2MxD.ReadyxS = '1') then - SouthNFCDataxDN <= C_NFC_XON; - SouthNFCValidxSN <= '1'; - SouthNFCStatexDN <= C_NFC_SEND_XON; - end if; - - when C_NFC_SEND_XON => - if SouthTXNFCS2MxD.ReadyxS = '1' then - SouthNFCValidxSN <= '0'; - SouthNFCStatexDN <= C_NFC_IS_XON; - end if; - - when C_NFC_SEND_XOFF => - if SouthTXNFCS2MxD.ReadyxS = '1' then - SouthNFCValidxSN <= '0'; - SouthNFCStatexDN <= C_NFC_IS_XOFF; - end if; - - when others => null; - end case; - - end process SouthNFCStatexP; - - WestNFCStatexP : process (WestNFCDataxDP, WestNFCStatexDP, - WestNFCValidxSP, WestProgEmptyxSN, - WestProgEmptyxSP, WestProgFullxSN, - WestProgFullxSP, - WestTXNFCS2MxD.ReadyxS) is - begin -- process WestNFCStatexP - -- Default values - WestNFCStatexDN <= WestNFCStatexDP; - WestNFCDataxDN <= WestNFCDataxDP; - WestNFCValidxSN <= WestNFCValidxSP; - - case WestNFCStatexDP is - when C_NFC_IDLE => - WestNFCStatexDN <= C_NFC_IS_XON; - when C_NFC_IS_XON => - if WestProgFullxSP = '0' and WestProgFullxSN = '1' then --or - --(WestRXFromFifoS2MxD.ReadyxS = '0') then - WestNFCDataxDN <= C_NFC_XOFF; - WestNFCValidxSN <= '1'; - WestNFCStatexDN <= C_NFC_SEND_XOFF; - end if; - - when C_NFC_IS_XOFF => - if WestProgEmptyxSP = '0' and WestProgEmptyxSN = '1' then -- and - --(WestRXFromFifoS2MxD.ReadyxS = '1') then - WestNFCDataxDN <= C_NFC_XON; - WestNFCValidxSN <= '1'; - WestNFCStatexDN <= C_NFC_SEND_XON; - end if; - - when C_NFC_SEND_XON => - if WestTXNFCS2MxD.ReadyxS = '1' then - WestNFCValidxSN <= '0'; - WestNFCStatexDN <= C_NFC_IS_XON; - end if; - - when C_NFC_SEND_XOFF => - if WestTXNFCS2MxD.ReadyxS = '1' then - WestNFCValidxSN <= '0'; - WestNFCStatexDN <= C_NFC_IS_XOFF; - end if; - - when others => null; - end case; - - end process WestNFCStatexP; - - end block BackPressurexB; + AuroraDRPM2SxDI => AuroraDRPM2SxD, + AuroraDRPS2MxDO => AuroraDRPS2MxD, + -- RX Fifo Status + -- North + NorthRXFifoStatusxDO => NorthRXFifoStatusxD, + -- East + EastRXFifoStatusxDO => EastRXFifoStatusxD, + -- South + SouthRXFifoStatusxDO => SouthRXFifoStatusxD, + -- West + WestRXFifoStatusxDO => WestRXFifoStatusxD, + -- Axis Fifo Error + AxisFifoErrorxDO => AxisFifoErrorxD); end block GTPhyxB; @@ -1580,66 +1144,214 @@ begin -- end block ZynqRegBankxB; DebugxB : block is - begin -- block DebugxB - ClkEnxAS : ClkEnxS <= not AuroraClkMasterxC.PllNotLockedxS; + -- RX Fifo reset 196 cycles + constant C_RX_FIFO_RST_DLY_TICKS : integer := 200; + + type t_read_phy_states is (E_READ_PHY_IDLE, E_READ_PHY_S0, E_READ_PHY_S1, E_READ_PHY_S2); + type t_write_phy_states is (E_WRITE_PHY_IDLE, E_WRITE_PHY_W0, E_WRITE_PHY_W1, + E_WRITE_PHY_W2, E_WRITE_PHY_W3, E_WRITE_PHY_W4, + E_WRITE_PHY_W5, E_WRITE_PHY_W6, E_WRITE_PHY_W7); + -- North - NorthTXDataxAS : NorthTXM2SxD.DataxD <= DataCounterxD; - NorthTXKeepxAS : NorthTXM2SxD.KeepxD <= (others => '1'); - NorthTXLastxAS : NorthTXM2SxD.LastxS <= '0'; - NorthTXValidxAS : NorthTXM2SxD.ValidxS <= not DebugCounterResetxR; - -- East - EastTXDataxAS : EastTXM2SxD.DataxD <= DataCounterxD; - EastTXKeepxAS : EastTXM2SxD.KeepxD <= (others => '1'); - EastTXLastxAS : EastTXM2SxD.LastxS <= '0'; - EastTXValidxAS : EastTXM2SxD.ValidxS <= not DebugCounterResetxR; + signal NorthReadPhyStatexDN : t_read_phy_states := E_READ_PHY_IDLE; + signal NorthReadPhyStatexDP : t_read_phy_states := E_READ_PHY_IDLE; + signal NorthWritePhyStatexDN : t_write_phy_states := E_WRITE_PHY_IDLE; + signal NorthWritePhyStatexDP : t_write_phy_states := E_WRITE_PHY_IDLE; + -- East + signal EastReadPhyStatexDN : t_read_phy_states := E_READ_PHY_IDLE; + signal EastReadPhyStatexDP : t_read_phy_states := E_READ_PHY_IDLE; + signal EastWritePhyStatexDN : t_write_phy_states := E_WRITE_PHY_IDLE; + signal EastWritePhyStatexDP : t_write_phy_states := E_WRITE_PHY_IDLE; -- South - SouthTXDataxAS : SouthTXM2SxD.DataxD <= DataCounterxD; - SouthTXKeepxAS : SouthTXM2SxD.KeepxD <= (others => '1'); - SouthTXLastxAS : SouthTXM2SxD.LastxS <= '0'; - SouthTXValidxAS : SouthTXM2SxD.ValidxS <= not DebugCounterResetxR; + signal SouthReadPhyStatexDN : t_read_phy_states := E_READ_PHY_IDLE; + signal SouthReadPhyStatexDP : t_read_phy_states := E_READ_PHY_IDLE; + signal SouthWritePhyStatexDN : t_write_phy_states := E_WRITE_PHY_IDLE; + signal SouthWritePhyStatexDP : t_write_phy_states := E_WRITE_PHY_IDLE; -- West - WestTXDataxAS : WestTXM2SxD.DataxD <= DataCounterxD; - WestTXKeepxAS : WestTXM2SxD.KeepxD <= (others => '1'); - WestTXLastxAS : WestTXM2SxD.LastxS <= '0'; - WestTXValidxAS : WestTXM2SxD.ValidxS <= not DebugCounterResetxR; + signal WestReadPhyStatexDN : t_read_phy_states := E_READ_PHY_IDLE; + signal WestReadPhyStatexDP : t_read_phy_states := E_READ_PHY_IDLE; + signal WestWritePhyStatexDN : t_write_phy_states := E_WRITE_PHY_IDLE; + signal WestWritePhyStatexDP : t_write_phy_states := E_WRITE_PHY_IDLE; + + attribute mark_debug : string; + attribute keep : string; + -- + attribute mark_debug of NorthWritePhyStatexDP : signal is "true"; + attribute keep of NorthWritePhyStatexDP : signal is "true"; + -- attribute mark_debug of EastWritePhyStatexDP : signal is "true"; + -- attribute keep of EastWritePhyStatexDP : signal is "true"; + attribute mark_debug of SouthWritePhyStatexDP : signal is "true"; + attribute keep of SouthWritePhyStatexDP : signal is "true"; + -- attribute mark_debug of WestWritePhyStatexDP : signal is "true"; + -- attribute keep of WestWritePhyStatexDP : signal is "true"; - DataCounterxI : entity work.data_counter - port map ( - clk => AuroraClkMasterxC.UserClkxC, - ce => ClkEnxS, - sclr => DebugCounterResetxR, - q => DataCounterxD); + begin -- block DebugxB + + -- RX Fifo reset 196 cycles + -- Clock and Resets + -- RX Fifo + NorthFifoResetxAS : RXResetxR.FifoResetxR.NorthxR <= + '1' when + (DebugRXFifoResetxR.NorthxR = '1') or + (AuroraStatusxD.LaneUpxD(0)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(0) = '0') else + '0'; + EastFifoResetxAS : RXResetxR.FifoResetxR.EastxR <= + '1' when + (DebugRXFifoResetxR.EastxR = '1') or + (AuroraStatusxD.LaneUpxD(1)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(1) = '0') else + '0'; + SouthFifoResetxAS : RXResetxR.FifoResetxR.SouthxR <= + '1' when + (DebugRXFifoResetxR.SouthxR = '1') or + (AuroraStatusxD.LaneUpxD(2)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(2) = '0') else + '0'; + WestFifoResetxAS : RXResetxR.FifoResetxR.WestxR <= + '1' when + (DebugRXFifoResetxR.WestxR = '1') or + (AuroraStatusxD.LaneUpxD(3)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(3) = '0') else + '0'; + -- Back pressure + NorthBackPressureResetxAS : RXResetxR.BackPressureResetxR.NorthxR <= + '1' when + (DebugBackPressureResetxR.NorthxR = '1') or + (AuroraStatusxD.LaneUpxD(0)(0) = '0') or + (RXFifoResetDonexD.NorthxS = '0') or + (RXFifoResetDoneDelayedxD.NorthxS = '0') or + (AuroraStatusxD.ChannelUpxD(0) = '0') else + '0'; + EastBackPressureResetxAS : RXResetxR.BackPressureResetxR.EastxR <= + '1' when + (DebugBackPressureResetxR.EastxR = '1') or + (AuroraStatusxD.LaneUpxD(1)(0) = '0') or + (RXFifoResetDonexD.EastxS = '0') or + (RXFifoResetDoneDelayedxD.EastxS = '0') or + (AuroraStatusxD.ChannelUpxD(1) = '0') else + '0'; + SouthBackPressureResetxAS : RXResetxR.BackPressureResetxR.SouthxR <= + '1' when + (DebugBackPressureResetxR.SouthxR = '1') or + (RXFifoResetDonexD.SouthxS = '0') or + (RXFifoResetDoneDelayedxD.SouthxS = '0') or + (AuroraStatusxD.LaneUpxD(2)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(2) = '0') else + '0'; + WestBackPressureResetxAS : RXResetxR.BackPressureResetxR.WestxR <= + '1' when + (DebugBackPressureResetxR.WestxR = '1') or + (AuroraStatusxD.LaneUpxD(3)(0) = '0') or + (RXFifoResetDonexD.WestxS = '0') or + (RXFifoResetDoneDelayedxD.WestxS = '0') or + (AuroraStatusxD.ChannelUpxD(3) = '0') else + '0'; + + NorthUpdateRegxP : process (AuroraClkMasterxC.UserClkxC, + AuroraStatusxD.ChannelUpxD(0), + AuroraStatusxD.LaneUpxD(0)(0), + DebugCounterResetxR.NorthxR, + RXFifoResetDoneDelayedxD.NorthxS, + RXFifoResetDonexD.NorthxS) is + begin -- process NorthUpdateRegxP + if (DebugCounterResetxR.NorthxR = '1') or + (AuroraStatusxD.LaneUpxD(0)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(0) = '0') or + (RXFifoResetDonexD.NorthxS = '0') or + (RXFifoResetDoneDelayedxD.NorthxS = '0') then + NorthReadPhyStatexDP <= E_READ_PHY_IDLE; + NorthWritePhyStatexDP <= E_WRITE_PHY_IDLE; + NorthDataCounterxDP <= (others => '0'); + elsif rising_edge(AuroraClkMasterxC.UserClkxC) then + NorthReadPhyStatexDP <= NorthReadPhyStatexDN; + NorthWritePhyStatexDP <= NorthWritePhyStatexDN; + NorthDataCounterxDP <= NorthDataCounterxDN; + end if; + end process NorthUpdateRegxP; + + EastUpdateRegxP : process (AuroraClkMasterxC.UserClkxC, + AuroraStatusxD.ChannelUpxD(1), + AuroraStatusxD.LaneUpxD(1)(0), + DebugCounterResetxR.EastxR, + RXFifoResetDoneDelayedxD.EastxS, + RXFifoResetDonexD.EastxS) is + begin -- process EastUpdateRegxP + if (DebugCounterResetxR.EastxR = '1') or + (AuroraStatusxD.LaneUpxD(1)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(1) = '0') or + (RXFifoResetDonexD.EastxS = '0') or + (RXFifoResetDoneDelayedxD.EastxS = '0') then + EastReadPhyStatexDP <= E_READ_PHY_IDLE; + EastWritePhyStatexDP <= E_WRITE_PHY_IDLE; + EastDataCounterxDP <= (others => '0'); + elsif rising_edge(AuroraClkMasterxC.UserClkxC) then + EastReadPhyStatexDP <= EastReadPhyStatexDN; + EastWritePhyStatexDP <= EastWritePhyStatexDN; + EastDataCounterxDP <= EastDataCounterxDN; + end if; + end process EastUpdateRegxP; + + SouthUpdateRegxP : process (AuroraClkMasterxC.UserClkxC, + AuroraStatusxD.ChannelUpxD(2), + AuroraStatusxD.LaneUpxD(2)(0), + DebugCounterResetxR.SouthxR, + RXFifoResetDoneDelayedxD.SouthxS, + RXFifoResetDonexD.SouthxS) is + begin -- process SouthUpdateRegxP + if (DebugCounterResetxR.SouthxR = '1') or + (AuroraStatusxD.LaneUpxD(2)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(2) = '0') or + (RXFifoResetDonexD.SouthxS = '0') or + (RXFifoResetDoneDelayedxD.SouthxS = '0') then + SouthReadPhyStatexDP <= E_READ_PHY_IDLE; + SouthWritePhyStatexDP <= E_WRITE_PHY_IDLE; + SouthDataCounterxDP <= (others => '0'); + elsif rising_edge(AuroraClkMasterxC.UserClkxC) then + SouthReadPhyStatexDP <= SouthReadPhyStatexDN; + SouthWritePhyStatexDP <= SouthWritePhyStatexDN; + SouthDataCounterxDP <= SouthDataCounterxDN; + end if; + end process SouthUpdateRegxP; + + WestUpdateRegxP : process (AuroraClkMasterxC.UserClkxC, + AuroraStatusxD.ChannelUpxD(3), + AuroraStatusxD.LaneUpxD(3)(0), + DebugCounterResetxR.WestxR, + RXFifoResetDoneDelayedxD.WestxS, + RXFifoResetDonexD.WestxS) is + begin -- process WestUpdateRegxP + if (DebugCounterResetxR.WestxR = '1') or + (AuroraStatusxD.LaneUpxD(3)(0) = '0') or + (AuroraStatusxD.ChannelUpxD(3) = '0') or + (RXFifoResetDonexD.WestxS = '0') or + (RXFifoResetDoneDelayedxD.WestxS = '0') then + WestReadPhyStatexDP <= E_READ_PHY_IDLE; + WestWritePhyStatexDP <= E_WRITE_PHY_IDLE; + WestDataCounterxDP <= (others => '0'); + elsif rising_edge(AuroraClkMasterxC.UserClkxC) then + WestReadPhyStatexDP <= WestReadPhyStatexDN; + WestWritePhyStatexDP <= WestWritePhyStatexDN; + WestDataCounterxDP <= WestDataCounterxDN; + end if; + end process WestUpdateRegxP; VioUserResetsxI : entity work.vio_user_resets port map ( - clk => AuroraClkMasterxC.UserClkxC, - probe_out0(0) => DebugCounterResetxR, - probe_out1(0) => DebugRXFifoResetxR, - probe_out2(0) => DebugBackPressureResetxR, - probe_out3 => open, - probe_out4 => open); - - -- VioAxiCntCtrlxI : entity work.vio_axi_cnt_ctrl - -- port map ( - -- clk => AuroraClkMasterxC.UserClkxC, - -- -- North - -- probe_in0 => NorthRXfromPhyTXfromFifoM2SxD.DataxD, -- 32 bits - -- probe_in1(0) => NorthRXfromPhyTXfromFifoM2SxD.ValidxS, - -- probe_in2(0) => '0', --NorthTXS2MxD.ReadyxS, - -- -- East - -- probe_in3 => EastRXfromPhyTXfromFifoM2SxD.DataxD, -- 32 bits - -- probe_in4(0) => EastRXfromPhyTXfromFifoM2SxD.ValidxS, - -- probe_in5(0) => '0', --EastTXS2MxD.ReadyxS, - -- -- South - -- probe_in6 => SouthRXfromPhyTXfromFifoM2SxD.DataxD, -- 32 bits - -- probe_in7(0) => SouthRXfromPhyTXfromFifoM2SxD.ValidxS, - -- probe_in8(0) => '0', --SouthTXS2MxD.ReadyxS, - -- -- West - -- probe_in9 => WestRXfromPhyTXfromFifoM2SxD.DataxD, -- 32 bits - -- probe_in10(0) => WestRXfromPhyTXfromFifoM2SxD.ValidxS, - -- probe_in11(0) => '0', --WestTXS2MxD.ReadyxS, - -- probe_out0(0) => open); --CntRstxR); + clk => AuroraClkMasterxC.UserClkxC, + probe_out0(0) => DebugCounterResetxR.NorthxR, + probe_out1(0) => DebugCounterResetxR.EastxR, + probe_out2(0) => DebugCounterResetxR.SouthxR, + probe_out3(0) => DebugCounterResetxR.WestxR, + probe_out4(0) => DebugBackPressureResetxR.NorthxR, + probe_out5(0) => DebugBackPressureResetxR.EastxR, + probe_out6(0) => DebugBackPressureResetxR.SouthxR, + probe_out7(0) => DebugBackPressureResetxR.WestxR, + probe_out8(0) => DebugRXFifoResetxR.NorthxR, + probe_out9(0) => DebugRXFifoResetxR.EastxR, + probe_out10(0) => DebugRXFifoResetxR.SouthxR, + probe_out11(0) => DebugRXFifoResetxR.WestxR); VioStatusxI : entity work.vio_status port map ( @@ -1677,6 +1389,379 @@ begin probe_in26(0) => AuroraStatusxD.RXResetDoneOutxD(3), probe_in27(0) => AuroraStatusxD.TXResetDoneOutxD(3)); + NorthWriteTXPhyxP : process (NorthDataCounterxDP, + NorthTXS2MxD.ReadyxS, + NorthWritePhyStatexDP) is + begin -- process NorthWriteTXPhyxP + -- Default values + NorthWritePhyStatexDN <= NorthWritePhyStatexDP; + NorthDataCounterxDN <= NorthDataCounterxDP; + NorthTXM2SxD.DataxD <= (others => '0'); + NorthTXM2SxD.KeepxD <= (others => '1'); + NorthTXM2SxD.ValidxS <= '0'; + NorthTXM2SxD.LastxS <= '0'; + + case NorthWritePhyStatexDP is + when E_WRITE_PHY_IDLE => + NorthWritePhyStatexDN <= E_WRITE_PHY_W0; + + when E_WRITE_PHY_W0 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W1; + end if; + + when E_WRITE_PHY_W1 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W2; + end if; + + when E_WRITE_PHY_W2 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W3; + end if; + + when E_WRITE_PHY_W3 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W4; + end if; + + when E_WRITE_PHY_W4 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W5; + end if; + + when E_WRITE_PHY_W5 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W6; + end if; + when E_WRITE_PHY_W6 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W7; + end if; + + when E_WRITE_PHY_W7 => + NorthTXM2SxD.DataxD <= std_logic_vector(NorthDataCounterxDP); + NorthTXM2SxD.ValidxS <= '1'; + NorthTXM2SxD.LastxS <= '1'; + + if NorthTXS2MxD.ReadyxS = '1' then + NorthWritePhyStatexDN <= E_WRITE_PHY_W0; + NorthDataCounterxDN <= NorthDataCounterxDP + 1; + end if; + + when others => null; + end case; + + end process NorthWriteTXPhyxP; + + EastWriteTXPhyxP : process (EastDataCounterxDP, + EastTXS2MxD.ReadyxS, + EastWritePhyStatexDP) is + begin -- process EastWriteTXPhyxP + -- Default values + EastWritePhyStatexDN <= EastWritePhyStatexDP; + EastDataCounterxDN <= EastDataCounterxDP; + EastTXM2SxD.DataxD <= (others => '0'); + EastTXM2SxD.KeepxD <= (others => '1'); + EastTXM2SxD.ValidxS <= '0'; + EastTXM2SxD.LastxS <= '0'; + + case EastWritePhyStatexDP is + when E_WRITE_PHY_IDLE => + EastWritePhyStatexDN <= E_WRITE_PHY_W0; + + when E_WRITE_PHY_W0 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W1; + end if; + + when E_WRITE_PHY_W1 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W2; + end if; + + when E_WRITE_PHY_W2 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W3; + end if; + + when E_WRITE_PHY_W3 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W4; + end if; + + when E_WRITE_PHY_W4 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W5; + end if; + + when E_WRITE_PHY_W5 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W6; + end if; + + when E_WRITE_PHY_W6 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W7; + end if; + + when E_WRITE_PHY_W7 => + EastTXM2SxD.DataxD <= std_logic_vector(EastDataCounterxDP); + EastTXM2SxD.ValidxS <= '1'; + EastTXM2SxD.LastxS <= '1'; + + if EastTXS2MxD.ReadyxS = '1' then + EastWritePhyStatexDN <= E_WRITE_PHY_W0; + EastDataCounterxDN <= EastDataCounterxDP + 1; + end if; + + when others => null; + end case; + + end process EastWriteTXPhyxP; + + SouthWriteTXPhyxP : process (SouthDataCounterxDP, + SouthTXS2MxD.ReadyxS, + SouthWritePhyStatexDP) is + begin -- process SouthWriteTXPhyxP + -- Default values + SouthWritePhyStatexDN <= SouthWritePhyStatexDP; + SouthDataCounterxDN <= SouthDataCounterxDP; + SouthTXM2SxD.DataxD <= (others => '0'); + SouthTXM2SxD.KeepxD <= (others => '1'); + SouthTXM2SxD.ValidxS <= '0'; + SouthTXM2SxD.LastxS <= '0'; + + case SouthWritePhyStatexDP is + when E_WRITE_PHY_IDLE => + SouthWritePhyStatexDN <= E_WRITE_PHY_W0; + + when E_WRITE_PHY_W0 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W1; + end if; + + when E_WRITE_PHY_W1 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W2; + end if; + + when E_WRITE_PHY_W2 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W3; + end if; + + when E_WRITE_PHY_W3 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W4; + end if; + + when E_WRITE_PHY_W4 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W5; + end if; + + when E_WRITE_PHY_W5 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W6; + end if; + + when E_WRITE_PHY_W6 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W7; + end if; + + when E_WRITE_PHY_W7 => + SouthTXM2SxD.DataxD <= std_logic_vector(SouthDataCounterxDP); + SouthTXM2SxD.ValidxS <= '1'; + SouthTXM2SxD.LastxS <= '1'; + + if SouthTXS2MxD.ReadyxS = '1' then + SouthWritePhyStatexDN <= E_WRITE_PHY_W0; + SouthDataCounterxDN <= SouthDataCounterxDP + 1; + end if; + + when others => null; + end case; + + end process SouthWriteTXPhyxP; + + WestWriteTXPhyxP : process (WestDataCounterxDP, + WestTXS2MxD.ReadyxS, + WestWritePhyStatexDP) is + begin -- process WestWriteTXPhyxP + -- Default values + WestWritePhyStatexDN <= WestWritePhyStatexDP; + WestDataCounterxDN <= WestDataCounterxDP; + WestTXM2SxD.DataxD <= (others => '0'); + WestTXM2SxD.KeepxD <= (others => '1'); + WestTXM2SxD.ValidxS <= '0'; + WestTXM2SxD.LastxS <= '0'; + + case WestWritePhyStatexDP is + when E_WRITE_PHY_IDLE => + WestWritePhyStatexDN <= E_WRITE_PHY_W0; + + when E_WRITE_PHY_W0 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W1; + end if; + + when E_WRITE_PHY_W1 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W2; + end if; + + when E_WRITE_PHY_W2 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W3; + end if; + + when E_WRITE_PHY_W3 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W4; + end if; + + when E_WRITE_PHY_W4 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W5; + end if; + + when E_WRITE_PHY_W5 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W6; + end if; + + when E_WRITE_PHY_W6 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W7; + end if; + + when E_WRITE_PHY_W7 => + WestTXM2SxD.DataxD <= std_logic_vector(WestDataCounterxDP); + WestTXM2SxD.ValidxS <= '1'; + WestTXM2SxD.LastxS <= '1'; + + if WestTXS2MxD.ReadyxS = '1' then + WestWritePhyStatexDN <= E_WRITE_PHY_W0; + WestDataCounterxDN <= WestDataCounterxDP + 1; + end if; + + when others => null; + end case; + + end process WestWriteTXPhyxP; + + -- NorthReadRXPhyxP : process (NorthRXM2SxD.ValidxS, ReadPhyStatexDP) is + -- begin -- process NorthReadRXPhyxP + -- -- Default value + -- ReadPhyStatexDN <= ReadPhyStatexDP; + -- NorthRXS2MxD.ReadyxS <= '0'; + + -- case ReadPhyStatexDP is + -- when E_READ_PHY_IDLE => + -- ReadPhyStatexDN <= E_READ_PHY_S0; + -- when E_READ_PHY_S0 => + -- if NorthRXM2SxD.ValidxS = '1' then + -- ReadPhyStatexDN <= E_READ_PHY_S1; + -- end if; + -- when E_READ_PHY_S1 => + -- if NorthRXM2SxD.ValidxS = '1' then + -- ReadPhyStatexDN <= E_READ_PHY_S2; + -- end if; + -- when E_READ_PHY_S2 => + -- if NorthRXM2SxD.ValidxS = '1' then + -- NorthRXS2MxD.ReadyxS <= '1'; + -- ReadPhyStatexDN <= E_READ_PHY_S0; + -- end if; + -- when others => null; + -- end case; + -- end process NorthReadRXPhyxP; + end block DebugxB; end block ProgrammableLogicxB; diff --git a/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy.vhd b/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy.vhd index 7a9f8ca18026cf73405faa252061f128a1cb16b6..30a18dd36a31b3a037c3ad05af5bbc4f35c57454 100644 --- a/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy.vhd +++ b/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.2 -- Description: scalp_aurora_phy -- --- Last update: 2020-10-13 +-- Last update: 2020-11-25 -- --------------------------------------------------------------------------------- @@ -37,576 +37,1298 @@ use work.aurora_drp_pkg.all; entity scalp_aurora_phy is generic ( - C_DEBUG_MODE : boolean := false); + C_DEBUG_MODE : boolean := false; + C_RX_FIFO_MODE : boolean := true; + C_RX_FIFO_RST_DONE_DLY_TICKS : integer := 100); port ( + -- Clocks -- GTP Ref Clocks - GTRefClkxCI : in t_gt_ref_slave_clk; + GTRefClkxCI : in t_gt_ref_slave_clk; -- Aurora System and GTP Clocks - AuroraClkxCI : in t_aurora_slave_clk; - AuroraClkxCO : out t_aurora_master_clk; + AuroraClkxCI : in t_aurora_slave_clk; + AuroraClkxCO : out t_aurora_master_clk; + -- Reset -- Aurora Reset - AuroraResetxRI : in t_aurora_slave_reset; - AuroraResetxRO : out t_aurora_master_link_reset; + AuroraResetxRI : in t_aurora_slave_reset; + AuroraResetxRO : out t_aurora_master_link_reset; + -- RX Fifo and Back Pressure Reset + RXResetxRI : in t_rx_reset; + RXFifoResetDonexDO : out t_rx_fifo_reset_done; + RXFifoResetDoneDelayedxDO : out t_rx_fifo_reset_done; + -- Back Pressure Reset -- GTP Serial IO -- North - GTPFromNorthxDI : in t_aurora_gtp_diff_io_rx; - GTPToNorthxDO : out t_aurora_gtp_diff_io_tx; + GTPFromNorthxDI : in t_aurora_gtp_diff_io_rx; + GTPToNorthxDO : out t_aurora_gtp_diff_io_tx; -- East - GTPFromEastxDI : in t_aurora_gtp_diff_io_rx; - GTPToEastxDO : out t_aurora_gtp_diff_io_tx; + GTPFromEastxDI : in t_aurora_gtp_diff_io_rx; + GTPToEastxDO : out t_aurora_gtp_diff_io_tx; -- South - GTPFromSouthxDI : in t_aurora_gtp_diff_io_rx; - GTPToSouthxDO : out t_aurora_gtp_diff_io_tx; + GTPFromSouthxDI : in t_aurora_gtp_diff_io_rx; + GTPToSouthxDO : out t_aurora_gtp_diff_io_tx; -- West - GTPFromWestxDI : in t_aurora_gtp_diff_io_rx; - GTPToWestxDO : out t_aurora_gtp_diff_io_tx; + GTPFromWestxDI : in t_aurora_gtp_diff_io_rx; + GTPToWestxDO : out t_aurora_gtp_diff_io_tx; -- Axi4 Framing Interface -- North - NorthRXM2SxDO : out t_axi4m2s; - NorthTXM2SxDI : in t_axi4m2s; - NorthTXS2MxDO : out t_axi4s2m; + NorthRXM2SxDO : out t_axi4m2s; + NorthRXS2MxDI : in t_axi4s2m; + NorthTXM2SxDI : in t_axi4m2s; + NorthTXS2MxDO : out t_axi4s2m; -- East - EastRXM2SxDO : out t_axi4m2s; - EastTXM2SxDI : in t_axi4m2s; - EastTXS2MxDO : out t_axi4s2m; + EastRXM2SxDO : out t_axi4m2s; + EastRXS2MxDI : in t_axi4s2m; + EastTXM2SxDI : in t_axi4m2s; + EastTXS2MxDO : out t_axi4s2m; -- South - SouthRXM2SxDO : out t_axi4m2s; - SouthTXM2SxDI : in t_axi4m2s; - SouthTXS2MxDO : out t_axi4s2m; + SouthRXM2SxDO : out t_axi4m2s; + SouthRXS2MxDI : in t_axi4s2m; + SouthTXM2SxDI : in t_axi4m2s; + SouthTXS2MxDO : out t_axi4s2m; -- West - WestRXM2SxDO : out t_axi4m2s; - WestTXM2SxDI : in t_axi4m2s; - WestTXS2MxDO : out t_axi4s2m; + WestRXM2SxDO : out t_axi4m2s; + WestRXS2MxDI : in t_axi4s2m; + WestTXM2SxDI : in t_axi4m2s; + WestTXS2MxDO : out t_axi4s2m; -- Axi4 Framing UFC Interface -- North - NorthRXUFCM2SxDO : out t_axi4ufcm2s_rx; - NorthTXUFCM2SxDI : in t_axi4ufcm2s_tx; - NorthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + NorthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + NorthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + NorthTXUFCS2MxDO : out t_axi4ufcs2m_tx; -- East - EastRXUFCM2SxDO : out t_axi4ufcm2s_rx; - EastTXUFCM2SxDI : in t_axi4ufcm2s_tx; - EastTXUFCS2MxDO : out t_axi4ufcs2m_tx; + EastRXUFCM2SxDO : out t_axi4ufcm2s_rx; + EastTXUFCM2SxDI : in t_axi4ufcm2s_tx; + EastTXUFCS2MxDO : out t_axi4ufcs2m_tx; -- South - SouthRXUFCM2SxDO : out t_axi4ufcm2s_rx; - SouthTXUFCM2SxDI : in t_axi4ufcm2s_tx; - SouthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + SouthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + SouthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + SouthTXUFCS2MxDO : out t_axi4ufcs2m_tx; -- West - WestRXUFCM2SxDO : out t_axi4ufcm2s_rx; - WestTXUFCM2SxDI : in t_axi4ufcm2s_tx; - WestTXUFCS2MxDO : out t_axi4ufcs2m_tx; + WestRXUFCM2SxDO : out t_axi4ufcm2s_rx; + WestTXUFCM2SxDI : in t_axi4ufcm2s_tx; + WestTXUFCS2MxDO : out t_axi4ufcs2m_tx; + -- Axi4 Framing NFC Interface + -- North + NorthRXNFCM2SxDO : out t_axi4nfcm2s; + NorthTXNFCM2SxDI : in t_axi4nfcm2s; + NorthTXNFCS2MxDO : out t_axi4nfcs2m; + -- East + EastRXNFCM2SxDO : out t_axi4nfcm2s; + EastTXNFCM2SxDI : in t_axi4nfcm2s; + EastTXNFCS2MxDO : out t_axi4nfcs2m; + -- South + SouthRXNFCM2SxDO : out t_axi4nfcm2s; + SouthTXNFCM2SxDI : in t_axi4nfcm2s; + SouthTXNFCS2mxDO : out t_axi4nfcs2m; + -- West + WestRXNFCM2SxDO : out t_axi4nfcm2s; + WestTXNFCM2SxDI : in t_axi4nfcm2s; + WestTXNFCS2MxDO : out t_axi4nfcs2m; -- Aurora Ctrl + Status - AuroraCtrlxDI : in t_aurora_control; - AuroraStatusxDO : out t_aurora_status; + AuroraCtrlxDI : in t_aurora_control; + AuroraStatusxDO : out t_aurora_status; -- DRP Port - AuroraDRPM2SxDI : in t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0); - AuroraDRPS2MxDO : out t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0)); + AuroraDRPM2SxDI : in t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0); + AuroraDRPS2MxDO : out t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0); + -- RX Fifo Status + -- North + NorthRXFifoStatusxDO : out t_axi4fifo_status; + -- East + EastRXFifoStatusxDO : out t_axi4fifo_status; + -- South + SouthRXFifoStatusxDO : out t_axi4fifo_status; + -- West + WestRXFifoStatusxDO : out t_axi4fifo_status; + -- Axis Fifo Error + AxisFifoErrorxDO : out t_axi4fifo_error); end scalp_aurora_phy; architecture arch of scalp_aurora_phy is - constant C_SIM_GTRESET_SPEEDUP : string := "false"; - constant C_NUM_PLL : integer := 1; - - component reset_logic is - port ( - UserClkxCI : in std_logic; - InitClkxCI : in std_logic; - ResetxRI : in std_logic; - GTResetxRI : in std_logic; - SystemResetxRO : out std_logic; - GTResetxRO : out std_logic); - end component reset_logic; - - component clock_module is - generic ( - C_NUM_PLL : integer); - port ( - InitClkxCI : in std_logic; - InitClkxCO : out std_logic; - GTClkxCI : in std_logic_vector((C_NUM_PLL - 1) downto 0); - GTClkLockedxDI : in std_logic_vector((C_NUM_PLL - 1) downto 0); - UserClkxCO : out std_logic_vector((C_NUM_PLL - 1) downto 0); - SyncClkxCO : out std_logic_vector((C_NUM_PLL - 1) downto 0); - PLLNotLockedxDO : out std_logic_vector((C_NUM_PLL - 1) downto 0)); - end component clock_module; - - component gt_common is - generic ( - C_SIM_GTRESET_SPEEDUP : string); - port ( - GT0GTRefClk0xCI : in std_logic; - GT0PLL0LockxSO : out std_logic; - GT0PLL1LockxSO : out std_logic; - GT0PLL0LockDetClkxCI : in std_logic; - GT0PLL0RefClkLostxSO : out std_logic; - GT0PLL0ClkxCO : out std_logic; - GT0PLL1ClkxCO : out std_logic; - GT0PLL0RefClkxCO : out std_logic; - GT0PLL1RefClkxCO : out std_logic; - GT0PLL0ResetxRI : in std_logic); - end component gt_common; - - -- From Aurora Clock Module - signal AuroraSlaveClkxC : t_aurora_slave_clk := C_AURORA_NO_SLAVE_CLK; - signal AuroraMasterClkxC : t_aurora_master_clk := C_AURORA_NO_MASTER_CLK; - -- From GT Common Module - signal GTCommonSlaveClkxC : t_gt_common_slave_clk := C_GT_COMMON_NO_SLAVE_CLK; - signal GTCommonMasterClkxC : t_gt_common_master_clk := C_GT_COMMON_NO_MASTER_CLK; - -- From Aurora Reset Logic - signal AuroraSlaveResetxR : t_aurora_slave_reset := C_AURORA_NO_SLAVE_RESET; - signal AuroraMasterResetxR : t_aurora_master_reset := C_AURORA_NO_MASTER_RESET; - -- From Aurora Core - signal AuroraMasterLinkResetxR : t_aurora_master_link_reset := C_AURORA_NO_MASTER_LINK_RESET; - signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal NorthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal NorthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal EastRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal EastTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal EastTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal SouthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal SouthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal SouthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal WestRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; - signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; - signal NorthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal NorthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal NorthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal EastRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal EastTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal EastTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal SouthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal SouthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal SouthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal WestRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; - signal WestTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; - signal WestTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; - signal GTPFromNorthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToNorthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromEastxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToEastxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromSouthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToSouthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal GTPFromWestxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; - signal GTPToWestxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; - signal AuroraCtrlxD : t_aurora_control := C_AURORA_NO_CONTROL; - signal AuroraStatusxD : t_aurora_status := C_AURORA_NO_STATUS; - signal AuroraDRPM2SxD : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S); - signal AuroraDRPS2MxD : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M); + signal GTRefClkxC : t_gt_ref_slave_clk := C_GT_REF_NO_SLAVE_CLK; + signal AuroraClkInxC : t_aurora_slave_clk := C_AURORA_NO_SLAVE_CLK; + signal AuroraClkOutxC : t_aurora_master_clk := C_AURORA_NO_MASTER_CLK; + signal AuroraResetInxR : t_aurora_slave_reset := C_AURORA_NO_SLAVE_RESET; + signal AuroraResetOutxR : t_aurora_master_link_reset := C_AURORA_NO_MASTER_LINK_RESET; + signal RXResetxR : t_rx_reset := C_NO_RX_RESET; + signal RXFifoRstxRAN : t_rx_fifo_reset := C_NO_RX_FIFO_RESET; + signal RXFifoResetDonexD : t_rx_fifo_reset_done := C_NO_RX_FIFO_RESET_DONE; + signal RXFifoResetDoneDelayedxD : t_rx_fifo_reset_done := C_NO_RX_FIFO_RESET_DONE; + signal GTPFromNorthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToNorthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromEastxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToEastxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromSouthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToSouthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromWestxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToWestxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal NorthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal NorthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal NorthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal EastRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal EastTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal EastTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal SouthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal SouthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal SouthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal WestRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal WestTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal WestTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal NorthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal EastRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal SouthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCS2mxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal WestRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal AuroraCtrlxD : t_aurora_control := C_AURORA_NO_CONTROL; + signal AuroraStatusxD : t_aurora_status := C_AURORA_NO_STATUS; + signal AuroraDRPM2SxD : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S); + signal AuroraDRPS2MxD : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M); + signal NorthRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal EastRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal SouthRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal WestRXFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; + signal NorthFifoRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal NorthFifoTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthFifoTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastFifoRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastFifoTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastFifoTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthFifoRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthFifoTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthFifoTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestFifoRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestFifoTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestFifoTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + + -- Attributes + attribute mark_debug : string; + attribute keep : string; + -- + attribute mark_debug of RXFifoResetDonexD : signal is "true"; + attribute keep of RXFifoResetDonexD : signal is "true"; + attribute mark_debug of RXFifoResetDoneDelayedxD : signal is "true"; + attribute keep of RXFifoResetDoneDelayedxD : signal is "true"; + -- North + attribute mark_debug of NorthTXM2SxD : signal is "true"; + attribute keep of NorthTXM2SxD : signal is "true"; + attribute mark_debug of NorthTXS2MxD : signal is "true"; + attribute keep of NorthTXS2MxD : signal is "true"; + attribute mark_debug of NorthRXM2SxD : signal is "true"; + attribute keep of NorthRXM2SxD : signal is "true"; + attribute mark_debug of NorthTXNFCM2SxD : signal is "true"; + attribute keep of NorthTXNFCM2SxD : signal is "true"; + attribute mark_debug of NorthTXNFCS2MxD : signal is "true"; + attribute keep of NorthTXNFCS2MxD : signal is "true"; + attribute mark_debug of NorthRXNFCM2SxD : signal is "true"; + attribute keep of NorthRXNFCM2SxD : signal is "true"; + -- East + -- attribute mark_debug of EastTXM2SxD : signal is "true"; + -- attribute keep of EastTXM2SxD : signal is "true"; + -- attribute mark_debug of EastTXS2MxD : signal is "true"; + -- attribute keep of EastTXS2MxD : signal is "true"; + -- attribute mark_debug of EastRXM2SxD : signal is "true"; + -- attribute keep of EastRXM2SxD : signal is "true"; + -- attribute mark_debug of EastTXNFCM2SxD : signal is "true"; + -- attribute keep of EastTXNFCM2SxD : signal is "true"; + -- attribute mark_debug of EastTXNFCS2MxD : signal is "true"; + -- attribute keep of EastTXNFCS2MxD : signal is "true"; + -- attribute mark_debug of EastRXNFCM2SxD : signal is "true"; + -- attribute keep of EastRXNFCM2SxD : signal is "true"; + -- South + attribute mark_debug of SouthTXM2SxD : signal is "true"; + attribute keep of SouthTXM2SxD : signal is "true"; + attribute mark_debug of SouthTXS2MxD : signal is "true"; + attribute keep of SouthTXS2MxD : signal is "true"; + attribute mark_debug of SouthRXM2SxD : signal is "true"; + attribute keep of SouthRXM2SxD : signal is "true"; + attribute mark_debug of SouthTXNFCM2SxD : signal is "true"; + attribute keep of SouthTXNFCM2SxD : signal is "true"; + attribute mark_debug of SouthTXNFCS2MxD : signal is "true"; + attribute keep of SouthTXNFCS2MxD : signal is "true"; + attribute mark_debug of SouthRXNFCM2SxD : signal is "true"; + attribute keep of SouthRXNFCM2SxD : signal is "true"; + -- West + -- attribute mark_debug of WestTXM2SxD : signal is "true"; + -- attribute keep of WestTXM2SxD : signal is "true"; + -- attribute mark_debug of WestTXS2MxD : signal is "true"; + -- attribute keep of WestTXS2MxD : signal is "true"; + -- attribute mark_debug of WestRXM2SxD : signal is "true"; + -- attribute keep of WestRXM2SxD : signal is "true"; + -- attribute mark_debug of WestTXNFCM2SxD : signal is "true"; + -- attribute keep of WestTXNFCM2SxD : signal is "true"; + -- attribute mark_debug of WestTXNFCS2MxD : signal is "true"; + -- attribute keep of WestTXNFCS2MxD : signal is "true"; + -- attribute mark_debug of WestRXNFCM2SxD : signal is "true"; + -- attribute keep of WestRXNFCM2SxD : signal is "true"; begin - ClocksIOxB : block is - begin -- block ClocksIOxB - - AuroraClkSlaveInitClkxAS : AuroraSlaveClkxC.InitClkxC <= AuroraClkxCI.InitClkxC; - AuroraClkSlavexDrpClkxAS : AuroraSlaveClkxC.DrpClkxC <= AuroraClkxCI.DrpClkxC; - AuroraClkMasterInitClkxAS : AuroraClkxCO.InitClkxC <= AuroraMasterClkxC.InitClkxC; - AuroraClkMasterUserClkxAS : AuroraClkxCO.UserClkxC <= AuroraMasterClkxC.UserClkxC; - AuroraClkMasterPllNotLockedxAS : AuroraClkxCO.PLLNotLockedxS <= AuroraMasterClkxC.PllNotLockedxS; - - end block ClocksIOxB; - - ResetIOxB : block is - begin -- block ResetIOxB - - GT0GTRefClk0xAS : GTCommonSlaveClkxC.GTRefClkxC <= GTRefClkxCI.GTRefClkxC; - GT0PLL0LockDetClkxAS : GTCommonSlaveClkxC.GTPLL0LockDetClkxC <= AuroraMasterClkxC.InitClkxC; - AuroraSlaveResetResetxAS : AuroraSlaveResetxR.ResetxR <= AuroraResetxRI.ResetxR; - AuroraSlaveResetGTResetxAS : AuroraSlaveResetxR.GTResetxR <= AuroraResetxRI.GTResetxR; - AuroraMasterLinkResetSystemResetxAS : AuroraResetxRO.SystemResetxR <= AuroraMasterLinkResetxR.SystemResetxR; - AuroraMasterLinkResetLinkResetxAS : AuroraResetxRO.LinkResetxR <= AuroraMasterLinkResetxR.LinkResetxR; - - end block ResetIOxB; - - SignalsIOxB : block is - begin -- block SignalsIOxB - - -- Axi4 Framing - NorthRXM2SxAS : NorthRXM2SxDO <= NorthRXM2SxD; - NorthTXM2SxAS : NorthTXM2SxD <= NorthTXM2SxDI; - NorthTXS2MxAS : NorthTXS2MxDO <= NorthTXS2MxD; - EastRXM2SxAS : EastRXM2SxDO <= EastRXM2SxD; - EastTXM2SxAS : EastTXM2SxD <= EastTXM2SxDI; - EastTXS2MxAS : EastTXS2MxDO <= EastTXS2MxD; - SouthRXM2SxAS : SouthRXM2SxDO <= SouthRXM2SxD; - SouthTXM2SxAS : SouthTXM2SxD <= SouthTXM2SxDI; - SouthTXS2MxAS : SouthTXS2MxDO <= SouthTXS2MxD; - WestRXM2SxAS : WestRXM2SxDO <= WestRXM2SxD; - WestTXM2SxAS : WestTXM2SxD <= WestTXM2SxDI; - WestTXS2MxAS : WestTXS2MxDO <= WestTXS2MxD; - -- Axi4 Framing UFC - NorthRXUFCM2SxAS : NorthRXUFCM2SxDO <= NorthRXUFCM2SxD; - NorthTXUFCM2SxAS : NorthTXUFCM2SxD <= NorthTXUFCM2SxDI; - NorthTXUFCS2MxAS : NorthTXUFCS2MxDO <= NorthTXUFCS2MxD; - EastRXUFCM2SxAS : EastRXUFCM2SxDO <= EastRXUFCM2SxD; - EastTXUFCM2SxAS : EastTXUFCM2SxD <= EastTXUFCM2SxDI; - EastTXUFCS2MxAS : EastTXUFCS2MxDO <= EastTXUFCS2MxD; - SouthRXUFCM2SxAS : SouthRXUFCM2SxDO <= SouthRXUFCM2SxD; - SouthTXUFCM2SxAS : SouthTXUFCM2SxD <= SouthTXUFCM2SxDI; - SouthTXUFCS2MxAS : SouthTXUFCS2MxDO <= SouthTXUFCS2MxD; - WestRXUFCM2SxAS : WestRXUFCM2SxDO <= WestRXUFCM2SxD; - WestTXUFCM2SxAS : WestTXUFCM2SxD <= WestTXUFCM2SxDI; - WestTXUFCS2MxAS : WestTXUFCS2MxDO <= WestTXUFCS2MxD; - -- GTP Serial IO - GTPFromNorthxAS : GTPFromNorthxD <= GTPFromNorthxDI; - GTPToNorthxAS : GTPToNorthxDO <= GTPToNorthxD; - GTPFromEastxAS : GTPFromEastxD <= GTPFromEastxDI; - GTPToEastxAS : GTPToEastxDO <= GTPToEastxD; - GTPFromSouthxAS : GTPFromSouthxD <= GTPFromSouthxDI; - GTPToSouthxAS : GTPToSouthxDO <= GTPToSouthxD; - GTPFromWestxAS : GTPFromWestxD <= GTPFromWestxDI; - GTPToWestxAS : GTPToWestxDO <= GTPToWestxD; - -- Aurora Ctrl + Status - AuroraCtrlxAS : AuroraCtrlxD <= AuroraCtrlxDI; - AuroraStatusxAS : AuroraStatusxDO <= AuroraStatusxD; - -- Aurora DRP Port - AuroraDRPM2SxAS : AuroraDRPM2SxD <= AuroraDRPM2SxDI; - AuroraDRPS2MxAS : AuroraDRPS2MxDO <= AuroraDRPS2MxD; + EntityIOxB : block is + begin -- block EntityIOxB - end block SignalsIOxB; + ClockxB : block is + begin -- block ClockxB - ClkRstxB : block is - begin -- block ClkRstxB + GTRefClkxAS : GTRefClkxC <= GTRefClkxCI; + AuroraClkInxAS : AuroraClkInxC <= AuroraClkxCI; + AuroraClkOutxAS : AuroraClkxCO <= AuroraClkOutxC; - AuroraResetLogicxI : entity work.reset_logic - port map ( - UserClkxCI => AuroraMasterClkxC.UserClkxC, - InitClkxCI => AuroraMasterClkxC.InitClkxC, - ResetxRI => AuroraSlaveResetxR.ResetxR, -- Sync on UserClk - GTResetxRI => AuroraSlaveResetxR.GTResetxR, -- Sync on InitClk - SystemResetxRO => AuroraMasterResetxR.SystemResetxR, - GTResetxRO => AuroraMasterResetxR.GTResetxR); - - AuroraClockModulexI : entity work.clock_module - generic map ( - C_NUM_PLL => C_NUM_PLL) - port map ( - -- Slave - InitClkxCI => AuroraSlaveClkxC.InitClkxC, - GTClkxCI(0) => AuroraSlaveClkxC.GTClkxC, - GTClkLockedxDI(0) => AuroraSlaveClkxC.GTClkLockedxS, - -- Master - InitClkxCO => AuroraMasterClkxC.InitClkxC, - UserClkxCO(0) => AuroraMasterClkxC.UserClkxC, - SyncClkxCO(0) => AuroraMasterClkxC.SyncClkxC, - PLLNotLockedxDO(0) => AuroraMasterClkxC.PllNotLockedxS); - - GTCommonxI : entity work.gt_common + end block ClockxB; + + ResetxB : block is + begin -- block ResetxB + + AuroraResetInxAS : AuroraResetInxR <= AuroraResetxRI; + AuroraResetOutxAS : AuroraResetxRO <= AuroraResetOutxR; + RXResetxAS : RXResetxR <= RXResetxRI; + RXFifoResetDonexAS : RXFifoResetDonexDO <= RXFifoResetDonexD; + RXFifoResetDoneDelayedxAS : RXFifoResetDoneDelayedxDO <= RXFifoResetDoneDelayedxD; + + end block ResetxB; + + GTPxB : block is + begin -- block GTPxB + + -- North + GTPFromNorthxAS : GTPFromNorthxD <= GTPFromNorthxDI; + GTPToNorthxAS : GTPToNorthxDO <= GTPToNorthxD; + -- East + GTPFromEastxAS : GTPFromEastxD <= GTPFromEastxDI; + GTPToEastxAS : GTPToEastxDO <= GTPToEastxD; + -- South + GTPFromSouthxAS : GTPFromSouthxD <= GTPFromSouthxDI; + GTPToSouthxAS : GTPToSouthxDO <= GTPToSouthxD; + -- West + GTPFromWestxAS : GTPFromWestxD <= GTPFromWestxDI; + GTPToWestxAS : GTPToWestxDO <= GTPToWestxD; + + end block GTPxB; + + TXxB : block is + begin -- block TXxB + + AXIxB : block is + begin -- block AXIxB + + -- North + NorthTXM2SxAS : NorthTXM2SxD <= NorthTXM2SxDI; + NorthTXS2MxAS : NorthTXS2MxDO <= NorthTXS2MxD; + -- East + EastTXM2SxAS : EastTXM2SxD <= EastTXM2SxDI; + EastTXS2MxAS : EastTXS2MxDO <= EastTXS2MxD; + -- South + SouthTXM2SxAS : SouthTXM2SxD <= SouthTXM2SxDI; + SouthTXS2MxAS : SouthTXS2MxDO <= SouthTXS2MxD; + -- West + WestTXM2SxAS : WestTXM2SxD <= WestTXM2SxDI; + WestTXS2MxAS : WestTXS2MxDO <= WestTXS2MxD; + + end block AXIxB; + + UFCxB : block is + begin -- block UFCxB + + -- North + NorthTXUFCM2SxAS : NorthTXUFCM2SxD <= NorthTXUFCM2SxDI; + NorthTXUFCS2MxAS : NorthTXUFCS2MxDO <= NorthTXUFCS2MxD; + -- East + EastTXUFCM2SxAS : EastTXUFCM2SxD <= EastTXUFCM2SxDI; + EastTXUFCS2MxAS : EastTXUFCS2MxDO <= EastTXUFCS2MxD; + -- South + SouthTXUFCM2SxAS : SouthTXUFCM2SxD <= SouthTXUFCM2SxDI; + SouthTXUFCS2MxAS : SouthTXUFCS2MxDO <= SouthTXUFCS2MxD; + -- West + WestTXUFCM2SxAS : WestTXUFCM2SxD <= WestTXUFCM2SxDI; + WestTXUFCS2MxAS : WestTXUFCS2MxDO <= WestTXUFCS2MxD; + + end block UFCxB; + + end block TXxB; + + RXxB : block is + begin -- block RXxB + + UFCxB : block is + begin -- block UFCxB + + -- North + NorthRXUFCM2SxAS : NorthRXUFCM2SxDO <= NorthRXUFCM2SxD; + -- East + EastRXUFCM2SxAS : EastRXUFCM2SxDO <= EastRXUFCM2SxD; + -- East + SouthRXUFCM2SxAS : SouthRXUFCM2SxDO <= SouthRXUFCM2SxD; + -- West + WestRXUFCM2SxAS : WestRXUFCM2SxDO <= WestRXUFCM2SxD; + + end block UFCxB; + + end block RXxB; + + CtrlStatusxB : block is + begin -- block CtrlStatusxB + + AuroraCtrlxAS : AuroraCtrlxD <= AuroraCtrlxDI; + AuroraStatusxAS : AuroraStatusxDO <= AuroraStatusxD; + + end block CtrlStatusxB; + + DRPxB : block is + begin -- block DRPxB + + AuroraDRPM2SxAS : AuroraDRPM2SxD <= AuroraDRPM2SxDI; + AuroraDRPS2MxAS : AuroraDRPS2MxDO <= AuroraDRPS2MxD; + + end block DRPxB; + + end block EntityIOxB; + + ScalpAuroraPhyxB : block is + begin -- block ScalpAuroraPhyxB + + ScalpAuroraPhyWrapperxI : entity work.scalp_aurora_phy_wrapper generic map ( - C_SIM_GTRESET_SPEEDUP => C_SIM_GTRESET_SPEEDUP) + C_DEBUG_MODE => C_DEBUG_MODE) port map ( - -- Slave - GT0GTRefClk0xCI => GTCommonSlaveClkxC.GTRefClkxC, - GT0PLL0LockDetClkxCI => GTCommonSlaveClkxC.GTPLL0LockDetClkxC, - GT0PLL0ResetxRI => GTCommonSlaveClkxC.CommonResetxR, - -- Master - GT0PLL0ClkxCO => GTCommonMasterClkxC.GTPLL0ClkxCO, - GT0PLL1ClkxCO => GTCommonMasterClkxC.GTPLL1ClkxCO, - GT0PLL0RefClkxCO => GTCommonMasterClkxC.GTPLL0RefClkxC, - GT0PLL1RefClkxCO => GTCommonMasterClkxC.GTPLL1RefClkxC, - GT0PLL0LockxSO => GTCommonMasterClkxC.GTPLL0LockxS, - GT0PLL1LockxSO => GTCommonMasterClkxC.GTPLL1LockxS, - GT0PLL0RefClkLostxSO => GTCommonMasterClkxC.GTPLL0RefClkLostxS); + GTRefClkxCI => GTRefClkxC, + AuroraClkxCI => AuroraClkInxC, + AuroraClkxCO => AuroraClkOutxC, + AuroraResetxRI => AuroraResetInxR, + AuroraResetxRO => AuroraResetOutxR, + GTPFromNorthxDI => GTPFromNorthxD, + GTPToNorthxDO => GTPToNorthxD, + GTPFromEastxDI => GTPFromEastxD, + GTPToEastxDO => GTPToEastxD, + GTPFromSouthxDI => GTPFromSouthxD, + GTPToSouthxDO => GTPToSouthxD, + GTPFromWestxDI => GTPFromWestxD, + GTPToWestxDO => GTPToWestxD, + NorthRXM2SxDO => NorthRXM2SxD, + NorthTXM2SxDI => NorthTXM2SxD, + NorthTXS2MxDO => NorthTXS2MxD, + EastRXM2SxDO => EastRXM2SxD, + EastTXM2SxDI => EastTXM2SxD, + EastTXS2MxDO => EastTXS2MxD, + SouthRXM2SxDO => SouthRXM2SxD, + SouthTXM2SxDI => SouthTXM2SxD, + SouthTXS2MxDO => SouthTXS2MxD, + WestRXM2SxDO => WestRXM2SxD, + WestTXM2SxDI => WestTXM2SxD, + WestTXS2MxDO => WestTXS2MxD, + NorthRXUFCM2SxDO => NorthRXUFCM2SxD, + NorthTXUFCM2SxDI => NorthTXUFCM2SxD, + NorthTXUFCS2MxDO => NorthTXUFCS2MxD, + EastRXUFCM2SxDO => EastRXUFCM2SxD, + EastTXUFCM2SxDI => EastTXUFCM2SxD, + EastTXUFCS2MxDO => EastTXUFCS2MxD, + SouthRXUFCM2SxDO => SouthRXUFCM2SxD, + SouthTXUFCM2SxDI => SouthTXUFCM2SxD, + SouthTXUFCS2MxDO => SouthTXUFCS2MxD, + WestRXUFCM2SxDO => WestRXUFCM2SxD, + WestTXUFCM2SxDI => WestTXUFCM2SxD, + WestTXUFCS2MxDO => WestTXUFCS2MxD, + NorthRXNFCM2SxDO => NorthRXNFCM2SxD, + NorthTXNFCM2SxDI => NorthTXNFCM2SxD, + NorthTXNFCS2MxDO => NorthTXNFCS2MxD, + EastRXNFCM2SxDO => EastRXNFCM2SxD, + EastTXNFCM2SxDI => EastTXNFCM2SxD, + EastTXNFCS2MxDO => EastTXNFCS2MxD, + SouthRXNFCM2SxDO => SouthRXNFCM2SxD, + SouthTXNFCM2SxDI => SouthTXNFCM2SxD, + SouthTXNFCS2mxDO => SouthTXNFCS2mxD, + WestRXNFCM2SxDO => WestRXNFCM2SxD, + WestTXNFCM2SxDI => WestTXNFCM2SxD, + WestTXNFCS2MxDO => WestTXNFCS2MxD, + AuroraCtrlxDI => AuroraCtrlxD, + AuroraStatusxDO => AuroraStatusxD, + AuroraDRPM2SxDI => AuroraDRPM2SxD, + AuroraDRPS2MxDO => AuroraDRPS2MxD); - end block ClkRstxB; + end block ScalpAuroraPhyxB; - -- Aurora GT Phy + RXModexB : block is + begin -- block RXModexB - AuroraGTPhyxB : block is - begin -- block AuroraGTPhyxB + RXFifoModexG : if C_RX_FIFO_MODE = false generate - -- North Channel + EntityIOxB : block is + begin -- block EntityIOxB - NorthChannelxI : entity work.north_channel - port map ( - -- Clocks and Locked - -- Slave - gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, - quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, - tx_out_clk => AuroraSlaveClkxC.GTClkxC, -- Only North - tx_lock => AuroraSlaveClkxC.GTClkLockedxS, -- Only North - drpclk_in => AuroraSlaveClkxC.DrpClkxC, - init_clk_in => AuroraMasterClkxC.InitClkxC, - -- Master - user_clk => AuroraMasterClkxC.UserClkxC, - sync_clk => AuroraMasterClkxC.SyncClkxC, - pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, - -- GT0 - gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, - gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, - gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, - gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, - gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, - gt_common_reset_out => GTCommonSlaveClkxC.CommonResetxR, -- Only North - -- Reset - reset => AuroraMasterResetxR.SystemResetxR, - gt_reset => AuroraMasterResetxR.GTResetxR, - link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(0), - sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(0), - -- TX - s_axi_tx_tdata => NorthTXM2SxD.DataxD, - s_axi_tx_tkeep => NorthTXM2SxD.KeepxD, - s_axi_tx_tlast => NorthTXM2SxD.LastxS, - s_axi_tx_tvalid => NorthTXM2SxD.ValidxS, - s_axi_tx_tready => NorthTXS2MxD.ReadyxS, - -- RX - m_axi_rx_tdata => NorthRXM2SxD.DataxD, - m_axi_rx_tkeep => NorthRXM2SxD.KeepxD, - m_axi_rx_tlast => NorthRXM2SxD.LastxS, - m_axi_rx_tvalid => NorthRXM2SxD.ValidxS, - -- TX UFC - s_axi_ufc_tx_tvalid => NorthTXUFCM2SxD.ValidxS, - s_axi_ufc_tx_tdata => NorthTXUFCM2SxD.DataxD, -- 3 bits - s_axi_ufc_tx_tready => NorthTXUFCS2MxD.ReadyxS, - -- RX UFC - m_axi_ufc_rx_tdata => NorthRXUFCM2SxD.DataxD, -- 32 bits - m_axi_ufc_rx_tkeep => NorthRXUFCM2SxD.KeepxD, - m_axi_ufc_rx_tlast => NorthRXUFCM2SxD.LastxS, - m_axi_ufc_rx_tvalid => NorthRXUFCM2SxD.ValidxS, - -- GTP - txp => GTPToNorthxD.TXPxD, - txn => GTPToNorthxD.TXNxD, - rxp => GTPFromNorthxD.RXPxD, - rxn => GTPFromNorthxD.RXNxD, - -- Status - hard_err => AuroraStatusxD.HardErrxD(0), - soft_err => AuroraStatusxD.SoftErrxD(0), - frame_err => AuroraStatusxD.FrameErrxD(0), - channel_up => AuroraStatusxD.ChannelUpxD(0), - lane_up => AuroraStatusxD.LaneUpxD(0), - tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(0), - rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(0), - -- Ctrl - loopback => AuroraCtrlxD.LoopbackxD, - power_down => AuroraCtrlxD.PowerDownxS, - -- DRP - drpen_in => AuroraDRPM2SxD(0).DrpEnxS, - drpwe_in => AuroraDRPM2SxD(0).DrpWExS, - drpaddr_in => AuroraDRPM2SxD(0).DrpAddrxD, - drpdi_in => AuroraDRPM2SxD(0).DrpDIxD, - drprdy_out => AuroraDRPS2MxD(0).DrpRdyxS, - drpdo_out => AuroraDRPS2MxD(0).DrpDOxD); - - -- East Channel - - EastChannelxI : entity work.east_channel - port map ( - -- Clocks and Locked - -- Slave - gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, - quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, - tx_out_clk => open, - tx_lock => open, - drpclk_in => AuroraSlaveClkxC.DrpClkxC, - init_clk_in => AuroraMasterClkxC.InitClkxC, - -- Master - user_clk => AuroraMasterClkxC.UserClkxC, - sync_clk => AuroraMasterClkxC.SyncClkxC, - pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, - -- GT0 - gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, - gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, - gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, - gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, - gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, - gt_common_reset_out => open, - -- Reset - reset => AuroraMasterResetxR.SystemResetxR, - gt_reset => AuroraMasterResetxR.GTResetxR, - link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(1), - sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(1), - -- TX - s_axi_tx_tdata => EastTXM2SxD.DataxD, - s_axi_tx_tkeep => EastTXM2SxD.KeepxD, - s_axi_tx_tlast => EastTXM2SxD.LastxS, - s_axi_tx_tvalid => EastTXM2SxD.ValidxS, - s_axi_tx_tready => EastTXS2MxD.ReadyxS, - -- RX - m_axi_rx_tdata => EastRXM2SxD.DataxD, - m_axi_rx_tkeep => EastRXM2SxD.KeepxD, - m_axi_rx_tlast => EastRXM2SxD.LastxS, - m_axi_rx_tvalid => EastRXM2SxD.ValidxS, - -- TX UFC - s_axi_ufc_tx_tvalid => EastTXUFCM2SxD.ValidxS, - s_axi_ufc_tx_tdata => EastTXUFCM2SxD.DataxD, -- 3 bits - s_axi_ufc_tx_tready => EastTXUFCS2MxD.ReadyxS, - -- RX UFC - m_axi_ufc_rx_tdata => EastRXUFCM2SxD.DataxD, -- 32 bits - m_axi_ufc_rx_tkeep => EastRXUFCM2SxD.KeepxD, - m_axi_ufc_rx_tlast => EastRXUFCM2SxD.LastxS, - m_axi_ufc_rx_tvalid => EastRXUFCM2SxD.ValidxS, - -- GTP - txp => GTPToEastxD.TXPxD, - txn => GTPToEastxD.TXNxD, - rxp => GTPFromEastxD.RXPxD, - rxn => GTPFromEastxD.RXNxD, - -- Status - hard_err => AuroraStatusxD.HardErrxD(1), - soft_err => AuroraStatusxD.SoftErrxD(1), - frame_err => AuroraStatusxD.FrameErrxD(1), - channel_up => AuroraStatusxD.ChannelUpxD(1), - lane_up => AuroraStatusxD.LaneUpxD(1), - tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(1), - rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(1), - -- Ctrl - loopback => AuroraCtrlxD.LoopbackxD, - power_down => AuroraCtrlxD.PowerDownxS, - -- DRP - drpen_in => AuroraDRPM2SxD(1).DrpEnxS, - drpwe_in => AuroraDRPM2SxD(1).DrpWExS, - drpaddr_in => AuroraDRPM2SxD(1).DrpAddrxD, - drpdi_in => AuroraDRPM2SxD(1).DrpDIxD, - drprdy_out => AuroraDRPS2MxD(1).DrpRdyxS, - drpdo_out => AuroraDRPS2MxD(1).DrpDOxD); - - -- South Channel - - SouthChannelxI : entity work.south_channel - port map ( - -- Clocks and Locked - -- Slave - gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, - quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, - tx_out_clk => open, - tx_lock => open, - drpclk_in => AuroraSlaveClkxC.DrpClkxC, - init_clk_in => AuroraMasterClkxC.InitClkxC, - -- Master - user_clk => AuroraMasterClkxC.UserClkxC, - sync_clk => AuroraMasterClkxC.SyncClkxC, - pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, - -- GT0 - gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, - gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, - gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, - gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, - gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, - gt_common_reset_out => open, - -- Reset - reset => AuroraMasterResetxR.SystemResetxR, - gt_reset => AuroraMasterResetxR.GTResetxR, - link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(2), - sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(2), - -- TX - s_axi_tx_tdata => SouthTXM2SxD.DataxD, - s_axi_tx_tkeep => SouthTXM2SxD.KeepxD, - s_axi_tx_tlast => SouthTXM2SxD.LastxS, - s_axi_tx_tvalid => SouthTXM2SxD.ValidxS, - s_axi_tx_tready => SouthTXS2MxD.ReadyxS, - -- RX - m_axi_rx_tdata => SouthRXM2SxD.DataxD, - m_axi_rx_tkeep => SouthRXM2SxD.KeepxD, - m_axi_rx_tlast => SouthRXM2SxD.LastxS, - m_axi_rx_tvalid => SouthRXM2SxD.ValidxS, - -- TX UFC - s_axi_ufc_tx_tvalid => SouthTXUFCM2SxD.ValidxS, - s_axi_ufc_tx_tdata => SouthTXUFCM2SxD.DataxD, -- 3 bits - s_axi_ufc_tx_tready => SouthTXUFCS2MxD.ReadyxS, - -- RX UFC - m_axi_ufc_rx_tdata => SouthRXUFCM2SxD.DataxD, -- 32 bits - m_axi_ufc_rx_tkeep => SouthRXUFCM2SxD.KeepxD, - m_axi_ufc_rx_tlast => SouthRXUFCM2SxD.LastxS, - m_axi_ufc_rx_tvalid => SouthRXUFCM2SxD.ValidxS, - -- GTP - txp => GTPToSouthxD.TXPxD, - txn => GTPToSouthxD.TXNxD, - rxp => GTPFromSouthxD.RXPxD, - rxn => GTPFromSouthxD.RXNxD, - -- Status - hard_err => AuroraStatusxD.HardErrxD(2), - soft_err => AuroraStatusxD.SoftErrxD(2), - frame_err => AuroraStatusxD.FrameErrxD(2), - channel_up => AuroraStatusxD.ChannelUpxD(2), - lane_up => AuroraStatusxD.LaneUpxD(2), - tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(2), - rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(2), - -- Ctrl - loopback => AuroraCtrlxD.LoopbackxD, - power_down => AuroraCtrlxD.PowerDownxS, - -- DRP - drpen_in => AuroraDRPM2SxD(2).DrpEnxS, - drpwe_in => AuroraDRPM2SxD(2).DrpWExS, - drpaddr_in => AuroraDRPM2SxD(2).DrpAddrxD, - drpdi_in => AuroraDRPM2SxD(2).DrpDIxD, - drprdy_out => AuroraDRPS2MxD(2).DrpRdyxS, - drpdo_out => AuroraDRPS2MxD(2).DrpDOxD); - - -- West Channel - - WestChannelxI : entity work.west_channel - port map ( - -- Clocks and Locked - -- Slave - gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, - quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, - tx_out_clk => open, - tx_lock => open, - drpclk_in => AuroraSlaveClkxC.DrpClkxC, - init_clk_in => AuroraMasterClkxC.InitClkxC, - -- Master - user_clk => AuroraMasterClkxC.UserClkxC, - sync_clk => AuroraMasterClkxC.SyncClkxC, - pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, - -- GT0 - gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, - gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, - gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, - gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, - gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, - gt_common_reset_out => open, - -- Reset - reset => AuroraMasterResetxR.SystemResetxR, - gt_reset => AuroraMasterResetxR.GTResetxR, - link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(3), - sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(3), - -- TX - s_axi_tx_tdata => WestTXM2SxD.DataxD, - s_axi_tx_tkeep => WestTXM2SxD.KeepxD, - s_axi_tx_tlast => WestTXM2SxD.LastxS, - s_axi_tx_tvalid => WestTXM2SxD.ValidxS, - s_axi_tx_tready => WestTXS2MxD.ReadyxS, - -- RX - m_axi_rx_tdata => WestRXM2SxD.DataxD, - m_axi_rx_tkeep => WestRXM2SxD.KeepxD, - m_axi_rx_tlast => WestRXM2SxD.LastxS, - m_axi_rx_tvalid => WestRXM2SxD.ValidxS, - -- TX UFC - s_axi_ufc_tx_tvalid => WestTXUFCM2SxD.ValidxS, - s_axi_ufc_tx_tdata => WestTXUFCM2SxD.DataxD, -- 3 bits - s_axi_ufc_tx_tready => WestTXUFCS2MxD.ReadyxS, - -- RX UFC - m_axi_ufc_rx_tdata => WestRXUFCM2SxD.DataxD, -- 32 bits - m_axi_ufc_rx_tkeep => WestRXUFCM2SxD.KeepxD, - m_axi_ufc_rx_tlast => WestRXUFCM2SxD.LastxS, - m_axi_ufc_rx_tvalid => WestRXUFCM2SxD.ValidxS, - -- GTP - txp => GTPToWestxD.TXPxD, - txn => GTPToWestxD.TXNxD, - rxp => GTPFromWestxD.RXPxD, - rxn => GTPFromWestxD.RXNxD, - -- Status - hard_err => AuroraStatusxD.HardErrxD(3), - soft_err => AuroraStatusxD.SoftErrxD(3), - frame_err => AuroraStatusxD.FrameErrxD(3), - channel_up => AuroraStatusxD.ChannelUpxD(3), - lane_up => AuroraStatusxD.LaneUpxD(3), - tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(3), - rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(3), - -- Ctrl - loopback => AuroraCtrlxD.LoopbackxD, - power_down => AuroraCtrlxD.PowerDownxS, - -- DRP - drpen_in => AuroraDRPM2SxD(3).DrpEnxS, - drpwe_in => AuroraDRPM2SxD(3).DrpWExS, - drpaddr_in => AuroraDRPM2SxD(3).DrpAddrxD, - drpdi_in => AuroraDRPM2SxD(3).DrpDIxD, - drprdy_out => AuroraDRPS2MxD(3).DrpRdyxS, - drpdo_out => AuroraDRPS2MxD(3).DrpDOxD); - - end block AuroraGTPhyxB; + TXxB : block is + begin -- block TXxB + + NFCxB : block is + begin -- block NFCxB + + -- North + NorthTXNFCM2SxAS : NorthTXNFCM2SxD <= NorthTXNFCM2SxDI; + NorthTXNFCS2MxAS : NorthTXNFCS2MxDO <= NorthTXNFCS2MxD; + -- East + EastTXNFCM2SxAS : EastTXNFCM2SxD <= EastTXNFCM2SxDI; + EastTXNFCS2MxAS : EastTXNFCS2MxDO <= EastTXNFCS2MxD; + -- South + SouthTXNFCM2SxAS : SouthTXNFCM2SxD <= SouthTXNFCM2SxDI; + SouthTXNFCS2MxAS : SouthTXNFCS2MxDO <= SouthTXNFCS2MxD; + -- West + WestTXNFCM2SxAS : WestTXNFCM2SxD <= WestTXNFCM2SxDI; + WestTXNFCS2MxAS : WestTXNFCS2MxDO <= WestTXNFCS2MxD; + + end block NFCxB; + + end block TXxB; + + RXxB : block is + begin -- block RXxB + + AXIxB : block is + begin -- block AXIxB + + -- North + NorthRXM2SxAS : NorthRXM2SxDO <= NorthRXM2SxD; + -- East + EastRXM2SxAS : EastRXM2SxDO <= EastRXM2SxD; + -- South + SouthRXM2SxAS : SouthRXM2SxDO <= SouthRXM2SxD; + -- West + WestRXM2SxAS : WestRXM2SxDO <= WestRXM2SxD; + + end block AXIxB; + + NFCxB : block is + begin -- block NFCxB + + -- North + NorthRXNFCM2SxAS : NorthRXNFCM2SxDO <= NorthRXNFCM2SxD; + -- East + EastRXNFCM2SxAS : EastRXNFCM2SxDO <= EastRXNFCM2SxD; + -- South + SouthRXNFCM2SxAS : SouthRXNFCM2SxDO <= SouthRXNFCM2SxD; + -- West + WestRXNFCM2SxAS : WestRXNFCM2SxDO <= WestRXNFCM2SxD; + + end block NFCxB; + + end block RXxB; + + RXFifoStatusxB : block is + begin -- block RXFifoStatusxB + + NorthRXFifoStatusxAS : NorthRXFifoStatusxDO <= C_NO_AXI4_FIFO_STATUS; + EastRXFifoStatusxAS : EastRXFifoStatusxDO <= C_NO_AXI4_FIFO_STATUS; + SouthRXFifoStatusxAS : SouthRXFifoStatusxDO <= C_NO_AXI4_FIFO_STATUS; + WestRXFifoStatusxAS : WestRXFifoStatusxDO <= C_NO_AXI4_FIFO_STATUS; + AxisFifoErrorxAS : AxisFifoErrorxDO <= C_NO_AXI4_FIFO_ERROR; + + end block RXFifoStatusxB; + + end block EntityIOxB; + + elsif C_RX_FIFO_MODE = true generate + + EntityIOxB : block is + begin -- block EntityIOxB + + -- North + NorthRXNFCM2SxAS : NorthRXNFCM2SxDO <= C_NO_AXI4_NFC_M2S; + NorthTXNFCS2MxAS : NorthTXNFCS2MxDO <= C_NO_AXI4_NFC_S2M; + -- East + EastRXNFCM2SxAS : EastRXNFCM2SxDO <= C_NO_AXI4_NFC_M2S; + EastTXNFCS2MxAS : EastTXNFCS2MxDO <= C_NO_AXI4_NFC_S2M; + -- South + SouthRXNFCM2SxAS : SouthRXNFCM2SxDO <= C_NO_AXI4_NFC_M2S; + SouthTXNFCS2MxAS : SouthTXNFCS2MxDO <= C_NO_AXI4_NFC_S2M; + -- West + WestRXNFCM2SxAS : WestRXNFCM2SxDO <= C_NO_AXI4_NFC_M2S; + WestTXNFCS2MxAS : WestTXNFCS2MxDO <= C_NO_AXI4_NFC_S2M; + + end block EntityIOxB; + + RXFifoxB : block is + begin -- block RXFifoxB + + NorthRXFifoRstxAS : RXFifoRstxRAN.NorthxR <= (not AuroraClkOutxC.PllNotLockedxS) and + (not RXResetxR.FifoResetxR.NorthxR); + EastRXFifoRstxAS : RXFifoRstxRAN.EastxR <= (not AuroraClkOutxC.PllNotLockedxS) and + (not RXResetxR.FifoResetxR.EastxR); + SouthRXFifoRstxAS : RXFifoRstxRAN.SouthxR <= (not AuroraClkOutxC.PllNotLockedxS) and + (not RXResetxR.FifoResetxR.SouthxR); + WestRXFifoRstxAS : RXFifoRstxRAN.WestxR <= (not AuroraClkOutxC.PllNotLockedxS) and + (not RXResetxR.FifoResetxR.WestxR); + -- North + NorthRXM2SxAS : NorthRXM2SxDO <= NorthFifoTXM2SxD; + NorthRXS2MxAS : NorthFifoTXS2MxD <= NorthRXS2MxDI; + NorthRXFifoStatusxAS : NorthRXFifoStatusxDO <= NorthRXFifoStatusxD; + -- East + EastRXM2SxAS : EastRXM2SxDO <= EastFifoTXM2SxD; + EastRXS2MxAS : EastFifoTXS2MxD <= EastRXS2MxDI; + EastRXFifoStatusxAS : EastRXFifoStatusxDO <= EastRXFifoStatusxD; + -- South + SouthRXM2SxAS : SouthRXM2SxDO <= SouthFifoTXM2SxD; + SouthRXS2MxAS : SouthFifoTXS2MxD <= SouthRXS2MxDI; + SouthRXFifoStatusxAS : SouthRXFifoStatusxDO <= SouthRXFifoStatusxD; + -- West + WestRXM2SxAS : WestRXM2SxDO <= WestFifoTXM2SxD; + WestRXS2MxAS : WestFifoTXS2MxD <= WestRXS2MxDI; + WestRXFifoStatusxAS : WestRXFifoStatusxDO <= WestRXFifoStatusxD; + + ScalpAuroraPhyRxFifoxI : entity work.scalp_aurora_phy_rx_fifo + port map ( + -- Clocks and Reset + RXClkxCI => AuroraClkOutxC.UserClkxC, + TXClkxCI => AuroraClkOutxC.UserClkxC, + RXRstxRANI => RXFifoRstxRAN, + -- North + -- Fifo RX Side + NorthRXM2SxDI => NorthRXM2SxD, + NorthRXS2MxDO => NorthFifoRXS2MxD, + -- Fifo TX Side + NorthTXM2SxDO => NorthFifoTXM2SxD, + NorthTXS2MxDI => NorthFifoTXS2MxD, + NorthFifoStatusxDO => NorthRXFifoStatusxD, + -- East + -- Fifo RX Side + EastRXM2SxDI => EastRXM2SxD, + EastRXS2MxDO => EastFifoRXS2MxD, + -- Fifo TX Side + EastTXM2SxDO => EastFifoTXM2SxD, + EastTXS2MxDI => EastFifoTXS2MxD, + EastFifoStatusxDO => EastRXFifoStatusxD, + -- South + -- Fifo RX Side + SouthRXM2SxDI => SouthRXM2SxD, + SouthRXS2MxDO => SouthFifoRXS2MxD, + -- Fifo TX Side + SouthTXM2SxDO => SouthFifoTXM2SxD, + SouthTXS2MxDI => SouthFifoTXS2MxD, + SouthFifoStatusxDO => SouthRXFifoStatusxD, + -- West + -- Fifo RX Side + WestRXM2SxDI => WestRXM2SxD, + WestRXS2MxDO => WestFifoRXS2MxD, + -- Fifo TX Side + WestTXM2SxDO => WestFifoTXM2SxD, + WestTXS2MxDI => WestFifoTXS2MxD, + WestFifoStatusxDO => WestRXFifoStatusxD); + + end block RXFifoxB; + + RXFifoResetDonexB : block is + + signal NorthRXFifoResetDoneStatexDN : t_rx_fifo_reset_done_states := E_RESET; + signal NorthRXFifoResetDoneStatexDP : t_rx_fifo_reset_done_states := E_RESET; + signal EastRXFifoResetDoneStatexDN : t_rx_fifo_reset_done_states := E_RESET; + signal EastRXFifoResetDoneStatexDP : t_rx_fifo_reset_done_states := E_RESET; + signal SouthRXFifoResetDoneStatexDN : t_rx_fifo_reset_done_states := E_RESET; + signal SouthRXFifoResetDoneStatexDP : t_rx_fifo_reset_done_states := E_RESET; + signal WestRXFifoResetDoneStatexDN : t_rx_fifo_reset_done_states := E_RESET; + signal WestRXFifoResetDoneStatexDP : t_rx_fifo_reset_done_states := E_RESET; + signal AuroraPllLockedxS : std_ulogic := '0'; + + -- Attributes + attribute mark_debug : string; + attribute keep : string; + -- + attribute mark_debug of NorthRXFifoResetDoneStatexDP : signal is "true"; + attribute keep of NorthRXFifoResetDoneStatexDP : signal is "true"; + -- attribute mark_debug of EastRXFifoResetDoneStatexDP : signal is "true"; + -- attribute keep of EastRXFifoResetDoneStatexDP : signal is "true"; + attribute mark_debug of SouthRXFifoResetDoneStatexDP : signal is "true"; + attribute keep of SouthRXFifoResetDoneStatexDP : signal is "true"; + -- attribute mark_debug of WestRXFifoResetDoneStatexDP : signal is "true"; + -- attribute keep of WestRXFifoResetDoneStatexDP : signal is "true"; + + begin -- block RXFifoResetDonexB + + AuroraPllLockedxAS : AuroraPllLockedxS <= not AuroraClkOutxC.PllNotLockedxS; + + NorthRXFifoResetDoneDelayxI : entity work.reset_delay_gen + generic map ( + C_TICKS => C_RX_FIFO_RST_DONE_DLY_TICKS) + port map ( + ClkxCI => AuroraClkOutxC.UserClkxC, + PllLockedxSI => AuroraPllLockedxS, + ResetxRI => RXFifoResetDonexD.NorthxS, + ResetDelayedxRO => RXFifoResetDoneDelayedxD.NorthxS); + + EastRXFifoResetDoneDelayxI : entity work.reset_delay_gen + generic map ( + C_TICKS => C_RX_FIFO_RST_DONE_DLY_TICKS) + port map ( + ClkxCI => AuroraClkOutxC.UserClkxC, + PllLockedxSI => AuroraPllLockedxS, + ResetxRI => RXFifoResetDonexD.EastxS, + ResetDelayedxRO => RXFifoResetDoneDelayedxD.EastxS); + + SouthRXFifoResetDoneDelayxI : entity work.reset_delay_gen + generic map ( + C_TICKS => C_RX_FIFO_RST_DONE_DLY_TICKS) + port map ( + ClkxCI => AuroraClkOutxC.UserClkxC, + PllLockedxSI => AuroraPllLockedxS, + ResetxRI => RXFifoResetDonexD.SouthxS, + ResetDelayedxRO => RXFifoResetDoneDelayedxD.SouthxS); + + WestRXFifoResetDoneDelayxI : entity work.reset_delay_gen + generic map ( + C_TICKS => C_RX_FIFO_RST_DONE_DLY_TICKS) + port map ( + ClkxCI => AuroraClkOutxC.UserClkxC, + PllLockedxSI => AuroraPllLockedxS, + ResetxRI => RXFifoResetDonexD.WestxS, + ResetDelayedxRO => RXFifoResetDoneDelayedxD.WestxS); + + NorthUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + RXFifoRstxRAN.NorthxR) is + begin -- process NorthUpdateRegxP + if RXFifoRstxRAN.NorthxR = '0' then + NorthRXFifoResetDoneStatexDP <= E_RESET; + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + NorthRXFifoResetDoneStatexDP <= NorthRXFifoResetDoneStatexDN; + end if; + end process NorthUpdateRegxP; + + EastUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + RXFifoRstxRAN.EastxR) is + begin -- process EastUpdateRegxP + if RXFifoRstxRAN.EastxR = '0' then + EastRXFifoResetDoneStatexDP <= E_RESET; + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + EastRXFifoResetDoneStatexDP <= EastRXFifoResetDoneStatexDN; + end if; + + end process EastUpdateRegxP; + + SouthUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + RXFifoRstxRAN.SouthxR) is + begin -- process SouthUpdateRegxP + if RXFifoRstxRAN.SouthxR = '0' then + SouthRXFifoResetDoneStatexDP <= E_RESET; + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + SouthRXFifoResetDoneStatexDP <= SouthRXFifoResetDoneStatexDN; + end if; + + end process SouthUpdateRegxP; + + WestUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + RXFifoRstxRAN.WestxR) is + begin -- process WestUpdateRegxP + if RXFifoRstxRAN.WestxR = '0' then + WestRXFifoResetDoneStatexDP <= E_RESET; + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + WestRXFifoResetDoneStatexDP <= WestRXFifoResetDoneStatexDN; + end if; + + end process WestUpdateRegxP; + + NorthRXFifoResetDonexP : process (NorthRXFifoResetDoneStatexDP, + NorthRXFifoStatusxD.ProgEmptyxS, + NorthRXFifoStatusxD.ProgFullxS) is + begin -- process NorthRXFifoResetDonexP + -- Default values + NorthRXFifoResetDoneStatexDN <= NorthRXFifoResetDoneStatexDP; + RXFifoResetDonexD.NorthxS <= '0'; + + case NorthRXFifoResetDoneStatexDP is + when E_RESET => + NorthRXFifoResetDoneStatexDN <= E_WAIT_DONE; + + when E_WAIT_DONE => + if (NorthRXFifoStatusxD.ProgFullxS = '1') and + (NorthRXFifoStatusxD.ProgEmptyxS = '1') then + NorthRXFifoResetDoneStatexDN <= E_WAIT_DONE; + else + RXFifoResetDonexD.NorthxS <= '1'; + NorthRXFifoResetDoneStatexDN <= E_IS_DONE; + end if; + + when E_IS_DONE => + RXFifoResetDonexD.NorthxS <= '1'; + + when others => null; + end case; + end process NorthRXFifoResetDonexP; + + EastRXFifoResetDonexP : process (EastRXFifoResetDoneStatexDP, + EastRXFifoStatusxD.ProgEmptyxS, + EastRXFifoStatusxD.ProgFullxS) is + begin -- process EastRXFifoResetDonexP + -- Default values + EastRXFifoResetDoneStatexDN <= EastRXFifoResetDoneStatexDP; + RXFifoResetDonexD.EastxS <= '0'; + + case EastRXFifoResetDoneStatexDP is + when E_RESET => + EastRXFifoResetDoneStatexDN <= E_WAIT_DONE; + + when E_WAIT_DONE => + if (EastRXFifoStatusxD.ProgFullxS = '1') and + (EastRXFifoStatusxD.ProgEmptyxS = '1') then + EastRXFifoResetDoneStatexDN <= E_WAIT_DONE; + else + RXFifoResetDonexD.EastxS <= '1'; + EastRXFifoResetDoneStatexDN <= E_IS_DONE; + end if; + + when E_IS_DONE => + RXFifoResetDonexD.EastxS <= '1'; + + when others => null; + end case; + end process EastRXFifoResetDonexP; + + SouthRXFifoResetDonexP : process (SouthRXFifoResetDoneStatexDP, + SouthRXFifoStatusxD.ProgEmptyxS, + SouthRXFifoStatusxD.ProgFullxS) is + begin -- process SouthRXFifoResetDonexP + -- Default values + SouthRXFifoResetDoneStatexDN <= SouthRXFifoResetDoneStatexDP; + RXFifoResetDonexD.SouthxS <= '0'; + + case SouthRXFifoResetDoneStatexDP is + when E_RESET => + SouthRXFifoResetDoneStatexDN <= E_WAIT_DONE; + + when E_WAIT_DONE => + if (SouthRXFifoStatusxD.ProgFullxS = '1') and + (SouthRXFifoStatusxD.ProgEmptyxS = '1') then + SouthRXFifoResetDoneStatexDN <= E_WAIT_DONE; + else + RXFifoResetDonexD.SouthxS <= '1'; + SouthRXFifoResetDoneStatexDN <= E_IS_DONE; + end if; + + when E_IS_DONE => + RXFifoResetDonexD.SouthxS <= '1'; + + when others => null; + end case; + end process SouthRXFifoResetDonexP; + + WestRXFifoResetDonexP : process (WestRXFifoResetDoneStatexDP, + WestRXFifoStatusxD.ProgEmptyxS, + WestRXFifoStatusxD.ProgFullxS) is + begin -- process WestRXFifoResetDonexP + -- Default values + WestRXFifoResetDoneStatexDN <= WestRXFifoResetDoneStatexDP; + RXFifoResetDonexD.WestxS <= '0'; + + case WestRXFifoResetDoneStatexDP is + when E_RESET => + WestRXFifoResetDoneStatexDN <= E_WAIT_DONE; + + when E_WAIT_DONE => + if (WestRXFifoStatusxD.ProgFullxS = '1') and + (WestRXFifoStatusxD.ProgEmptyxS = '1') then + WestRXFifoResetDoneStatexDN <= E_WAIT_DONE; + else + RXFifoResetDonexD.WestxS <= '1'; + WestRXFifoResetDoneStatexDN <= E_IS_DONE; + end if; + + when E_IS_DONE => + RXFifoResetDonexD.WestxS <= '1'; + + when others => null; + end case; + end process WestRXFifoResetDonexP; + + end block RXFifoResetDonexB; + + RXBackPressurexB : block is + + signal BackPressureRstxR : t_rx_back_pressure_reset := C_NO_RX_BACK_PRESSURE_RESET; + -- North + signal NorthProgFullxSN : std_ulogic := '0'; + signal NorthProgFullxSP : std_ulogic := '0'; + signal NorthProgEmptyxSN : std_ulogic := '0'; + signal NorthProgEmptyxSP : std_ulogic := '0'; + signal NorthNFCStatexDN : t_nfc_states := C_NFC_IDLE; + signal NorthNFCStatexDP : t_nfc_states := C_NFC_IDLE; + signal NorthNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal NorthNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal NorthNFCValidxSN : std_ulogic := '0'; + signal NorthNFCValidxSP : std_ulogic := '0'; + -- East + signal EastProgFullxSN : std_ulogic := '0'; + signal EastProgFullxSP : std_ulogic := '0'; + signal EastProgEmptyxSN : std_ulogic := '0'; + signal EastProgEmptyxSP : std_ulogic := '0'; + signal EastNFCStatexDN : t_nfc_states := C_NFC_IDLE; + signal EastNFCStatexDP : t_nfc_states := C_NFC_IDLE; + signal EastNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal EastNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal EastNFCValidxSN : std_ulogic := '0'; + signal EastNFCValidxSP : std_ulogic := '0'; + -- South + signal SouthProgFullxSN : std_ulogic := '0'; + signal SouthProgFullxSP : std_ulogic := '0'; + signal SouthProgEmptyxSN : std_ulogic := '0'; + signal SouthProgEmptyxSP : std_ulogic := '0'; + signal SouthNFCStatexDN : t_nfc_states := C_NFC_IDLE; + signal SouthNFCStatexDP : t_nfc_states := C_NFC_IDLE; + signal SouthNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal SouthNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal SouthNFCValidxSN : std_ulogic := '0'; + signal SouthNFCValidxSP : std_ulogic := '0'; + -- West + signal WestProgFullxSN : std_ulogic := '0'; + signal WestProgFullxSP : std_ulogic := '0'; + signal WestProgEmptyxSN : std_ulogic := '0'; + signal WestProgEmptyxSP : std_ulogic := '0'; + signal WestNFCStatexDN : t_nfc_states := C_NFC_IDLE; + signal WestNFCStatexDP : t_nfc_states := C_NFC_IDLE; + signal WestNFCDataxDN : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WestNFCDataxDP : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + signal WestNFCValidxSN : std_ulogic := '0'; + signal WestNFCValidxSP : std_ulogic := '0'; + -- Fifo Error + signal AxisFifoErrorxDN : t_axi4fifo_error := C_NO_AXI4_FIFO_ERROR; + signal AxisFifoErrorxDP : t_axi4fifo_error := C_NO_AXI4_FIFO_ERROR; + + -- Attributes + attribute mark_debug : string; + attribute keep : string; + -- North + attribute mark_debug of NorthNFCStatexDP : signal is "true"; + attribute keep of NorthNFCStatexDP : signal is "true"; + attribute mark_debug of NorthProgFullxSP : signal is "true"; + attribute keep of NorthProgFullxSP : signal is "true"; + attribute mark_debug of NorthProgEmptyxSP : signal is "true"; + attribute keep of NorthProgEmptyxSP : signal is "true"; + -- East + -- attribute mark_debug of EastNFCStatexDP : signal is "true"; + -- attribute keep of EastNFCStatexDP : signal is "true"; + -- attribute mark_debug of EastProgFullxSP : signal is "true"; + -- attribute keep of EastProgFullxSP : signal is "true"; + -- attribute mark_debug of EastProgEmptyxSP : signal is "true"; + -- attribute keep of EastProgEmptyxSP : signal is "true"; + -- South + attribute mark_debug of SouthNFCStatexDP : signal is "true"; + attribute keep of SouthNFCStatexDP : signal is "true"; + attribute mark_debug of SouthProgFullxSP : signal is "true"; + attribute keep of SouthProgFullxSP : signal is "true"; + attribute mark_debug of SouthProgEmptyxSP : signal is "true"; + attribute keep of SouthProgEmptyxSP : signal is "true"; + -- West + -- attribute mark_debug of WestNFCStatexDP : signal is "true"; + -- attribute keep of WestNFCStatexDP : signal is "true"; + -- attribute mark_debug of WestProgFullxSP : signal is "true"; + -- attribute keep of WestProgFullxSP : signal is "true"; + -- attribute mark_debug of WestProgEmptyxSP : signal is "true"; + -- attribute keep of WestProgEmptyxSP : signal is "true"; + + begin -- block RXBackPressurexB + + NorthBackPressureRstxAS : BackPressureRstxR.NorthxR <= AuroraClkOutxC.PllNotLockedxS or + RXResetxR.BackPressureResetxR.NorthxR; + EastBackPressureRstxAS : BackPressureRstxR.EastxR <= AuroraClkOutxC.PllNotLockedxS or + RXResetxR.BackPressureResetxR.EastxR; + SouthBackPressureRstxAS : BackPressureRstxR.SouthxR <= AuroraClkOutxC.PllNotLockedxS or + RXResetxR.BackPressureResetxR.SouthxR; + WestBackPressureRstxAS : BackPressureRstxR.WestxR <= AuroraClkOutxC.PllNotLockedxS or + RXResetxR.BackPressureResetxR.WestxR; + -- NFC Data and valid signals + NorthNFCDataxAS : NorthTXNFCM2SxD.DataxD <= NorthNFCDataxDP; + NorthNFCValidxAS : NorthTXNFCM2SxD.ValidxS <= NorthNFCValidxSP; + NorthProgFullxAS : NorthProgFullxSN <= NorthRXFifoStatusxD.ProgFullxS; + NorthProgEmptyxAS : NorthProgEmptyxSN <= NorthRXFifoStatusxD.ProgEmptyxS; + EastNFCDataxAS : EastTXNFCM2SxD.DataxD <= EastNFCDataxDP; + EastNFCValidxAS : EastTXNFCM2SxD.ValidxS <= EastNFCValidxSP; + EastProgFullxAS : EastProgFullxSN <= EastRXFifoStatusxD.ProgFullxS; + EastProgEmptyxAS : EastProgEmptyxSN <= EastRXFifoStatusxD.ProgEmptyxS; + SouthNFCDataxAS : SouthTXNFCM2SxD.DataxD <= SouthNFCDataxDP; + SouthNFCValidxAS : SouthTXNFCM2SxD.ValidxS <= SouthNFCValidxSP; + SouthProgFullxAS : SouthProgFullxSN <= SouthRXFifoStatusxD.ProgFullxS; + SouthProgEmptyxAS : SouthProgEmptyxSN <= SouthRXFifoStatusxD.ProgEmptyxS; + WestNFCDataxAS : WestTXNFCM2SxD.DataxD <= WestNFCDataxDP; + WestNFCValidxAS : WestTXNFCM2SxD.ValidxS <= WestNFCValidxSP; + WestProgFullxAS : WestProgFullxSN <= WestRXFifoStatusxD.ProgFullxS; + WestProgEmptyxAS : WestProgEmptyxSN <= WestRXFifoStatusxD.ProgEmptyxS; + Axi4FifoErrorxAS : AxisFifoErrorxDO <= AxisFifoErrorxDP; + + NorthUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + BackPressureRstxR.NorthxR) is + begin -- process NorthUpdateRegxP + if BackPressureRstxR.NorthxR = '1' then + NorthProgFullxSP <= '0'; + NorthProgEmptyxSP <= '0'; + NorthNFCStatexDP <= C_NFC_IDLE; + NorthNFCDataxDP <= (others => '0'); + NorthNFCValidxSP <= '0'; + AxisFifoErrorxDP.NorthCounterxD <= (others => '0'); + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + NorthProgFullxSP <= NorthProgFullxSN; + NorthProgEmptyxSP <= NorthProgEmptyxSN; + NorthNFCStatexDP <= NorthNFCStatexDN; + NorthNFCDataxDP <= NorthNFCDataxDN; + NorthNFCValidxSP <= NorthNFCValidxSN; + AxisFifoErrorxDP.NorthCounterxD <= AxisFifoErrorxDN.NorthCounterxD; + end if; + end process NorthUpdateRegxP; + + EastUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + BackPressureRstxR.EastxR) is + begin -- process EastUpdateRegxP + if BackPressureRstxR.EastxR = '1' then + EastProgFullxSP <= '0'; + EastProgEmptyxSP <= '0'; + EastNFCStatexDP <= C_NFC_IDLE; + EastNFCDataxDP <= (others => '0'); + EastNFCValidxSP <= '0'; + AxisFifoErrorxDP.EastCounterxD <= (others => '0'); + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + EastProgFullxSP <= EastProgFullxSN; + EastProgEmptyxSP <= EastProgEmptyxSN; + EastNFCStatexDP <= EastNFCStatexDN; + EastNFCDataxDP <= EastNFCDataxDN; + EastNFCValidxSP <= EastNFCValidxSN; + AxisFifoErrorxDP.EastCounterxD <= AxisFifoErrorxDN.EastCounterxD; + end if; + end process EastUpdateRegxP; + + SouthUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + BackPressureRstxR.SouthxR) is + begin -- process SouthUpdateRegxP + if BackPressureRstxR.SouthxR = '1' then + SouthProgFullxSP <= '0'; + SouthProgEmptyxSP <= '0'; + SouthNFCStatexDP <= C_NFC_IDLE; + SouthNFCDataxDP <= (others => '0'); + SouthNFCValidxSP <= '0'; + AxisFifoErrorxDP.SouthCounterxD <= (others => '0'); + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + SouthProgFullxSP <= SouthProgFullxSN; + SouthProgEmptyxSP <= SouthProgEmptyxSN; + SouthNFCStatexDP <= SouthNFCStatexDN; + SouthNFCDataxDP <= SouthNFCDataxDN; + SouthNFCValidxSP <= SouthNFCValidxSN; + AxisFifoErrorxDP.SouthCounterxD <= AxisFifoErrorxDN.SouthCounterxD; + end if; + end process SouthUpdateRegxP; + + WestUpdateRegxP : process (AuroraClkOutxC.UserClkxC, + BackPressureRstxR.WestxR) is + begin -- process WestUpdateRegxP + if BackPressureRstxR.WestxR = '1' then + WestProgFullxSP <= '0'; + WestProgEmptyxSP <= '0'; + WestNFCStatexDP <= C_NFC_IDLE; + WestNFCDataxDP <= (others => '0'); + WestNFCValidxSP <= '0'; + AxisFifoErrorxDP.WestCounterxD <= (others => '0'); + elsif rising_edge(AuroraClkOutxC.UserClkxC) then + WestProgFullxSP <= WestProgFullxSN; + WestProgEmptyxSP <= WestProgEmptyxSN; + WestNFCStatexDP <= WestNFCStatexDN; + WestNFCDataxDP <= WestNFCDataxDN; + WestNFCValidxSP <= WestNFCValidxSN; + AxisFifoErrorxDP.WestCounterxD <= AxisFifoErrorxDN.WestCounterxD; + end if; + end process WestUpdateRegxP; + + NorthErrorCounterxP : process (AxisFifoErrorxDP.NorthCounterxD, + NorthFifoRXS2MxD.ReadyxS, + NorthProgFullxSN, + NorthProgFullxSP) is + begin -- process NorthErrorCounterxP + -- Default values + AxisFifoErrorxDN.NorthCounterxD <= AxisFifoErrorxDP.NorthCounterxD; + + if ((NorthProgFullxSP = '0' and NorthProgFullxSN = '0') or + (NorthProgFullxSP = '0' and NorthProgFullxSN = '1')) and + NorthFifoRXS2MxD.ReadyxS = '0' then + AxisFifoErrorxDN.NorthCounterxD <= AxisFifoErrorxDP.NorthCounterxD + 1; + end if; + end process NorthErrorCounterxP; + + NorthNFCStatexP : process (NorthNFCDataxDP, NorthNFCStatexDP, + NorthNFCValidxSP, NorthProgEmptyxSN, + NorthProgEmptyxSP, NorthProgFullxSN, + NorthProgFullxSP, + NorthTXNFCS2MxD.ReadyxS) is + begin -- process NorthNFCStatexP + -- Default values + NorthNFCStatexDN <= NorthNFCStatexDP; + NorthNFCDataxDN <= NorthNFCDataxDP; + NorthNFCValidxSN <= NorthNFCValidxSP; + + case NorthNFCStatexDP is + when C_NFC_IDLE => + if (NorthProgFullxSP = '0' and NorthProgFullxSN = '0') then + NorthNFCStatexDN <= C_NFC_IS_XON; + else + NorthNFCDataxDN <= C_NFC_XOFF; + NorthNFCValidxSN <= '1'; + NorthNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XON => + if (NorthProgFullxSP = '0' and NorthProgFullxSN = '1') or + (NorthProgFullxSP = '1' and NorthProgFullxSN = '1') then + NorthNFCDataxDN <= C_NFC_XOFF; + NorthNFCValidxSN <= '1'; + NorthNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XOFF => + if ((NorthProgEmptyxSP = '0' and NorthProgEmptyxSN = '1') or + (NorthProgEmptyxSP = '1' and NorthProgEmptyxSN = '1')) and + (NorthProgFullxSP = '0' and NorthProgFullxSN = '0') then + NorthNFCDataxDN <= C_NFC_XON; + NorthNFCValidxSN <= '1'; + NorthNFCStatexDN <= C_NFC_SEND_XON; + end if; + + when C_NFC_SEND_XON => + if NorthTXNFCS2MxD.ReadyxS = '1' then + NorthNFCValidxSN <= '0'; + NorthNFCStatexDN <= C_NFC_IS_XON; + end if; + + when C_NFC_SEND_XOFF => + if NorthTXNFCS2MxD.ReadyxS = '1' then + NorthNFCValidxSN <= '0'; + NorthNFCStatexDN <= C_NFC_IS_XOFF; + end if; + + when others => null; + end case; + + end process NorthNFCStatexP; + + EastErrorCounterxP : process (AxisFifoErrorxDP.EastCounterxD, + EastFifoRXS2MxD.ReadyxS, + EastProgFullxSN, EastProgFullxSP) is + begin -- process EastErrorCounterxP + -- Default values + AxisFifoErrorxDN.EastCounterxD <= AxisFifoErrorxDP.EastCounterxD; + + if ((EastProgFullxSP = '0' and EastProgFullxSN = '0') or + (EastProgFullxSP = '0' and EastProgFullxSN = '1')) and + EastFifoRXS2MxD.ReadyxS = '0' then + AxisFifoErrorxDN.EastCounterxD <= AxisFifoErrorxDP.EastCounterxD + 1; + end if; + end process EastErrorCounterxP; + + EastNFCStatexP : process (EastNFCDataxDP, EastNFCStatexDP, + EastNFCValidxSP, EastProgEmptyxSN, + EastProgEmptyxSP, EastProgFullxSN, + EastProgFullxSP, + EastTXNFCS2MxD.ReadyxS) is + begin -- process EastNFCStatexP + -- Default values + EastNFCStatexDN <= EastNFCStatexDP; + EastNFCDataxDN <= EastNFCDataxDP; + EastNFCValidxSN <= EastNFCValidxSP; + + case EastNFCStatexDP is + when C_NFC_IDLE => + if (EastProgFullxSP = '0' and EastProgFullxSN = '0') then + EastNFCStatexDN <= C_NFC_IS_XON; + else + EastNFCDataxDN <= C_NFC_XOFF; + EastNFCValidxSN <= '1'; + EastNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XON => + if (EastProgFullxSP = '0' and EastProgFullxSN = '1') or + (EastProgFullxSP = '1' and EastProgFullxSN = '1') then + EastNFCDataxDN <= C_NFC_XOFF; + EastNFCValidxSN <= '1'; + EastNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XOFF => + if ((EastProgEmptyxSP = '0' and EastProgEmptyxSN = '1') or + (EastProgEmptyxSP = '1' and EastProgEmptyxSN = '1')) and + (EastProgFullxSP = '0' and EastProgFullxSN = '0') then + EastNFCDataxDN <= C_NFC_XON; + EastNFCValidxSN <= '1'; + EastNFCStatexDN <= C_NFC_SEND_XON; + end if; + + when C_NFC_SEND_XON => + if EastTXNFCS2MxD.ReadyxS = '1' then + EastNFCValidxSN <= '0'; + EastNFCStatexDN <= C_NFC_IS_XON; + end if; + + when C_NFC_SEND_XOFF => + if EastTXNFCS2MxD.ReadyxS = '1' then + EastNFCValidxSN <= '0'; + EastNFCStatexDN <= C_NFC_IS_XOFF; + end if; + + when others => null; + end case; + + end process EastNFCStatexP; + + SouthErrorCounterxP : process (AxisFifoErrorxDP.SouthCounterxD, + SouthFifoRXS2MxD.ReadyxS, + SouthProgFullxSN, + SouthProgFullxSP) is + begin -- process SouthErrorCounterxP + -- Default values + AxisFifoErrorxDN.SouthCounterxD <= AxisFifoErrorxDP.SouthCounterxD; + + if ((SouthProgFullxSP = '0' and SouthProgFullxSN = '0') or + (SouthProgFullxSP = '0' and SouthProgFullxSN = '1')) and + SouthFifoRXS2MxD.ReadyxS = '0' then + AxisFifoErrorxDN.SouthCounterxD <= AxisFifoErrorxDP.SouthCounterxD + 1; + end if; + end process SouthErrorCounterxP; + + SouthNFCStatexP : process (SouthNFCDataxDP, SouthNFCStatexDP, + SouthNFCValidxSP, SouthProgEmptyxSN, + SouthProgEmptyxSP, SouthProgFullxSN, + SouthProgFullxSP, + SouthTXNFCS2MxD.ReadyxS) is + begin -- process SouthNFCStatexP + -- Default values + SouthNFCStatexDN <= SouthNFCStatexDP; + SouthNFCDataxDN <= SouthNFCDataxDP; + SouthNFCValidxSN <= SouthNFCValidxSP; + + case SouthNFCStatexDP is + when C_NFC_IDLE => + if (SouthProgFullxSP = '0' and SouthProgFullxSN = '0') then + SouthNFCStatexDN <= C_NFC_IS_XON; + else + SouthNFCDataxDN <= C_NFC_XOFF; + SouthNFCValidxSN <= '1'; + SouthNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XON => + if (SouthProgFullxSP = '0' and SouthProgFullxSN = '1') or + (SouthProgFullxSP = '1' and SouthProgFullxSN = '1') then + SouthNFCDataxDN <= C_NFC_XOFF; + SouthNFCValidxSN <= '1'; + SouthNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XOFF => + if ((SouthProgEmptyxSP = '0' and SouthProgEmptyxSN = '1') or + (SouthProgEmptyxSP = '1' and SouthProgEmptyxSN = '1')) and + (SouthProgFullxSP = '0' and SouthProgFullxSN = '0') then + SouthNFCDataxDN <= C_NFC_XON; + SouthNFCValidxSN <= '1'; + SouthNFCStatexDN <= C_NFC_SEND_XON; + end if; + + when C_NFC_SEND_XON => + if SouthTXNFCS2MxD.ReadyxS = '1' then + SouthNFCValidxSN <= '0'; + SouthNFCStatexDN <= C_NFC_IS_XON; + end if; + + when C_NFC_SEND_XOFF => + if SouthTXNFCS2MxD.ReadyxS = '1' then + SouthNFCValidxSN <= '0'; + SouthNFCStatexDN <= C_NFC_IS_XOFF; + end if; + + when others => null; + end case; + + end process SouthNFCStatexP; + + WestErrorCounterxP : process (AxisFifoErrorxDP.WestCounterxD, + WestFifoRXS2MxD.ReadyxS, + WestProgFullxSN, WestProgFullxSP) is + begin -- process WestErrorCounterxP + -- Default values + AxisFifoErrorxDN.WestCounterxD <= AxisFifoErrorxDP.WestCounterxD; + + if ((WestProgFullxSP = '0' and WestProgFullxSN = '0') or + (WestProgFullxSP = '0' and WestProgFullxSN = '1')) and + WestFifoRXS2MxD.ReadyxS = '0' then + AxisFifoErrorxDN.WestCounterxD <= AxisFifoErrorxDP.WestCounterxD + 1; + end if; + end process WestErrorCounterxP; + + WestNFCStatexP : process (WestNFCDataxDP, WestNFCStatexDP, + WestNFCValidxSP, WestProgEmptyxSN, + WestProgEmptyxSP, WestProgFullxSN, + WestProgFullxSP, + WestTXNFCS2MxD.ReadyxS) is + begin -- process WestNFCStatexP + -- Default values + WestNFCStatexDN <= WestNFCStatexDP; + WestNFCDataxDN <= WestNFCDataxDP; + WestNFCValidxSN <= WestNFCValidxSP; + + case WestNFCStatexDP is + when C_NFC_IDLE => + if (WestProgFullxSP = '0' and WestProgFullxSN = '0') then + WestNFCStatexDN <= C_NFC_IS_XON; + else + WestNFCDataxDN <= C_NFC_XOFF; + WestNFCValidxSN <= '1'; + WestNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XON => + if (WestProgFullxSP = '0' and WestProgFullxSN = '1') or + (WestProgFullxSP = '1' and WestProgFullxSN = '1') then + WestNFCDataxDN <= C_NFC_XOFF; + WestNFCValidxSN <= '1'; + WestNFCStatexDN <= C_NFC_SEND_XOFF; + end if; + + when C_NFC_IS_XOFF => + if ((WestProgEmptyxSP = '0' and WestProgEmptyxSN = '1') or + (WestProgEmptyxSP = '1' and WestProgEmptyxSN = '1')) and + (WestProgFullxSP = '0' and WestProgFullxSN = '0') then + WestNFCDataxDN <= C_NFC_XON; + WestNFCValidxSN <= '1'; + WestNFCStatexDN <= C_NFC_SEND_XON; + end if; + + when C_NFC_SEND_XON => + if WestTXNFCS2MxD.ReadyxS = '1' then + WestNFCValidxSN <= '0'; + WestNFCStatexDN <= C_NFC_IS_XON; + end if; + + when C_NFC_SEND_XOFF => + if WestTXNFCS2MxD.ReadyxS = '1' then + WestNFCValidxSN <= '0'; + WestNFCStatexDN <= C_NFC_IS_XOFF; + end if; + + when others => null; + end case; + + end process WestNFCStatexP; + + end block RXBackPressurexB; + + end generate RXFifoModexG; + + end block RXModexB; end arch; diff --git a/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy_wrapper.vhd b/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy_wrapper.vhd new file mode 100644 index 0000000000000000000000000000000000000000..7fb810aea59a564be92840aafe3146db3b81db87 --- /dev/null +++ b/ips/hw/scalp_aurora_phy/src/hdl/scalp_aurora_phy_wrapper.vhd @@ -0,0 +1,682 @@ +---------------------------------------------------------------------------------- +-- _ _ +-- | |_ ___ _ __(_)__ _ +-- | ' \/ -_) '_ \ / _` | +-- |_||_\___| .__/_\__,_| +-- |_| +-- +---------------------------------------------------------------------------------- +-- +-- Company: hepia +-- Author: Joachim Schmidt <joachim.schmidt@hesge.ch +-- +-- Module Name: scalp_aurora_phy_wrapper - arch +-- Target Device: SCALP xc7z015clg485-2 +-- Tool version: 2019.2 +-- Description: scalp_aurora_phy_wrapper +-- +-- Last update: 2020-11-10 +-- +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_unsigned.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_misc.all; + +library unisim; +use unisim.vcomponents.all; + +library work; +use work.axi4_pkg.all; +use work.aurora_status_pkg.all; +use work.aurora_drp_pkg.all; + +entity scalp_aurora_phy_wrapper is + + generic ( + C_DEBUG_MODE : boolean := false); + + port ( + -- GTP Ref Clocks + GTRefClkxCI : in t_gt_ref_slave_clk; + -- Aurora System and GTP Clocks + AuroraClkxCI : in t_aurora_slave_clk; + AuroraClkxCO : out t_aurora_master_clk; + -- Aurora Reset + AuroraResetxRI : in t_aurora_slave_reset; + AuroraResetxRO : out t_aurora_master_link_reset; + -- GTP Serial IO + -- North + GTPFromNorthxDI : in t_aurora_gtp_diff_io_rx; + GTPToNorthxDO : out t_aurora_gtp_diff_io_tx; + -- East + GTPFromEastxDI : in t_aurora_gtp_diff_io_rx; + GTPToEastxDO : out t_aurora_gtp_diff_io_tx; + -- South + GTPFromSouthxDI : in t_aurora_gtp_diff_io_rx; + GTPToSouthxDO : out t_aurora_gtp_diff_io_tx; + -- West + GTPFromWestxDI : in t_aurora_gtp_diff_io_rx; + GTPToWestxDO : out t_aurora_gtp_diff_io_tx; + -- Axi4 Framing Interface + -- North + NorthRXM2SxDO : out t_axi4m2s; + NorthTXM2SxDI : in t_axi4m2s; + NorthTXS2MxDO : out t_axi4s2m; + -- East + EastRXM2SxDO : out t_axi4m2s; + EastTXM2SxDI : in t_axi4m2s; + EastTXS2MxDO : out t_axi4s2m; + -- South + SouthRXM2SxDO : out t_axi4m2s; + SouthTXM2SxDI : in t_axi4m2s; + SouthTXS2MxDO : out t_axi4s2m; + -- West + WestRXM2SxDO : out t_axi4m2s; + WestTXM2SxDI : in t_axi4m2s; + WestTXS2MxDO : out t_axi4s2m; + -- Axi4 Framing UFC Interface + -- North + NorthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + NorthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + NorthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + -- East + EastRXUFCM2SxDO : out t_axi4ufcm2s_rx; + EastTXUFCM2SxDI : in t_axi4ufcm2s_tx; + EastTXUFCS2MxDO : out t_axi4ufcs2m_tx; + -- South + SouthRXUFCM2SxDO : out t_axi4ufcm2s_rx; + SouthTXUFCM2SxDI : in t_axi4ufcm2s_tx; + SouthTXUFCS2MxDO : out t_axi4ufcs2m_tx; + -- West + WestRXUFCM2SxDO : out t_axi4ufcm2s_rx; + WestTXUFCM2SxDI : in t_axi4ufcm2s_tx; + WestTXUFCS2MxDO : out t_axi4ufcs2m_tx; + -- Axi4 Framing NFC Interface + -- North + NorthRXNFCM2SxDO : out t_axi4nfcm2s; + NorthTXNFCM2SxDI : in t_axi4nfcm2s; + NorthTXNFCS2MxDO : out t_axi4nfcs2m; + -- East + EastRXNFCM2SxDO : out t_axi4nfcm2s; + EastTXNFCM2SxDI : in t_axi4nfcm2s; + EastTXNFCS2MxDO : out t_axi4nfcs2m; + -- South + SouthRXNFCM2SxDO : out t_axi4nfcm2s; + SouthTXNFCM2SxDI : in t_axi4nfcm2s; + SouthTXNFCS2mxDO : out t_axi4nfcs2m; + -- West + WestRXNFCM2SxDO : out t_axi4nfcm2s; + WestTXNFCM2SxDI : in t_axi4nfcm2s; + WestTXNFCS2MxDO : out t_axi4nfcs2m; + -- Aurora Ctrl + Status + AuroraCtrlxDI : in t_aurora_control; + AuroraStatusxDO : out t_aurora_status; + -- DRP Port + AuroraDRPM2SxDI : in t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0); + AuroraDRPS2MxDO : out t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0)); + +end scalp_aurora_phy_wrapper; + + +architecture arch of scalp_aurora_phy_wrapper is + + constant C_SIM_GTRESET_SPEEDUP : string := "false"; + constant C_NUM_PLL : integer := 1; + + component reset_logic is + port ( + UserClkxCI : in std_logic; + InitClkxCI : in std_logic; + ResetxRI : in std_logic; + GTResetxRI : in std_logic; + SystemResetxRO : out std_logic; + GTResetxRO : out std_logic); + end component reset_logic; + + component clock_module is + generic ( + C_NUM_PLL : integer); + port ( + InitClkxCI : in std_logic; + InitClkxCO : out std_logic; + GTClkxCI : in std_logic_vector((C_NUM_PLL - 1) downto 0); + GTClkLockedxDI : in std_logic_vector((C_NUM_PLL - 1) downto 0); + UserClkxCO : out std_logic_vector((C_NUM_PLL - 1) downto 0); + SyncClkxCO : out std_logic_vector((C_NUM_PLL - 1) downto 0); + PLLNotLockedxDO : out std_logic_vector((C_NUM_PLL - 1) downto 0)); + end component clock_module; + + component gt_common is + generic ( + C_SIM_GTRESET_SPEEDUP : string); + port ( + GT0GTRefClk0xCI : in std_logic; + GT0PLL0LockxSO : out std_logic; + GT0PLL1LockxSO : out std_logic; + GT0PLL0LockDetClkxCI : in std_logic; + GT0PLL0RefClkLostxSO : out std_logic; + GT0PLL0ClkxCO : out std_logic; + GT0PLL1ClkxCO : out std_logic; + GT0PLL0RefClkxCO : out std_logic; + GT0PLL1RefClkxCO : out std_logic; + GT0PLL0ResetxRI : in std_logic); + end component gt_common; + + -- From Aurora Clock Module + signal AuroraSlaveClkxC : t_aurora_slave_clk := C_AURORA_NO_SLAVE_CLK; + signal AuroraMasterClkxC : t_aurora_master_clk := C_AURORA_NO_MASTER_CLK; + -- From GT Common Module + signal GTCommonSlaveClkxC : t_gt_common_slave_clk := C_GT_COMMON_NO_SLAVE_CLK; + signal GTCommonMasterClkxC : t_gt_common_master_clk := C_GT_COMMON_NO_MASTER_CLK; + -- From Aurora Reset Logic + signal AuroraSlaveResetxR : t_aurora_slave_reset := C_AURORA_NO_SLAVE_RESET; + signal AuroraMasterResetxR : t_aurora_master_reset := C_AURORA_NO_MASTER_RESET; + -- From Aurora Core + signal AuroraMasterLinkResetxR : t_aurora_master_link_reset := C_AURORA_NO_MASTER_LINK_RESET; + signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal NorthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal EastRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal EastTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal SouthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal SouthTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal WestRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; + signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; + signal NorthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal NorthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal NorthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal EastRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal EastTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal EastTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal SouthRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal SouthTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal SouthTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal WestRXUFCM2SxD : t_axi4ufcm2s_rx := C_NO_AXI4_UFC_M2S_RX; + signal WestTXUFCM2SxD : t_axi4ufcm2s_tx := C_NO_AXI4_UFC_M2S_TX; + signal WestTXUFCS2MxD : t_axi4ufcs2m_tx := C_NO_AXI4_UFC_S2M_TX; + signal NorthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal NorthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal EastRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal EastTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal SouthRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal SouthTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal WestRXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCM2SxD : t_axi4nfcm2s := C_NO_AXI4_NFC_M2S; + signal WestTXNFCS2MxD : t_axi4nfcs2m := C_NO_AXI4_NFC_S2M; + signal GTPFromNorthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToNorthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromEastxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToEastxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromSouthxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToSouthxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal GTPFromWestxD : t_aurora_gtp_diff_io_rx := C_AURORA_NO_GTP_DIFF_IO_RX; + signal GTPToWestxD : t_aurora_gtp_diff_io_tx := C_AURORA_NO_GTP_DIFF_IO_TX; + signal AuroraCtrlxD : t_aurora_control := C_AURORA_NO_CONTROL; + signal AuroraStatusxD : t_aurora_status := C_AURORA_NO_STATUS; + signal AuroraDRPM2SxD : t_drpm2s_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_M2S); + signal AuroraDRPS2MxD : t_drps2m_vector((C_NB_GTP_CORE - 1) downto 0) := (others => C_NO_DRP_S2M); + +begin + + ClocksIOxB : block is + begin -- block ClocksIOxB + + AuroraClkSlaveInitClkxAS : AuroraSlaveClkxC.InitClkxC <= AuroraClkxCI.InitClkxC; + AuroraClkSlavexDrpClkxAS : AuroraSlaveClkxC.DrpClkxC <= AuroraClkxCI.DrpClkxC; + AuroraClkMasterInitClkxAS : AuroraClkxCO.InitClkxC <= AuroraMasterClkxC.InitClkxC; + AuroraClkMasterUserClkxAS : AuroraClkxCO.UserClkxC <= AuroraMasterClkxC.UserClkxC; + AuroraClkMasterPllNotLockedxAS : AuroraClkxCO.PLLNotLockedxS <= AuroraMasterClkxC.PllNotLockedxS; + + end block ClocksIOxB; + + ResetIOxB : block is + begin -- block ResetIOxB + + GT0GTRefClk0xAS : GTCommonSlaveClkxC.GTRefClkxC <= GTRefClkxCI.GTRefClkxC; + GT0PLL0LockDetClkxAS : GTCommonSlaveClkxC.GTPLL0LockDetClkxC <= AuroraMasterClkxC.InitClkxC; + AuroraSlaveResetResetxAS : AuroraSlaveResetxR.ResetxR <= AuroraResetxRI.ResetxR; + AuroraSlaveResetGTResetxAS : AuroraSlaveResetxR.GTResetxR <= AuroraResetxRI.GTResetxR; + AuroraMasterLinkResetSystemResetxAS : AuroraResetxRO.SystemResetxR <= AuroraMasterLinkResetxR.SystemResetxR; + AuroraMasterLinkResetLinkResetxAS : AuroraResetxRO.LinkResetxR <= AuroraMasterLinkResetxR.LinkResetxR; + + end block ResetIOxB; + + SignalsIOxB : block is + begin -- block SignalsIOxB + + -- Axi4 Framing + NorthRXM2SxAS : NorthRXM2SxDO <= NorthRXM2SxD; + NorthTXM2SxAS : NorthTXM2SxD <= NorthTXM2SxDI; + NorthTXS2MxAS : NorthTXS2MxDO <= NorthTXS2MxD; + EastRXM2SxAS : EastRXM2SxDO <= EastRXM2SxD; + EastTXM2SxAS : EastTXM2SxD <= EastTXM2SxDI; + EastTXS2MxAS : EastTXS2MxDO <= EastTXS2MxD; + SouthRXM2SxAS : SouthRXM2SxDO <= SouthRXM2SxD; + SouthTXM2SxAS : SouthTXM2SxD <= SouthTXM2SxDI; + SouthTXS2MxAS : SouthTXS2MxDO <= SouthTXS2MxD; + WestRXM2SxAS : WestRXM2SxDO <= WestRXM2SxD; + WestTXM2SxAS : WestTXM2SxD <= WestTXM2SxDI; + WestTXS2MxAS : WestTXS2MxDO <= WestTXS2MxD; + -- Axi4 Framing UFC + NorthRXUFCM2SxAS : NorthRXUFCM2SxDO <= NorthRXUFCM2SxD; + NorthTXUFCM2SxAS : NorthTXUFCM2SxD <= NorthTXUFCM2SxDI; + NorthTXUFCS2MxAS : NorthTXUFCS2MxDO <= NorthTXUFCS2MxD; + EastRXUFCM2SxAS : EastRXUFCM2SxDO <= EastRXUFCM2SxD; + EastTXUFCM2SxAS : EastTXUFCM2SxD <= EastTXUFCM2SxDI; + EastTXUFCS2MxAS : EastTXUFCS2MxDO <= EastTXUFCS2MxD; + SouthRXUFCM2SxAS : SouthRXUFCM2SxDO <= SouthRXUFCM2SxD; + SouthTXUFCM2SxAS : SouthTXUFCM2SxD <= SouthTXUFCM2SxDI; + SouthTXUFCS2MxAS : SouthTXUFCS2MxDO <= SouthTXUFCS2MxD; + WestRXUFCM2SxAS : WestRXUFCM2SxDO <= WestRXUFCM2SxD; + WestTXUFCM2SxAS : WestTXUFCM2SxD <= WestTXUFCM2SxDI; + WestTXUFCS2MxAS : WestTXUFCS2MxDO <= WestTXUFCS2MxD; + -- Axi4 Framing NFC + NorthRXNFCM2SxAS : NorthRXNFCM2SxDO <= NorthRXNFCM2SxD; + NorthTXNFCM2SxAS : NorthTXNFCM2SxD <= NorthTXNFCM2SxDI; + NorthTXNFCS2MxAS : NorthTXNFCS2MxDO <= NorthTXNFCS2MxD; + EastRXNFCM2SxAS : EastRXNFCM2SxDO <= EastRXNFCM2SxD; + EastTXNFCM2SxAS : EastTXNFCM2SxD <= EastTXNFCM2SxDI; + EastTXNFCS2MxAS : EastTXNFCS2MxDO <= EastTXNFCS2MxD; + SouthRXNFCM2SxAS : SouthRXNFCM2SxDO <= SouthRXNFCM2SxD; + SouthTXNFCM2SxAS : SouthTXNFCM2SxD <= SouthTXNFCM2SxDI; + SouthTXNFCS2MxAS : SouthTXNFCS2MxDO <= SouthTXNFCS2MxD; + WestRXNFCM2SxAS : WestRXNFCM2SxDO <= WestRXNFCM2SxD; + WestTXNFCM2SxAS : WestTXNFCM2SxD <= WestTXNFCM2SxDI; + WestTXNFCS2MxAS : WestTXNFCS2MxDO <= WestTXNFCS2MxD; + -- GTP Serial IO + GTPFromNorthxAS : GTPFromNorthxD <= GTPFromNorthxDI; + GTPToNorthxAS : GTPToNorthxDO <= GTPToNorthxD; + GTPFromEastxAS : GTPFromEastxD <= GTPFromEastxDI; + GTPToEastxAS : GTPToEastxDO <= GTPToEastxD; + GTPFromSouthxAS : GTPFromSouthxD <= GTPFromSouthxDI; + GTPToSouthxAS : GTPToSouthxDO <= GTPToSouthxD; + GTPFromWestxAS : GTPFromWestxD <= GTPFromWestxDI; + GTPToWestxAS : GTPToWestxDO <= GTPToWestxD; + -- Aurora Ctrl + Status + AuroraCtrlxAS : AuroraCtrlxD <= AuroraCtrlxDI; + AuroraStatusxAS : AuroraStatusxDO <= AuroraStatusxD; + -- Aurora DRP Port + AuroraDRPM2SxAS : AuroraDRPM2SxD <= AuroraDRPM2SxDI; + AuroraDRPS2MxAS : AuroraDRPS2MxDO <= AuroraDRPS2MxD; + + end block SignalsIOxB; + + ClkRstxB : block is + begin -- block ClkRstxB + + AuroraResetLogicxI : entity work.reset_logic + port map ( + UserClkxCI => AuroraMasterClkxC.UserClkxC, + InitClkxCI => AuroraMasterClkxC.InitClkxC, + ResetxRI => AuroraSlaveResetxR.ResetxR, -- Sync on UserClk + GTResetxRI => AuroraSlaveResetxR.GTResetxR, -- Sync on InitClk + SystemResetxRO => AuroraMasterResetxR.SystemResetxR, + GTResetxRO => AuroraMasterResetxR.GTResetxR); + + AuroraClockModulexI : entity work.clock_module + generic map ( + C_NUM_PLL => C_NUM_PLL) + port map ( + -- Slave + InitClkxCI => AuroraSlaveClkxC.InitClkxC, + GTClkxCI(0) => AuroraSlaveClkxC.GTClkxC, + GTClkLockedxDI(0) => AuroraSlaveClkxC.GTClkLockedxS, + -- Master + InitClkxCO => AuroraMasterClkxC.InitClkxC, + UserClkxCO(0) => AuroraMasterClkxC.UserClkxC, + SyncClkxCO(0) => AuroraMasterClkxC.SyncClkxC, + PLLNotLockedxDO(0) => AuroraMasterClkxC.PllNotLockedxS); + + GTCommonxI : entity work.gt_common + generic map ( + C_SIM_GTRESET_SPEEDUP => C_SIM_GTRESET_SPEEDUP) + port map ( + -- Slave + GT0GTRefClk0xCI => GTCommonSlaveClkxC.GTRefClkxC, + GT0PLL0LockDetClkxCI => GTCommonSlaveClkxC.GTPLL0LockDetClkxC, + GT0PLL0ResetxRI => GTCommonSlaveClkxC.CommonResetxR, + -- Master + GT0PLL0ClkxCO => GTCommonMasterClkxC.GTPLL0ClkxCO, + GT0PLL1ClkxCO => GTCommonMasterClkxC.GTPLL1ClkxCO, + GT0PLL0RefClkxCO => GTCommonMasterClkxC.GTPLL0RefClkxC, + GT0PLL1RefClkxCO => GTCommonMasterClkxC.GTPLL1RefClkxC, + GT0PLL0LockxSO => GTCommonMasterClkxC.GTPLL0LockxS, + GT0PLL1LockxSO => GTCommonMasterClkxC.GTPLL1LockxS, + GT0PLL0RefClkLostxSO => GTCommonMasterClkxC.GTPLL0RefClkLostxS); + + end block ClkRstxB; + + -- Aurora GT Phy + + AuroraGTPhyxB : block is + begin -- block AuroraGTPhyxB + + -- North Channel + + NorthChannelxI : entity work.north_channel + port map ( + -- Clocks and Locked + -- Slave + gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, + quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, + tx_out_clk => AuroraSlaveClkxC.GTClkxC, -- Only North + tx_lock => AuroraSlaveClkxC.GTClkLockedxS, -- Only North + drpclk_in => AuroraSlaveClkxC.DrpClkxC, + init_clk_in => AuroraMasterClkxC.InitClkxC, + -- Master + user_clk => AuroraMasterClkxC.UserClkxC, + sync_clk => AuroraMasterClkxC.SyncClkxC, + pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, + -- GT0 + gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, + gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, + gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, + gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, + gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, + gt_common_reset_out => GTCommonSlaveClkxC.CommonResetxR, -- Only North + -- Reset + reset => AuroraMasterResetxR.SystemResetxR, + gt_reset => AuroraMasterResetxR.GTResetxR, + link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(0), + sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(0), + -- TX + s_axi_tx_tdata => NorthTXM2SxD.DataxD, + s_axi_tx_tkeep => NorthTXM2SxD.KeepxD, + s_axi_tx_tlast => NorthTXM2SxD.LastxS, + s_axi_tx_tvalid => NorthTXM2SxD.ValidxS, + s_axi_tx_tready => NorthTXS2MxD.ReadyxS, + -- RX + m_axi_rx_tdata => NorthRXM2SxD.DataxD, + m_axi_rx_tkeep => NorthRXM2SxD.KeepxD, + m_axi_rx_tlast => NorthRXM2SxD.LastxS, + m_axi_rx_tvalid => NorthRXM2SxD.ValidxS, + -- TX UFC + s_axi_ufc_tx_tvalid => NorthTXUFCM2SxD.ValidxS, + s_axi_ufc_tx_tdata => NorthTXUFCM2SxD.DataxD, -- 3 bits + s_axi_ufc_tx_tready => NorthTXUFCS2MxD.ReadyxS, + -- RX UFC + m_axi_ufc_rx_tdata => NorthRXUFCM2SxD.DataxD, -- 32 bits + m_axi_ufc_rx_tkeep => NorthRXUFCM2SxD.KeepxD, + m_axi_ufc_rx_tlast => NorthRXUFCM2SxD.LastxS, + m_axi_ufc_rx_tvalid => NorthRXUFCM2SxD.ValidxS, + -- TX NFC + s_axi_nfc_tx_tdata => NorthTXNFCM2SxD.DataxD, + s_axi_nfc_tx_tvalid => NorthTXNFCM2SxD.ValidxS, + s_axi_nfc_tx_tready => NorthTXNFCS2MxD.ReadyxS, + -- RX NFC + m_axi_nfc_rx_tdata => NorthRXNFCM2SxD.DataxD, + m_axi_nfc_rx_tvalid => NorthRXNFCM2SxD.ValidxS, + -- GTP + txp => GTPToNorthxD.TXPxD, + txn => GTPToNorthxD.TXNxD, + rxp => GTPFromNorthxD.RXPxD, + rxn => GTPFromNorthxD.RXNxD, + -- Status + hard_err => AuroraStatusxD.HardErrxD(0), + soft_err => AuroraStatusxD.SoftErrxD(0), + frame_err => AuroraStatusxD.FrameErrxD(0), + channel_up => AuroraStatusxD.ChannelUpxD(0), + lane_up => AuroraStatusxD.LaneUpxD(0), + tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(0), + rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(0), + -- Ctrl + loopback => AuroraCtrlxD.LoopbackxD, + power_down => AuroraCtrlxD.PowerDownxS, + -- DRP + drpen_in => AuroraDRPM2SxD(0).DrpEnxS, + drpwe_in => AuroraDRPM2SxD(0).DrpWExS, + drpaddr_in => AuroraDRPM2SxD(0).DrpAddrxD, + drpdi_in => AuroraDRPM2SxD(0).DrpDIxD, + drprdy_out => AuroraDRPS2MxD(0).DrpRdyxS, + drpdo_out => AuroraDRPS2MxD(0).DrpDOxD); + + -- East Channel + + EastChannelxI : entity work.east_channel + port map ( + -- Clocks and Locked + -- Slave + gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, + quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, + tx_out_clk => open, + tx_lock => open, + drpclk_in => AuroraSlaveClkxC.DrpClkxC, + init_clk_in => AuroraMasterClkxC.InitClkxC, + -- Master + user_clk => AuroraMasterClkxC.UserClkxC, + sync_clk => AuroraMasterClkxC.SyncClkxC, + pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, + -- GT0 + gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, + gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, + gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, + gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, + gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, + gt_common_reset_out => open, + -- Reset + reset => AuroraMasterResetxR.SystemResetxR, + gt_reset => AuroraMasterResetxR.GTResetxR, + link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(1), + sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(1), + -- TX + s_axi_tx_tdata => EastTXM2SxD.DataxD, + s_axi_tx_tkeep => EastTXM2SxD.KeepxD, + s_axi_tx_tlast => EastTXM2SxD.LastxS, + s_axi_tx_tvalid => EastTXM2SxD.ValidxS, + s_axi_tx_tready => EastTXS2MxD.ReadyxS, + -- RX + m_axi_rx_tdata => EastRXM2SxD.DataxD, + m_axi_rx_tkeep => EastRXM2SxD.KeepxD, + m_axi_rx_tlast => EastRXM2SxD.LastxS, + m_axi_rx_tvalid => EastRXM2SxD.ValidxS, + -- TX UFC + s_axi_ufc_tx_tvalid => EastTXUFCM2SxD.ValidxS, + s_axi_ufc_tx_tdata => EastTXUFCM2SxD.DataxD, -- 3 bits + s_axi_ufc_tx_tready => EastTXUFCS2MxD.ReadyxS, + -- RX UFC + m_axi_ufc_rx_tdata => EastRXUFCM2SxD.DataxD, -- 32 bits + m_axi_ufc_rx_tkeep => EastRXUFCM2SxD.KeepxD, + m_axi_ufc_rx_tlast => EastRXUFCM2SxD.LastxS, + m_axi_ufc_rx_tvalid => EastRXUFCM2SxD.ValidxS, + -- TX NFC + s_axi_nfc_tx_tdata => EastTXNFCM2SxD.DataxD, + s_axi_nfc_tx_tvalid => EastTXNFCM2SxD.ValidxS, + s_axi_nfc_tx_tready => EastTXNFCS2MxD.ReadyxS, + -- RX NFC + m_axi_nfc_rx_tdata => EastRXNFCM2SxD.DataxD, + m_axi_nfc_rx_tvalid => EastRXNFCM2SxD.ValidxS, + -- GTP + txp => GTPToEastxD.TXPxD, + txn => GTPToEastxD.TXNxD, + rxp => GTPFromEastxD.RXPxD, + rxn => GTPFromEastxD.RXNxD, + -- Status + hard_err => AuroraStatusxD.HardErrxD(1), + soft_err => AuroraStatusxD.SoftErrxD(1), + frame_err => AuroraStatusxD.FrameErrxD(1), + channel_up => AuroraStatusxD.ChannelUpxD(1), + lane_up => AuroraStatusxD.LaneUpxD(1), + tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(1), + rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(1), + -- Ctrl + loopback => AuroraCtrlxD.LoopbackxD, + power_down => AuroraCtrlxD.PowerDownxS, + -- DRP + drpen_in => AuroraDRPM2SxD(1).DrpEnxS, + drpwe_in => AuroraDRPM2SxD(1).DrpWExS, + drpaddr_in => AuroraDRPM2SxD(1).DrpAddrxD, + drpdi_in => AuroraDRPM2SxD(1).DrpDIxD, + drprdy_out => AuroraDRPS2MxD(1).DrpRdyxS, + drpdo_out => AuroraDRPS2MxD(1).DrpDOxD); + + -- South Channel + + SouthChannelxI : entity work.south_channel + port map ( + -- Clocks and Locked + -- Slave + gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, + quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, + tx_out_clk => open, + tx_lock => open, + drpclk_in => AuroraSlaveClkxC.DrpClkxC, + init_clk_in => AuroraMasterClkxC.InitClkxC, + -- Master + user_clk => AuroraMasterClkxC.UserClkxC, + sync_clk => AuroraMasterClkxC.SyncClkxC, + pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, + -- GT0 + gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, + gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, + gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, + gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, + gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, + gt_common_reset_out => open, + -- Reset + reset => AuroraMasterResetxR.SystemResetxR, + gt_reset => AuroraMasterResetxR.GTResetxR, + link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(2), + sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(2), + -- TX + s_axi_tx_tdata => SouthTXM2SxD.DataxD, + s_axi_tx_tkeep => SouthTXM2SxD.KeepxD, + s_axi_tx_tlast => SouthTXM2SxD.LastxS, + s_axi_tx_tvalid => SouthTXM2SxD.ValidxS, + s_axi_tx_tready => SouthTXS2MxD.ReadyxS, + -- RX + m_axi_rx_tdata => SouthRXM2SxD.DataxD, + m_axi_rx_tkeep => SouthRXM2SxD.KeepxD, + m_axi_rx_tlast => SouthRXM2SxD.LastxS, + m_axi_rx_tvalid => SouthRXM2SxD.ValidxS, + -- TX UFC + s_axi_ufc_tx_tvalid => SouthTXUFCM2SxD.ValidxS, + s_axi_ufc_tx_tdata => SouthTXUFCM2SxD.DataxD, -- 3 bits + s_axi_ufc_tx_tready => SouthTXUFCS2MxD.ReadyxS, + -- RX UFC + m_axi_ufc_rx_tdata => SouthRXUFCM2SxD.DataxD, -- 32 bits + m_axi_ufc_rx_tkeep => SouthRXUFCM2SxD.KeepxD, + m_axi_ufc_rx_tlast => SouthRXUFCM2SxD.LastxS, + m_axi_ufc_rx_tvalid => SouthRXUFCM2SxD.ValidxS, + -- TX NFC + s_axi_nfc_tx_tdata => SouthTXNFCM2SxD.DataxD, + s_axi_nfc_tx_tvalid => SouthTXNFCM2SxD.ValidxS, + s_axi_nfc_tx_tready => SouthTXNFCS2MxD.ReadyxS, + -- RX NFC + m_axi_nfc_rx_tdata => SouthRXNFCM2SxD.DataxD, + m_axi_nfc_rx_tvalid => SouthRXNFCM2SxD.ValidxS, + -- GTP + txp => GTPToSouthxD.TXPxD, + txn => GTPToSouthxD.TXNxD, + rxp => GTPFromSouthxD.RXPxD, + rxn => GTPFromSouthxD.RXNxD, + -- Status + hard_err => AuroraStatusxD.HardErrxD(2), + soft_err => AuroraStatusxD.SoftErrxD(2), + frame_err => AuroraStatusxD.FrameErrxD(2), + channel_up => AuroraStatusxD.ChannelUpxD(2), + lane_up => AuroraStatusxD.LaneUpxD(2), + tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(2), + rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(2), + -- Ctrl + loopback => AuroraCtrlxD.LoopbackxD, + power_down => AuroraCtrlxD.PowerDownxS, + -- DRP + drpen_in => AuroraDRPM2SxD(2).DrpEnxS, + drpwe_in => AuroraDRPM2SxD(2).DrpWExS, + drpaddr_in => AuroraDRPM2SxD(2).DrpAddrxD, + drpdi_in => AuroraDRPM2SxD(2).DrpDIxD, + drprdy_out => AuroraDRPS2MxD(2).DrpRdyxS, + drpdo_out => AuroraDRPS2MxD(2).DrpDOxD); + + -- West Channel + + WestChannelxI : entity work.west_channel + port map ( + -- Clocks and Locked + -- Slave + gt_refclk1 => GTCommonSlaveClkxC.GTRefClkxC, + quad1_common_lock_in => GTCommonMasterClkxC.GTPLL0LockxS, + tx_out_clk => open, + tx_lock => open, + drpclk_in => AuroraSlaveClkxC.DrpClkxC, + init_clk_in => AuroraMasterClkxC.InitClkxC, + -- Master + user_clk => AuroraMasterClkxC.UserClkxC, + sync_clk => AuroraMasterClkxC.SyncClkxC, + pll_not_locked => AuroraMasterClkxC.PllNotLockedxS, + -- GT0 + gt0_pll0outclk_in => GTCommonMasterClkxC.GTPLL0ClkxCO, + gt0_pll1outclk_in => GTCommonMasterClkxC.GTPLL1ClkxCO, + gt0_pll0outrefclk_in => GTCommonMasterClkxC.GTPLL0RefClkxC, + gt0_pll1outrefclk_in => GTCommonMasterClkxC.GTPLL1RefClkxC, + gt0_pll0refclklost_in => GTCommonMasterClkxC.GTPLL0RefClkLostxS, + gt_common_reset_out => open, + -- Reset + reset => AuroraMasterResetxR.SystemResetxR, + gt_reset => AuroraMasterResetxR.GTResetxR, + link_reset_out => AuroraMasterLinkResetxR.LinkResetxR(3), + sys_reset_out => AuroraMasterLinkResetxR.SystemResetxR(3), + -- TX + s_axi_tx_tdata => WestTXM2SxD.DataxD, + s_axi_tx_tkeep => WestTXM2SxD.KeepxD, + s_axi_tx_tlast => WestTXM2SxD.LastxS, + s_axi_tx_tvalid => WestTXM2SxD.ValidxS, + s_axi_tx_tready => WestTXS2MxD.ReadyxS, + -- RX + m_axi_rx_tdata => WestRXM2SxD.DataxD, + m_axi_rx_tkeep => WestRXM2SxD.KeepxD, + m_axi_rx_tlast => WestRXM2SxD.LastxS, + m_axi_rx_tvalid => WestRXM2SxD.ValidxS, + -- TX UFC + s_axi_ufc_tx_tvalid => WestTXUFCM2SxD.ValidxS, + s_axi_ufc_tx_tdata => WestTXUFCM2SxD.DataxD, -- 3 bits + s_axi_ufc_tx_tready => WestTXUFCS2MxD.ReadyxS, + -- RX UFC + m_axi_ufc_rx_tdata => WestRXUFCM2SxD.DataxD, -- 32 bits + m_axi_ufc_rx_tkeep => WestRXUFCM2SxD.KeepxD, + m_axi_ufc_rx_tlast => WestRXUFCM2SxD.LastxS, + m_axi_ufc_rx_tvalid => WestRXUFCM2SxD.ValidxS, + -- TX NFC + s_axi_nfc_tx_tdata => WestTXNFCM2SxD.DataxD, + s_axi_nfc_tx_tvalid => WestTXNFCM2SxD.ValidxS, + s_axi_nfc_tx_tready => WestTXNFCS2MxD.ReadyxS, + -- RX NFC + m_axi_nfc_rx_tdata => WestRXNFCM2SxD.DataxD, + m_axi_nfc_rx_tvalid => WestRXNFCM2SxD.ValidxS, + -- GTP + txp => GTPToWestxD.TXPxD, + txn => GTPToWestxD.TXNxD, + rxp => GTPFromWestxD.RXPxD, + rxn => GTPFromWestxD.RXNxD, + -- Status + hard_err => AuroraStatusxD.HardErrxD(3), + soft_err => AuroraStatusxD.SoftErrxD(3), + frame_err => AuroraStatusxD.FrameErrxD(3), + channel_up => AuroraStatusxD.ChannelUpxD(3), + lane_up => AuroraStatusxD.LaneUpxD(3), + tx_resetdone_out => AuroraStatusxD.TXResetDoneOutxD(3), + rx_resetdone_out => AuroraStatusxD.RXResetDoneOutxD(3), + -- Ctrl + loopback => AuroraCtrlxD.LoopbackxD, + power_down => AuroraCtrlxD.PowerDownxS, + -- DRP + drpen_in => AuroraDRPM2SxD(3).DrpEnxS, + drpwe_in => AuroraDRPM2SxD(3).DrpWExS, + drpaddr_in => AuroraDRPM2SxD(3).DrpAddrxD, + drpdi_in => AuroraDRPM2SxD(3).DrpDIxD, + drprdy_out => AuroraDRPS2MxD(3).DrpRdyxS, + drpdo_out => AuroraDRPS2MxD(3).DrpDOxD); + + end block AuroraGTPhyxB; + +end arch; diff --git a/ips/hw/scalp_aurora_phy/src/ip_core/east_channel/east_channel.xci b/ips/hw/scalp_aurora_phy/src/ip_core/east_channel/east_channel.xci index 22da748bd7c397b297602ad7f0a605d22703b089..631b2201e5dd582fdb70146677874aeee77568b0 100644 --- a/ips/hw/scalp_aurora_phy/src/ip_core/east_channel/east_channel.xci +++ b/ips/hw/scalp_aurora_phy/src/ip_core/east_channel/east_channel.xci @@ -77,7 +77,7 @@ <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.FREQ_HZ">100000000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TKEEP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TLAST">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TSTRB">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.INSERT_VIP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.LAYERED_METADATA">undef</spirit:configurableElementValue> @@ -245,7 +245,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_init_clk">125.0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_lane_width">4</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_line_rate">50000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">true</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc_mode">IMM</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_refclk_frequency">125000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_rembuswidthselect">2</spirit:configurableElementValue> @@ -272,7 +272,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.component_name">east_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.dataflow_config">Duplex</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.drp_freq">125.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gtquadcnt">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ins_loss_nyq">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.interface_mode">Framing</spirit:configurableElementValue> @@ -364,7 +364,7 @@ <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">east_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRP_FREQ">125</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Dataflow_Config">Duplex</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INS_LOSS_NYQ">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Interface_Mode">Framing</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_COUPLING">AC</spirit:configurableElementValue> diff --git a/ips/hw/scalp_aurora_phy/src/ip_core/north_channel/north_channel.xci b/ips/hw/scalp_aurora_phy/src/ip_core/north_channel/north_channel.xci index 7a42055b953eea1f6ecfd54b94620eab924df8a2..7222490407409a8a54072b3ca47b97b6f77dcb54 100644 --- a/ips/hw/scalp_aurora_phy/src/ip_core/north_channel/north_channel.xci +++ b/ips/hw/scalp_aurora_phy/src/ip_core/north_channel/north_channel.xci @@ -77,7 +77,7 @@ <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.FREQ_HZ">100000000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TKEEP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TLAST">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TSTRB">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.INSERT_VIP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.LAYERED_METADATA">undef</spirit:configurableElementValue> @@ -245,7 +245,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_init_clk">125.0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_lane_width">4</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_line_rate">50000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">true</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc_mode">IMM</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_refclk_frequency">125000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_rembuswidthselect">2</spirit:configurableElementValue> @@ -272,7 +272,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.component_name">north_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.dataflow_config">Duplex</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.drp_freq">125.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gtquadcnt">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ins_loss_nyq">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.interface_mode">Framing</spirit:configurableElementValue> @@ -364,7 +364,7 @@ <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">north_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRP_FREQ">125</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Dataflow_Config">Duplex</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INS_LOSS_NYQ">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Interface_Mode">Framing</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_COUPLING">AC</spirit:configurableElementValue> diff --git a/ips/hw/scalp_aurora_phy/src/ip_core/south_channel/south_channel.xci b/ips/hw/scalp_aurora_phy/src/ip_core/south_channel/south_channel.xci index f36f95fc4003e0a475847c1eb14b267d1e65a838..00a1133a1520f5562e1d9450c11fa654e74ead9a 100644 --- a/ips/hw/scalp_aurora_phy/src/ip_core/south_channel/south_channel.xci +++ b/ips/hw/scalp_aurora_phy/src/ip_core/south_channel/south_channel.xci @@ -77,7 +77,7 @@ <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.FREQ_HZ">100000000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TKEEP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TLAST">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TSTRB">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.INSERT_VIP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.LAYERED_METADATA">undef</spirit:configurableElementValue> @@ -245,7 +245,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_init_clk">125.0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_lane_width">4</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_line_rate">50000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">true</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc_mode">IMM</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_refclk_frequency">125000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_rembuswidthselect">2</spirit:configurableElementValue> @@ -272,7 +272,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.component_name">south_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.dataflow_config">Duplex</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.drp_freq">125.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gtquadcnt">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ins_loss_nyq">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.interface_mode">Framing</spirit:configurableElementValue> @@ -364,7 +364,7 @@ <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">south_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRP_FREQ">125</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Dataflow_Config">Duplex</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INS_LOSS_NYQ">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Interface_Mode">Framing</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_COUPLING">AC</spirit:configurableElementValue> diff --git a/ips/hw/scalp_aurora_phy/src/ip_core/west_channel/west_channel.xci b/ips/hw/scalp_aurora_phy/src/ip_core/west_channel/west_channel.xci index d226a8227ad3a61a3818c17d0e3298a75d6e12e5..99ec90d4c97656a1c2eae9f0f513143c2db38371 100644 --- a/ips/hw/scalp_aurora_phy/src/ip_core/west_channel/west_channel.xci +++ b/ips/hw/scalp_aurora_phy/src/ip_core/west_channel/west_channel.xci @@ -77,7 +77,7 @@ <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.FREQ_HZ">100000000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TKEEP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TLAST">0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TREADY">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.HAS_TSTRB">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.INSERT_VIP">0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.NFC_S_AXI_TX.LAYERED_METADATA">undef</spirit:configurableElementValue> @@ -245,7 +245,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_init_clk">125.0</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_lane_width">4</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_line_rate">50000</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">false</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc">true</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_nfc_mode">IMM</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_refclk_frequency">125000</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.c_rembuswidthselect">2</spirit:configurableElementValue> @@ -272,7 +272,7 @@ <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.component_name">west_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.dataflow_config">Duplex</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.drp_freq">125.0</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.flow_mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.gtquadcnt">1</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.ins_loss_nyq">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.interface_mode">Framing</spirit:configurableElementValue> @@ -364,7 +364,7 @@ <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">west_channel</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DRP_FREQ">125</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Dataflow_Config">Duplex</spirit:configurableElementValue> - <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Flow_Mode">UFC+_Immediate_NFC</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INS_LOSS_NYQ">14</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Interface_Mode">Framing</spirit:configurableElementValue> <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RX_COUPLING">AC</spirit:configurableElementValue> diff --git a/ips/hw/scalp_aurora_phy_rx_fifo/src/hdl/scalp_aurora_phy_rx_fifo.vhd b/ips/hw/scalp_aurora_phy_rx_fifo/src/hdl/scalp_aurora_phy_rx_fifo.vhd index b7bff2d8a315cdebbaea08f0058891f0315cbb22..a02841eeb5dff42a8d391297e4d17d797e8eed2f 100644 --- a/ips/hw/scalp_aurora_phy_rx_fifo/src/hdl/scalp_aurora_phy_rx_fifo.vhd +++ b/ips/hw/scalp_aurora_phy_rx_fifo/src/hdl/scalp_aurora_phy_rx_fifo.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.2 -- Description: scalp_aurora_phy_rx_fifo -- --- Last update: 2020-11-07 +-- Last update: 2020-11-18 -- --------------------------------------------------------------------------------- @@ -24,6 +24,7 @@ use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.axi4_pkg.all; +use work.aurora_status_pkg.all; entity scalp_aurora_phy_rx_fifo is @@ -31,7 +32,7 @@ entity scalp_aurora_phy_rx_fifo is -- Clocks and Reset RXClkxCI : in std_ulogic; TXClkxCI : in std_ulogic; - RXRstxRANI : in std_ulogic; + RXRstxRANI : in t_rx_fifo_reset; -- North -- RX Data NorthRXM2SxDI : in t_axi4m2s; @@ -96,7 +97,7 @@ architecture arch of scalp_aurora_phy_rx_fifo is signal RXClkxC : std_ulogic := '0'; signal TXClkxC : std_ulogic := '0'; - signal RXRstxRAN : std_ulogic := '0'; + signal RXRstxRAN : t_rx_fifo_reset := C_NO_RX_FIFO_RESET; -- North signal NorthRXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; signal NorthRXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; @@ -163,7 +164,7 @@ begin NorthAxisDataFifoxI : axis_data_fifo port map ( -- Slave side - s_axis_aresetn => RXRstxRAN, + s_axis_aresetn => RXRstxRAN.NorthxR, s_axis_aclk => RXClkxC, s_axis_tdata => NorthRXM2SxD.DataxD, s_axis_tkeep => NorthRXM2SxD.KeepxD, @@ -186,7 +187,7 @@ begin EastAxisDataFifoxI : axis_data_fifo port map ( -- Slave side - s_axis_aresetn => RXRstxRAN, + s_axis_aresetn => RXRstxRAN.EastxR, s_axis_aclk => RXClkxC, s_axis_tdata => EastRXM2SxD.DataxD, s_axis_tkeep => EastRXM2SxD.KeepxD, @@ -209,7 +210,7 @@ begin SouthAxisDataFifoxI : axis_data_fifo port map ( -- Slave side - s_axis_aresetn => RXRstxRAN, + s_axis_aresetn => RXRstxRAN.SouthxR, s_axis_aclk => RXClkxC, s_axis_tdata => SouthRXM2SxD.DataxD, s_axis_tkeep => SouthRXM2SxD.KeepxD, @@ -232,7 +233,7 @@ begin WestAxisDataFifoxI : axis_data_fifo port map ( -- Slave side - s_axis_aresetn => RXRstxRAN, + s_axis_aresetn => RXRstxRAN.WestxR, s_axis_aclk => RXClkxC, s_axis_tdata => WestRXM2SxD.DataxD, s_axis_tkeep => WestRXM2SxD.KeepxD, diff --git a/ips/hw/scalp_design_debug/src/ip_core/vio_user_resets/vio_user_resets.xci b/ips/hw/scalp_design_debug/src/ip_core/vio_user_resets/vio_user_resets.xci new file mode 100644 index 0000000000000000000000000000000000000000..2025e0c9c1a39d0f1de6cf25371ea17511c8f284 --- /dev/null +++ b/ips/hw/scalp_design_debug/src/ip_core/vio_user_resets/vio_user_resets.xci @@ -0,0 +1,833 @@ +<?xml version="1.0" encoding="UTF-8"?> +<spirit:design xmlns:xilinx="http://www.xilinx.com" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <spirit:vendor>xilinx.com</spirit:vendor> + <spirit:library>xci</spirit:library> + <spirit:name>unknown</spirit:name> + <spirit:version>1.0</spirit:version> + <spirit:componentInstances> + <spirit:componentInstance> + <spirit:instanceName>vio_user_resets</spirit:instanceName> + <spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="vio" spirit:version="3.0"/> + <spirit:configurableElementValues> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.ASSOCIATED_BUSIF"/> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.ASSOCIATED_RESET"/> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.CLK_DOMAIN"/> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.FREQ_HZ">100000000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.INSERT_VIP">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="BUSIFPARAM_VALUE.SIGNAL_CLOCK.PHASE">0.000</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_EN_PROBE_IN_ACTIVITY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_NUM_PROBE_IN">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_NUM_PROBE_OUT">12</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_XDEVICEFAMILY">zynq</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_EN_PROBE_IN_ACTIVITY">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_EN_SYNCHRONIZATION">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_NUM_PROBE_IN">0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_NUM_PROBE_OUT">12</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN0_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN100_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN101_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN102_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN103_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN104_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN105_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN106_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN107_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN108_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN109_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN10_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN110_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN111_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN112_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN113_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN114_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN115_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN116_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN117_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN118_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN119_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN11_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN120_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN121_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN122_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN123_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN124_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN125_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN126_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN127_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN128_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN129_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN12_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN130_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN131_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN132_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN133_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN134_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN135_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN136_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN137_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN138_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN139_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN13_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN140_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN141_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN142_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN143_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN144_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN145_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN146_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN147_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN148_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN149_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN14_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN150_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN151_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN152_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN153_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN154_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN155_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN156_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN157_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN158_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN159_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN15_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN160_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN161_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN162_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN163_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN164_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN165_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN166_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN167_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN168_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN169_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN16_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN170_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN171_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN172_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN173_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN174_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN175_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN176_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN177_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN178_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN179_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN17_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN180_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN181_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN182_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN183_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN184_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN185_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN186_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN187_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN188_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN189_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN18_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN190_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN191_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN192_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN193_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN194_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN195_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN196_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN197_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN198_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN199_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN19_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN1_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN200_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN201_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN202_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN203_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN204_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN205_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN206_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN207_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN208_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN209_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN20_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN210_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN211_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN212_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN213_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN214_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN215_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN216_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN217_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN218_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN219_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN21_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN220_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN221_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN222_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN223_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN224_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN225_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN226_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN227_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN228_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN229_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN22_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN230_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN231_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN232_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN233_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN234_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN235_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN236_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN237_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN238_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN239_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN23_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN240_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN241_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN242_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN243_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN244_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN245_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN246_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN247_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN248_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN249_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN24_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN250_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN251_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN252_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN253_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN254_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN255_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN25_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN26_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN27_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN28_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN29_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN2_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN30_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN31_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN32_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN33_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN34_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN35_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN36_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN37_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN38_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN39_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN3_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN40_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN41_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN42_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN43_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN44_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN45_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN46_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN47_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN48_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN49_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN4_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN50_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN51_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN52_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN53_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN54_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN55_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN56_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN57_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN58_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN59_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN5_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN60_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN61_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN62_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN63_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN64_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN65_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN66_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN67_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN68_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN69_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN6_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN70_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN71_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN72_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN73_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN74_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN75_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN76_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN77_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN78_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN79_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN7_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN80_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN81_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN82_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN83_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN84_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN85_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN86_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN87_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN88_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN89_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN8_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN90_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN91_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN92_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN93_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN94_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN95_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN96_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN97_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN98_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN99_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_IN9_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT0_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT0_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT100_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT100_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT101_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT101_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT102_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT102_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT103_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT103_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT104_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT104_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT105_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT105_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT106_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT106_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT107_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT107_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT108_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT108_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT109_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT109_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT10_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT10_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT110_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT110_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT111_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT111_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT112_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT112_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT113_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT113_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT114_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT114_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT115_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT115_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT116_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT116_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT117_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT117_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT118_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT118_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT119_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT119_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT11_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT11_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT120_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT120_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT121_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT121_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT122_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT122_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT123_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT123_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT124_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT124_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT125_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT125_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT126_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT126_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT127_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT127_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT128_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT128_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT129_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT129_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT12_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT12_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT130_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT130_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT131_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT131_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT132_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT132_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT133_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT133_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT134_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT134_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT135_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT135_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT136_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT136_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT137_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT137_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT138_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT138_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT139_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT139_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT13_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT13_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT140_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT140_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT141_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT141_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT142_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT142_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT143_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT143_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT144_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT144_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT145_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT145_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT146_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT146_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT147_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT147_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT148_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT148_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT149_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT149_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT14_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT14_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT150_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT150_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT151_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT151_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT152_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT152_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT153_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT153_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT154_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT154_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT155_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT155_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT156_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT156_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT157_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT157_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT158_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT158_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT159_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT159_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT15_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT15_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT160_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT160_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT161_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT161_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT162_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT162_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT163_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT163_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT164_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT164_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT165_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT165_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT166_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT166_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT167_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT167_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT168_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT168_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT169_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT169_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT16_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT16_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT170_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT170_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT171_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT171_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT172_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT172_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT173_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT173_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT174_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT174_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT175_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT175_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT176_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT176_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT177_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT177_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT178_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT178_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT179_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT179_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT17_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT17_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT180_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT180_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT181_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT181_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT182_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT182_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT183_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT183_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT184_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT184_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT185_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT185_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT186_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT186_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT187_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT187_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT188_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT188_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT189_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT189_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT18_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT18_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT190_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT190_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT191_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT191_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT192_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT192_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT193_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT193_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT194_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT194_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT195_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT195_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT196_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT196_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT197_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT197_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT198_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT198_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT199_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT199_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT19_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT19_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT1_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT1_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT200_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT200_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT201_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT201_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT202_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT202_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT203_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT203_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT204_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT204_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT205_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT205_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT206_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT206_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT207_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT207_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT208_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT208_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT209_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT209_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT20_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT20_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT210_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT210_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT211_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT211_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT212_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT212_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT213_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT213_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT214_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT214_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT215_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT215_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT216_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT216_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT217_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT217_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT218_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT218_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT219_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT219_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT21_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT21_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT220_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT220_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT221_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT221_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT222_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT222_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT223_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT223_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT224_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT224_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT225_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT225_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT226_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT226_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT227_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT227_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT228_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT228_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT229_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT229_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT22_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT22_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT230_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT230_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT231_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT231_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT232_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT232_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT233_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT233_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT234_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT234_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT235_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT235_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT236_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT236_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT237_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT237_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT238_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT238_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT239_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT239_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT23_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT23_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT240_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT240_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT241_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT241_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT242_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT242_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT243_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT243_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT244_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT244_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT245_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT245_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT246_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT246_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT247_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT247_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT248_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT248_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT249_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT249_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT24_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT24_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT250_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT250_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT251_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT251_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT252_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT252_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT253_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT253_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT254_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT254_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT255_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT255_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT25_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT25_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT26_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT26_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT27_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT27_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT28_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT28_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT29_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT29_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT2_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT2_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT30_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT30_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT31_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT31_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT32_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT32_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT33_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT33_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT34_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT34_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT35_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT35_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT36_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT36_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT37_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT37_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT38_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT38_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT39_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT39_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT3_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT3_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT40_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT40_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT41_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT41_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT42_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT42_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT43_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT43_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT44_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT44_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT45_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT45_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT46_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT46_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT47_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT47_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT48_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT48_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT49_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT49_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT4_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT4_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT50_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT50_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT51_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT51_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT52_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT52_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT53_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT53_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT54_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT54_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT55_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT55_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT56_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT56_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT57_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT57_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT58_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT58_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT59_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT59_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT5_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT5_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT60_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT60_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT61_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT61_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT62_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT62_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT63_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT63_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT64_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT64_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT65_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT65_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT66_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT66_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT67_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT67_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT68_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT68_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT69_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT69_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT6_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT6_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT70_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT70_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT71_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT71_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT72_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT72_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT73_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT73_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT74_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT74_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT75_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT75_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT76_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT76_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT77_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT77_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT78_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT78_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT79_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT79_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT7_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT7_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT80_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT80_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT81_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT81_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT82_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT82_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT83_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT83_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT84_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT84_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT85_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT85_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT86_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT86_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT87_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT87_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT88_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT88_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT89_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT89_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT8_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT8_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT90_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT90_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT91_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT91_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT92_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT92_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT93_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT93_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT94_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT94_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT95_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT95_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT96_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT96_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT97_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT97_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT98_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT98_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT99_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT99_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT9_INIT_VAL">0x0</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_PROBE_OUT9_WIDTH">1</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">vio_user_resets</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.ARCHITECTURE">zynq</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BASE_BOARD_PART"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.BOARD_CONNECTIONS"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.DEVICE">xc7z015</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PACKAGE">clg485</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.PREFHDL">VHDL</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SILICON_REVISION"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SIMULATOR_LANGUAGE">MIXED</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.SPEEDGRADE">-2</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.STATIC_POWER"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.TEMPERATURE_GRADE"/> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_CUSTOMIZATION">TRUE</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="PROJECT_PARAM.USE_RDI_GENERATION">TRUE</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPCONTEXT">IP_Flow</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.IPREVISION">19</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.MANAGED">TRUE</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.OUTPUTDIR">.</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SELECTEDSIMMODEL"/> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SHAREDDIR">.</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SWVERSION">2019.2</spirit:configurableElementValue> + <spirit:configurableElementValue spirit:referenceId="RUNTIME_PARAM.SYNTHESISFLOW">OUT_OF_CONTEXT</spirit:configurableElementValue> + </spirit:configurableElementValues> + <spirit:vendorExtensions> + <xilinx:componentInstanceExtensions> + <xilinx:configElementInfos> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_EN_PROBE_IN_ACTIVITY" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_NUM_PROBE_IN" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_NUM_PROBE_OUT" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_PROBE_OUT0_INIT_VAL" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_PROBE_OUT1_INIT_VAL" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_PROBE_OUT2_INIT_VAL" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_PROBE_OUT3_INIT_VAL" xilinx:valueSource="user"/> + <xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_PROBE_OUT4_INIT_VAL" xilinx:valueSource="user"/> + </xilinx:configElementInfos> + </xilinx:componentInstanceExtensions> + </spirit:vendorExtensions> + </spirit:componentInstance> + </spirit:componentInstances> +</spirit:design> diff --git a/packages/hw/aurora_status_pkg/src/hdl/aurora_status_pkg.vhd b/packages/hw/aurora_status_pkg/src/hdl/aurora_status_pkg.vhd index 52f9349ed0544c0280ef4bc3b061b7d380ce45a2..d2a4046c5363ddea024cb275ee5e51fd4fb57ffd 100644 --- a/packages/hw/aurora_status_pkg/src/hdl/aurora_status_pkg.vhd +++ b/packages/hw/aurora_status_pkg/src/hdl/aurora_status_pkg.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.2 -- Description: Control and status signals for the Aurora phy. -- --- Last update: 2020-10-06 +-- Last update: 2020-11-25 -- --------------------------------------------------------------------------------- @@ -209,6 +209,87 @@ package aurora_status_pkg is constant C_AURORA_NO_MASTER_LINK_RESET : t_aurora_master_link_reset := (SystemResetxR => (others => '0'), LinkResetxR => (others => '0')); + type t_rx_fifo_reset is record + NorthxR : std_ulogic; + EastxR : std_ulogic; + SouthxR : std_ulogic; + WestxR : std_ulogic; + end record t_rx_fifo_reset; + + constant C_NO_RX_FIFO_RESET : t_rx_fifo_reset := (NorthxR => '0', + EastxR => '0', + SouthxR => '0', + WestxR => '0'); + + constant C_SET_RX_FIFO_RESET : t_rx_fifo_reset := (NorthxR => '1', + EastxR => '1', + SouthxR => '1', + WestxR => '1'); + + type t_rx_back_pressure_reset is record + NorthxR : std_ulogic; + EastxR : std_ulogic; + SouthxR : std_ulogic; + WestxR : std_ulogic; + end record t_rx_back_pressure_reset; + + constant C_NO_RX_BACK_PRESSURE_RESET : t_rx_back_pressure_reset := (NorthxR => '0', + EastxR => '0', + SouthxR => '0', + WestxR => '0'); + + constant C_SET_RX_BACK_PRESSURE_RESET : t_rx_back_pressure_reset := (NorthxR => '1', + EastxR => '1', + SouthxR => '1', + WestxR => '1'); + + type t_rx_reset is record + FifoResetxR : t_rx_fifo_reset; + BackPressureResetxR : t_rx_back_pressure_reset; + end record t_rx_reset; + + constant C_NO_RX_RESET : t_rx_reset := (FifoResetxR => C_NO_RX_FIFO_RESET, + BackPressureResetxR => C_NO_RX_BACK_PRESSURE_RESET); + + constant C_SET_RX_RESET : t_rx_reset := (FifoResetxR => C_SET_RX_FIFO_RESET, + BackPressureResetxR => C_SET_RX_BACK_PRESSURE_RESET); + + type t_if_common_reset is record + NorthxR : std_ulogic; + EastxR : std_ulogic; + SouthxR : std_ulogic; + WestxR : std_ulogic; + end record t_if_common_reset; + + constant C_NO_IF_COMMON_RESET : t_if_common_reset := (NorthxR => '0', + EastxR => '0', + SouthxR => '0', + WestxR => '0'); + + constant C_SET_IF_COMMON_RESET : t_if_common_reset := (NorthxR => '1', + EastxR => '1', + SouthxR => '1', + WestxR => '1'); + + type t_rx_fifo_reset_done is record + NorthxS : std_ulogic; + EastxS : std_ulogic; + SouthxS : std_ulogic; + WestxS : std_ulogic; + end record t_rx_fifo_reset_done; + + constant C_NO_RX_FIFO_RESET_DONE : t_rx_fifo_reset_done := (NorthxS => '0', + EastxS => '0', + SouthxS => '0', + WestxS => '0'); + + constant C_SET_RX_FIFO_RESET_DONE : t_rx_fifo_reset_done := (NorthxS => '1', + EastxS => '1', + SouthxS => '1', + WestxS => '1'); + + type t_rx_fifo_reset_done_states is (E_RESET, E_WAIT_DONE, E_IS_DONE); + -- Functions function std_bool (exp_in : in boolean) return std_ulogic; diff --git a/packages/hw/axi4_pkg/src/hdl/axi4_pkg.vhd b/packages/hw/axi4_pkg/src/hdl/axi4_pkg.vhd index 88e0033df01efd4afaebbd2a9823acaaeaa28a9d..5f8cca7a2c416796deabe799eab2bbd9953a642d 100644 --- a/packages/hw/axi4_pkg/src/hdl/axi4_pkg.vhd +++ b/packages/hw/axi4_pkg/src/hdl/axi4_pkg.vhd @@ -15,7 +15,7 @@ -- Tool version: 2019.2 -- Description: AXI4 format bus signals. -- --- Last update: 2020-10-12 +-- Last update: 2020-11-25 -- --------------------------------------------------------------------------------- @@ -131,6 +131,67 @@ package axi4_pkg is ValidxS => '0'); constant C_NO_AXI4_NFC_S2M : t_axi4nfcs2m := (ReadyxS => '0'); + -- NFC Codes + constant C_NFC_XON : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '0'); + constant C_NFC_XOFF : std_ulogic_vector((C_AXI4_NFC_DATA_SIZE - 1) downto 0) := (others => '1'); + + type t_nfc_states is (C_NFC_IDLE, C_NFC_IS_XON, C_NFC_IS_XOFF, C_NFC_SEND_XON, C_NFC_SEND_XOFF); + + -- Axis Fifo Status + type t_axi4fifo_status is record + WrDataCntxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0); + RdDataCntxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0); + ProgEmptyxS : std_ulogic; + ProgFullxS : std_ulogic; + end record t_axi4fifo_status; + + constant C_NO_AXI4_FIFO_STATUS : t_axi4fifo_status := (WrDataCntxD => (others => '0'), + RdDataCntxD => (others => '0'), + ProgEmptyxS => '0', + ProgFullxS => '0'); + + -- Axis Fifo Error Counter + type t_axi4fifo_error is record + NorthCounterxD : unsigned((C_AXI4_DATA_SIZE - 1) downto 0); + EastCounterxD : unsigned((C_AXI4_DATA_SIZE - 1) downto 0); + SouthCounterxD : unsigned((C_AXI4_DATA_SIZE - 1) downto 0); + WestCounterxD : unsigned((C_AXI4_DATA_SIZE - 1) downto 0); + end record t_axi4fifo_error; + + constant C_NO_AXI4_FIFO_ERROR : t_axi4fifo_error := (NorthCounterxD => (others => '0'), + EastCounterxD => (others => '0'), + SouthCounterxD => (others => '0'), + WestCounterxD => (others => '0')); + + -- Native Fifo for Scalp packets + type t_native_fifo_slave is record + DataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0); + WrEnxS : std_ulogic; + RdEnxS : std_ulogic; + end record t_native_fifo_slave; + + constant C_NO_NATIVE_FIFO_SLAVE : t_native_fifo_slave := (DataxD => (others => '0'), + WrEnxS => '0', + RdEnxS => '0'); + + type t_native_fifo_master is record + DataxD : std_ulogic_vector((C_AXI4_DATA_SIZE - 1) downto 0); + FullxS : std_ulogic; + EmptyxS : std_ulogic; + AlmostFullxS : std_ulogic; + AlmostEmptyxS : std_ulogic; + WrRstBusyxS : std_ulogic; + RdRstBusyxS : std_ulogic; + end record t_native_fifo_master; + + constant C_NO_NATIVE_FIFO_MASTER : t_native_fifo_master := (DataxD => (others => '0'), + FullxS => '0', + EmptyxS => '0', + AlmostFullxS => '0', + AlmostEmptyxS => '0', + WrRstBusyxS => '0', + RdRstBusyxS => '0'); + -- AXI4 Functions -- OR reduce from t_axi4s2m_vector function or_reduce_t_axi4s2m_vector ( diff --git a/tools/config/scalp_aurora_phy_rx_fifo.json b/tools/config/scalp_aurora_phy_rx_fifo.json index 56c29acf823e0602249b989e36284e308a61884f..5766126fdef4406e6170357756166c5df974293c 100644 --- a/tools/config/scalp_aurora_phy_rx_fifo.json +++ b/tools/config/scalp_aurora_phy_rx_fifo.json @@ -16,7 +16,7 @@ "board_name" : "SCALP" }, "components" : { - "packages" : { + "packages" : { "axi4_pkg" : "enable" }, "ips" : { diff --git a/tools/config/scalp_axi4lite.json b/tools/config/scalp_axi4lite.json new file mode 100644 index 0000000000000000000000000000000000000000..0d1c171f5a6a9817c289bcfad68ca34424068a50 --- /dev/null +++ b/tools/config/scalp_axi4lite.json @@ -0,0 +1,31 @@ +{ + "author" : { + "name" : "Joachim Schmidt", + "email" : "<joachim.schmidt@hesge.ch" + }, + "project" : { + "name" : "scalp_axi4lite", + "type" : "COMP_PRJ_TYPE", + "category" : "IPS", + "vivado_version" : "2019.2", + "target_language" : "VHDL", + "vhdl_version" : "VHDL 2008" + }, + "hardware" : { + "part_name" : "xc7z015clg485-2", + "board_name" : "SCALP" + }, + "components" : { + "packages" : { + "axi4_pkg" : "enable" + }, + "ips" : { + "scalp_axi4lite" : + { + "hdl" : "enable", + "xci" : { + } + } + } + } +} diff --git a/tools/config/scalp_firmware.json b/tools/config/scalp_firmware.json index ea992d0d8ef7a4dd1a598f0f993c689935afd5d4..3b4cf266a72ed1d633c3fb6368d92abc4e47a9fc 100644 --- a/tools/config/scalp_firmware.json +++ b/tools/config/scalp_firmware.json @@ -40,6 +40,13 @@ "west_channel" : "enable" } }, + "scalp_aurora_phy_rx_fifo" : + { + "hdl" : "enable", + "xci" : { + "axis_data_fifo" : "enable" + } + }, "scalp_design_aurora_clk" : { "hdl" : "disable", "xci" : { @@ -49,9 +56,17 @@ "scalp_design_debug" : { "hdl" : "disable", "xci" : { - "data_counter" : "enable", - "vio_axi_cnt_ctrl" : "enable", - "vio_status" : "enable" + "data_counter" : "disable", + "vio_axi_cnt_ctrl" : "disable", + "vio_status" : "enable", + "vio_user_resets" : "enable" + } + }, + "scalp_packet_fifo_wrapper" : + { + "hdl" : "enable", + "xci" : { + "scalp_packet_fifo" : "enable" } } } diff --git a/tools/config/scalp_packet_fifo_wrapper.json b/tools/config/scalp_packet_fifo_wrapper.json new file mode 100644 index 0000000000000000000000000000000000000000..01437c76fde1832004878acf74f71e7b126f7f8a --- /dev/null +++ b/tools/config/scalp_packet_fifo_wrapper.json @@ -0,0 +1,32 @@ +{ + "author" : { + "name" : "Joachim Schmidt", + "email" : "<joachim.schmidt@hesge.ch" + }, + "project" : { + "name" : "scalp_packet_fifo_wrapper", + "type" : "COMP_PRJ_TYPE", + "category" : "IPS", + "vivado_version" : "2019.2", + "target_language" : "VHDL", + "vhdl_version" : "VHDL 2008" + }, + "hardware" : { + "part_name" : "xc7z015clg485-2", + "board_name" : "SCALP" + }, + "components" : { + "packages" : { + "axi4_pkg" : "enable" + }, + "ips" : { + "scalp_packet_fifo_wrapper" : + { + "hdl" : "enable", + "xci" : { + "scalp_packet_fifo" : "enable" + } + } + } + } +}