1 ------------------------------------------------------------------------------- 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2015-04-01 5 -- Last update: 2015-04-01 6 ------------------------------------------------------------------------------- 7 -- Description: Wrapper for Xilinx 7-series GTH primitive 8 ------------------------------------------------------------------------------- 9 -- This file is part of 'SLAC Firmware Standard Library'. 10 -- It is subject to the license terms in the LICENSE.txt file found in the 11 -- top-level directory of this distribution and at: 12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 13 -- No part of 'SLAC Firmware Standard Library', including this file, 14 -- may be copied, modified, propagated, or distributed except according to 15 -- the terms contained in the LICENSE.txt file. 16 ------------------------------------------------------------------------------- 19 use ieee.std_logic_1164.
all;
24 use unisim.vcomponents.
all;
27 --! @ingroup xilinx_7Series_gth7 45 PMA_RSV_G : := X"00000080";
-- For GTH Transceiver: The default value is 32'h0000080 48 -- Configure PLL sources 51 -- Configure Data widths 58 -- Configure Buffer usage 68 RX_DDIEN_G : sl := '0';
-- Supposed to be '1' when bypassing rx buffer 70 -- Configure RX comma alignment 83 -- Fixed Latency comma alignment (If RX_ALIGN_MODE_G = "FIXED_LAT") 89 -- Configure RX 8B10B decoding (If RX_8B10B_EN_G = true) 94 -- Configure Clock Correction 114 -- Configure Channel Bonding 134 -- RX Equalizer Attributes-------------------------- 141 stableClkIn : in sl;
-- Free running clock needed to drive reset logic and DRP interface 149 gtRxRefClkBufg : in sl := '0';
-- In fixed latency mode, need BUF'd version of gt rx reference clock to check if recovered clock is stable 155 -- Rx Clock related signals 162 -- Rx User Reset Signals 165 -- Manual Comma Align signals 168 -- Rx Data and decode signals 175 -- Rx Channel Bonding 179 -- Tx Clock Related Signals 186 -- Tx User Reset signals 201 -- DRP Interface (stableClkIn Domain) 213 function getOutClkSelVal (OUT_CLK_SRC : )
return is 215 if (OUT_CLK_SRC = "PLLREFCLK") then 217 elsif (OUT_CLK_SRC = "OUTCLKPMA") then 219 elsif (OUT_CLK_SRC = "PLLDV2CLK") then 224 end function getOutClkSelVal;
226 function getDataWidth (USE_8B10B : ; EXT_DATA_WIDTH : )
return is 228 if (USE_8B10B = false) then 229 return EXT_DATA_WIDTH;
231 return (EXT_DATA_WIDTH / 8) * 10;
235 -------------------------------------------------------------------------------------------------- 237 -------------------------------------------------------------------------------------------------- 238 constant RX_SYSCLK_SEL_C : slv := ite(RX_PLL_G = "CPLL", "00", "11");
239 constant TX_SYSCLK_SEL_C : slv := ite(TX_PLL_G = "CPLL", "00", "11");
241 constant RX_XCLK_SEL_C : := ite(RX_BUF_EN_G, "RXREC", "RXUSR");
242 constant TX_XCLK_SEL_C : := ite(TX_BUF_EN_G, "TXOUT", "TXUSR");
255 -------------------------------------------------------------------------------------------------- 257 -------------------------------------------------------------------------------------------------- 260 signal cPllLock : sl;
261 signal cPllReset : sl;
262 signal cPllRefClkLost : sl;
264 -- Gtx CPLL Input Clocks 265 signal gtGRefClk : sl;
266 signal gtNorthRefClk0 : sl;
267 signal gtNorthRefClk1 : sl;
268 signal gtRefClk0 : sl;
269 signal gtRefClk1 : sl;
270 signal gtSouthRefClk0 : sl;
271 signal gtSouthRefClk1 : sl;
273 ---------------------------- 275 signal rxOutClk : sl;
276 signal rxOutClkBufg : sl;
278 signal rxPllLock : sl;
279 signal rxPllReset : sl;
280 signal rxPllRefClkLost : sl;
282 signal gtRxReset : sl;
-- GT GTRXRESET 283 signal rxResetDone : sl;
-- GT RXRESETDONE 284 signal rxUserRdyInt : sl;
-- GT RXUSERRDY 286 signal rxUserResetInt : sl;
287 signal rxFsmResetDone : sl;
288 signal rxRstTxUserRdy : sl;
289 signal rxPmaResetDone : sl;
291 signal rxRecClkStable : sl;
292 signal rxRecClkMonitorRestart : sl;
293 signal rxCdrLockCnt : range 0 to WAIT_TIME_CDRLOCK_C := 0;
295 signal rxRunPhAlignment : sl;
296 signal rxPhaseAlignmentDone : sl;
297 signal rxAlignReset : sl;
298 signal rxDlySReset : sl;
-- GT RXDLYSRESET 299 signal rxDlySResetDone : sl;
-- GT RXDLYSRESETDONE 300 signal rxPhAlignDone : sl;
-- GT RXPHALIGNDONE 301 signal rxSlide : sl;
-- GT RXSLIDE 302 signal rxCdrLock : sl;
-- GT RXCDRLOCK 304 signal rxDfeAgcHold : sl;
305 signal rxDfeLfHold : sl;
306 signal rxLpmLfHold : sl;
307 signal rxLpmHfHold : sl;
311 signal rxDataFull : slv(63 downto 0);
-- GT RXDATA 312 signal rxCharIsKFull : slv(7 downto 0);
-- GT RXCHARISK 313 signal rxDispErrFull : slv(7 downto 0);
-- GT RXDISPERR 314 signal rxDecErrFull : slv(7 downto 0);
317 ---------------------------- 319 signal txPllLock : sl;
320 signal txPllReset : sl;
321 signal txPllRefClkLost : sl;
323 signal gtTxReset : sl;
-- GT GTTXRESET 324 signal txResetDone : sl;
-- GT TXRESETDONE 325 signal txUserRdyInt : sl;
-- GT TXUSERRDY 327 signal txFsmResetDone : sl;
329 signal txResetPhAlignment : sl;
330 signal txRunPhAlignment : sl;
331 signal txPhaseAlignmentDone : sl;
332 signal txPhAlignEn : sl;
-- GT TXPHALIGNEN 333 signal txDlySReset : sl;
-- GT TXDLYSRESET 334 signal txDlySResetDone : sl;
-- GT TXDLYSRESETDONE 335 signal txPhInit : sl;
-- GT TXPHINIT 336 signal txPhInitDone : sl;
-- GT TXPHINITDONE 337 signal txPhAlign : sl;
-- GT TXPHALIGN 338 signal txPhAlignDone : sl;
-- GT TXPHALIGNDONE 339 signal txDlyEn : sl;
-- GT TXDLYEN 342 signal txDataFull : slv(63 downto 0) := (others => '0');
343 signal txCharIsKFull, 345 txCharDispVal : slv(7 downto 0) := (others => '0');
348 signal drpMuxAddr : slv(8 downto 0);
349 signal drpMuxDo : slv(15 downto 0);
350 signal drpMuxDi : slv(15 downto 0);
351 signal drpMuxRdy : sl;
352 signal drpMuxEn : sl;
353 signal drpMuxWe : sl;
354 signal drpRstAddr : slv(8 downto 0);
355 signal drpRstDo : slv(15 downto 0);
356 signal drpRstDi : slv(15 downto 0);
357 signal drpRstRdy : sl;
358 signal drpRstEn : sl;
359 signal drpRstWe : sl;
360 signal drpRstDone : sl;
369 -------------------------------------------------------------------------------------------------- 370 -- PLL Resets. Driven from TX Rst if both use same PLL 371 -------------------------------------------------------------------------------------------------- 372 cPllReset <= txPllReset when (TX_PLL_G = "CPLL") else rxPllReset when (RX_PLL_G = "CPLL") else '0';
375 -------------------------------------------------------------------------------------------------- 376 -- CPLL clock select. Only ever use 1 clock to drive cpll. Never switch clocks. 377 -- This may be unnecessary. Vivado does this for you now. 378 -------------------------------------------------------------------------------------------------- 387 -------------------------------------------------------------------------------------------------- 389 -------------------------------------------------------------------------------------------------- 390 -- Fit GTX port sizes to selected rx external interface size 392 RX_DATA_8B10B_GLUE :
process (rxCharIsKFull, rxDataFull, rxDecErrFull, rxDispErrFull)
is 401 if ((i-9) mod 10 = 0) then 402 rxDataInt(i) <= rxDispErrFull((i-9)/10);
403 elsif ((i-8) mod 10 = 0) then 404 rxDataInt(i) <= rxCharIsKFull((i-8)/10);
406 rxDataInt(i) <= rxDataFull(i-2*(i/10));
413 end process RX_DATA_8B10B_GLUE;
415 -- Mux proper PLL Lock signal onto rxPllLock 418 -- Mux proper PLL RefClkLost signal on rxPllRefClkLost 421 rxAlignReset <= '0';
-- Unused?!? 423 rxRstTxUserRdy <= txUserRdyInt when RX_USRCLK_SRC_G = "TXOUTCLK" else '1';
425 -- Drive outputs that have internal use 428 -------------------------------------------------------------------------------------------------- 432 -- 3. Wait recclk_stable 435 -- 6. Assert gtRxUserRdy (gtRxUsrClk now usable) 436 -- 7. Wait gtRxResetDone 437 -- 8. Do phase alignment if necessary 438 -- 9. Wait DATA_VALID (aligned) - 100 us 439 --10. Wait 1 us, Set rxFsmResetDone. 440 -------------------------------------------------------------------------------------------------- 457 RECCLK_STABLE => rxRecClkStable,
-- Asserted after 50,000 UI as per DS183 460 TXUSERRDY => rxRstTxUserRdy,
-- Need to know when txUserRdy 469 RXDFEAGCHOLD => rxDfeAgcHold,
-- Explore using these later 475 -------------------------------------------------------------------------------------------------- 476 -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic. 477 -------------------------------------------------------------------------------------------------- 478 RstSync_RxResetDone :
entity work.
RstSync 488 ------------------------------------------------------------------------------------------------- 489 -- Recovered clock monitor 490 ------------------------------------------------------------------------------------------------- 491 BUFG_RX_OUT_CLK : BUFG
496 GTX7_RX_REC_CLK_MONITOR_GEN : if (RX_BUF_EN_G = false) generate 506 RX_REC_CLK0 => rxOutClkBufg,
-- Only works if rxOutClkOut fed back on rxUsrClkIn through bufg 514 rxRecClkMonitorRestart <= '0';
518 if gtRxReset = '1' then 519 rxRecClkStable <= '0' after TPD_G;
520 rxCdrLockCnt <= 0 after TPD_G;
521 elsif rxRecClkStable = '0' then 522 if rxCdrLockCnt = WAIT_TIME_CDRLOCK_C then 523 rxRecClkStable <= '1' after TPD_G;
524 rxCdrLockCnt <= rxCdrLockCnt after TPD_G;
526 rxCdrLockCnt <= rxCdrLockCnt + 1 after TPD_G;
531 end generate RX_NO_RECCLK_MON_GEN;
533 ------------------------------------------------------------------------------------------------- 534 -- Phase alignment needed when rx buffer is disabled 535 -- Use normal Auto Phase Align module when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=false 536 -- Use special fixed latency aligner when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=true 537 ------------------------------------------------------------------------------------------------- 550 rxSlide <= rxSlideIn;
-- User controlled rxSlide 574 rxPhaseAlignmentDone <= '1';
579 -------------------------------------------------------------------------------------------------- 581 -------------------------------------------------------------------------------------------------- 586 txDataFull <= (others => '0');
588 txCharIsKFull <= (others => '0');
590 txCharDispMode <= (others => '0');
591 txCharDispVal <= (others => '0');
594 if ((i-9) mod 10 = 0) then 595 txCharDispMode((i-9)/10) <= txDataIn(i);
596 elsif ((i-8) mod 10 = 0) then 597 txCharDispVal((i-8)/10) <= txDataIn(i);
599 txDataFull(i-2*(i/10)) <= txDataIn(i);
602 txCharIsKFull <= (others => '0');
604 end process TX_DATA_8B10B_GLUE;
606 -- Mux proper PLL Lock signal onto txPllLock 609 -- Mux proper PLL RefClkLost signal on txPllRefClkLost 612 -- Drive outputs that have internal use 615 -------------------------------------------------------------------------------------------------- 617 -------------------------------------------------------------------------------------------------- 642 -------------------------------------------------------------------------------------------------- 643 -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic. 644 -------------------------------------------------------------------------------------------------- 645 RstSync_Tx :
entity work.
RstSync 655 ------------------------------------------------------------------------------------------------- 657 -- Only used when bypassing buffer 658 ------------------------------------------------------------------------------------------------- 672 txPhAlignEn <= '0';
-- Auto Mode 676 end generate TxAutoPhaseAlignGen;
695 end generate TxManualPhaseAlignGen;
698 txPhaseAlignmentDone <= '1';
704 end generate NoTxPhaseAlignGen;
706 -------------------------------------------------------------------------------------------------- 708 -------------------------------------------------------------------------------------------------- 711 --_______________________ Simulation-Only Attributes ___________________ 712 SIM_RECEIVER_DETECT_PASS =>
("TRUE"
),
714 SIM_TX_EIDLE_DRIVE_LEVEL =>
("X"
),
717 ------------------RX Byte and Word Alignment Attributes--------------- 726 RXSLIDE_AUTO_WAIT =>
7,
728 RX_SIG_VALID_DLY =>
10,
729 ------------------RX 8B/10B Decoder Attributes--------------- 730 -- These don't really matter since RX 8B10B is disabled 735 ------------------------RX Clock Correction Attributes---------------------- 755 ------------------------RX Channel Bonding Attributes---------------------- 773 ---------------------------RX Margin Analysis Attributes---------------------------- 774 ES_CONTROL =>
("000000"
),
775 ES_ERRDET_EN =>
("FALSE"
),
776 ES_EYE_SCAN_EN =>
("TRUE"
),
777 ES_HORZ_OFFSET =>
(x"000"
),
778 ES_PMA_CFG =>
("0000000000"
),
779 ES_PRESCALE =>
("00000"
),
780 ES_QUALIFIER =>
(x"00000000000000000000"
),
781 ES_QUAL_MASK =>
(x"00000000000000000000"
),
782 ES_SDATA_MASK =>
(x"00000000000000000000"
),
783 ES_VERT_OFFSET =>
("000000000"
),
784 -------------------------FPGA RX Interface Attributes------------------------- 785 RX_DATA_WIDTH =>
(RX_DATA_WIDTH_C
),
786 ---------------------------PMA Attributes---------------------------- 787 OUTREFCLK_SEL_INV =>
("11"
),
-- ?? 789 PMA_RSV2 =>
(x"1C00000A"
),
791 PMA_RSV4 =>
(x"0008"
),
792 RX_BIAS_CFG =>
("000011000000000000010000"
),
793 DMONITOR_CFG =>
(x"000A00"
),
796 RX_DEBUG_CFG =>
("00000000000000"
),
798 TERM_RCAL_CFG =>
("100001000010000"
),
799 TERM_RCAL_OVRD =>
("000"
),
800 TST_RSV =>
(x"00000000"
),
803 UCODEER_CLR =>
('0'
),
804 ---------------------------PCI Express Attributes---------------------------- 805 PCS_PCIE_EN =>
("FALSE"
),
806 ---------------------------PCS Attributes---------------------------- 807 PCS_RSVD_ATTR => ite
(RX_ALIGN_MODE_G = "FIXED_LAT", X"000000000002", X"000000000000"
),
--UG476 pg 241 808 -------------RX Buffer Attributes------------ 810 RXBUF_EIDLE_HI_CNT =>
("1000"
),
811 RXBUF_EIDLE_LO_CNT =>
("0000"
),
813 RX_BUFFER_CFG =>
("000000"
),
814 RXBUF_RESET_ON_CB_CHANGE =>
("TRUE"
),
815 RXBUF_RESET_ON_COMMAALIGN =>
("FALSE"
),
816 RXBUF_RESET_ON_EIDLE =>
("FALSE"
),
817 RXBUF_RESET_ON_RATE_CHANGE =>
("TRUE"
),
818 RXBUFRESET_TIME =>
("00001"
),
819 RXBUF_THRESH_OVFLW =>
(61),
820 RXBUF_THRESH_OVRD =>
("FALSE"
),
821 RXBUF_THRESH_UNDFLW =>
(4),
822 RXDLY_CFG =>
(x"001F"
),
823 RXDLY_LCFG =>
(x"030"
),
824 RXDLY_TAP_CFG =>
(x"0000"
),
825 RXPH_CFG =>
(x"000000"
),
826 RXPHDLY_CFG =>
(x"084020"
),
827 RXPH_MONITOR_SEL =>
("00000"
),
828 RX_XCLK_SEL => RX_XCLK_SEL_C,
829 RX_DDI_SEL =>
("000000"
),
830 RX_DEFER_RESET_BUF_EN =>
("TRUE"
),
831 -----------------------CDR Attributes------------------------- 833 RXCDR_FR_RESET_ON_EIDLE =>
('0'
),
834 RXCDR_HOLD_DURING_EIDLE =>
('0'
),
835 RXCDR_PH_RESET_ON_EIDLE =>
('0'
),
836 RXCDR_LOCK_CFG =>
("010101"
),
837 -------------------RX Initialization and Reset Attributes------------------- 838 RXCDRFREQRESET_TIME =>
("00001"
),
839 RXCDRPHRESET_TIME =>
("00001"
),
840 RXISCANRESET_TIME =>
("00001"
),
841 RXPCSRESET_TIME =>
("00001"
),
842 RXPMARESET_TIME =>
("00011"
),
-- ! Check this 843 -------------------RX OOB Signaling Attributes------------------- 844 RXOOB_CFG =>
("0000110"
),
845 -------------------------RX Gearbox Attributes--------------------------- 846 RXGEARBOX_EN =>
("FALSE"
),
847 GEARBOX_MODE =>
("000"
),
848 -------------------------PRBS Detection Attribute----------------------- 849 RXPRBS_ERR_LOOPBACK =>
('0'
),
850 -------------Power-Down Attributes---------- 851 PD_TRANS_TIME_FROM_P2 =>
(x"03c"
),
852 PD_TRANS_TIME_NONE_P2 =>
(x"3c"
),
853 PD_TRANS_TIME_TO_P2 =>
(x"64"
),
854 -------------RX OOB Signaling Attributes---------- 857 SATA_BURST_SEQ_LEN =>
("1111"
),
858 SATA_BURST_VAL =>
("100"
),
859 SATA_EIDLE_VAL =>
("100"
),
860 SATA_MAX_BURST =>
(8),
861 SATA_MAX_INIT =>
(21),
862 SATA_MAX_WAKE =>
(7),
863 SATA_MIN_BURST =>
(4),
864 SATA_MIN_INIT =>
(12),
865 SATA_MIN_WAKE =>
(4),
866 -------------RX Fabric Clock Output Control Attributes---------- 867 TRANS_TIME_RATE =>
(x"0E"
),
868 --------------TX Buffer Attributes---------------- 870 TXBUF_RESET_ON_RATE_CHANGE =>
("TRUE"
),
871 TXDLY_CFG =>
(x"001F"
),
872 TXDLY_LCFG =>
(x"030"
),
873 TXDLY_TAP_CFG =>
(x"0000"
),
874 TXPH_CFG =>
(x"0780"
),
875 TXPHDLY_CFG =>
(x"084020"
),
876 TXPH_MONITOR_SEL =>
("00000"
),
877 TX_XCLK_SEL => TX_XCLK_SEL_C,
878 -------------------------FPGA TX Interface Attributes------------------------- 879 TX_DATA_WIDTH =>
(TX_DATA_WIDTH_C
),
880 -------------------------TX Configurable Driver Attributes------------------------- 881 TX_DEEMPH0 =>
("00000"
),
882 TX_DEEMPH1 =>
("00000"
),
883 TX_EIDLE_ASSERT_DELAY =>
("110"
),
884 TX_EIDLE_DEASSERT_DELAY =>
("100"
),
885 TX_LOOPBACK_DRIVE_HIZ =>
("FALSE"
),
886 TX_MAINCURSOR_SEL =>
('0'
),
887 TX_DRIVE_MODE =>
("DIRECT"
),
888 TX_MARGIN_FULL_0 =>
("1001110"
),
889 TX_MARGIN_FULL_1 =>
("1001001"
),
890 TX_MARGIN_FULL_2 =>
("1000101"
),
891 TX_MARGIN_FULL_3 =>
("1000010"
),
892 TX_MARGIN_FULL_4 =>
("1000000"
),
893 TX_MARGIN_LOW_0 =>
("1000110"
),
894 TX_MARGIN_LOW_1 =>
("1000100"
),
895 TX_MARGIN_LOW_2 =>
("1000010"
),
896 TX_MARGIN_LOW_3 =>
("1000000"
),
897 TX_MARGIN_LOW_4 =>
("1000000"
),
898 -------------------------TX Gearbox Attributes-------------------------- 899 TXGEARBOX_EN =>
("FALSE"
),
900 -------------------------TX Initialization and Reset Attributes-------------------------- 901 TXPCSRESET_TIME =>
("00001"
),
902 TXPMARESET_TIME =>
("00001"
),
903 -------------------------TX Receiver Detection Attributes-------------------------- 904 TX_RXDETECT_CFG =>
(x"1832"
),
905 TX_RXDETECT_REF =>
("100"
),
906 ----------------------------CPLL Attributes---------------------------- 907 CPLL_CFG =>
(x"00BC07DC"
),
910 CPLL_INIT_CFG =>
(x"00001E"
),
911 CPLL_LOCK_CFG =>
(x"01E8"
),
915 SATA_CPLL_CFG =>
("VCO_3000MHZ"
),
916 --------------RX Initialization and Reset Attributes------------- 917 RXDFELPMRESET_TIME =>
("0001111"
),
918 --------------RX Equalizer Attributes------------- 919 RXLPM_HF_CFG =>
("00001000000000"
),
920 RXLPM_LF_CFG =>
("001001000000000000"
),
921 RX_DFE_GAIN_CFG =>
(x"0020C0"
),
922 RX_DFE_H2_CFG =>
("000000000000"
),
923 RX_DFE_H3_CFG =>
("000001000000"
),
924 RX_DFE_H4_CFG =>
("00011100000"
),
925 RX_DFE_H5_CFG =>
("00011100000"
),
926 RX_DFE_KL_CFG =>
("001000001000000000000001100010000"
),
928 RX_DFE_LPM_HOLD_DURING_EIDLE =>
('0'
),
929 RX_DFE_UT_CFG =>
("00011100000000000"
),
930 RX_DFE_VP_CFG =>
("00011101010100011"
),
931 -------------------------Power-Down Attributes------------------------- 932 RX_CLKMUX_PD =>
('1'
),
933 TX_CLKMUX_PD =>
('1'
),
934 -------------------------FPGA RX Interface Attribute------------------------- 935 RX_INT_DATAWIDTH => RX_INT_DATAWIDTH_C,
936 -------------------------FPGA TX Interface Attribute------------------------- 937 TX_INT_DATAWIDTH => TX_INT_DATAWIDTH_C,
938 ------------------TX Configurable Driver Attributes--------------- 939 TX_QPI_STATUS_EN =>
('0'
),
940 ------------------ JTAG Attributes --------------- 941 ACJTAG_DEBUG_MODE =>
('0'
),
942 ACJTAG_MODE =>
('0'
),
943 ACJTAG_RESET =>
('0'
),
944 ADAPT_CFG0 =>
(x"00C10"
),
945 CFOK_CFG =>
(x"24800040E80"
),
946 CFOK_CFG2 =>
(x"20"
),
947 CFOK_CFG3 =>
(x"20"
),
948 ES_CLK_PHASE_SEL =>
('0'
),
950 RESET_POWERSAVE_DISABLE =>
('0'
),
951 USE_PCS_CLK_PHASE_SEL =>
('0'
),
952 A_RXOSCALRESET =>
('0'
),
953 ------------------ RX Phase Interpolator Attributes--------------- 960 RXPI_CFG6 =>
("001"
),
961 --------------RX Decision Feedback Equalizer(DFE)------------- 962 RX_DFELPM_CFG0 =>
("0110"
),
963 RX_DFELPM_CFG1 =>
('0'
),
964 RX_DFELPM_KLKH_AGC_STUP_EN =>
('1'
),
965 RX_DFE_AGC_CFG0 =>
("00"
),
966 RX_DFE_AGC_CFG1 =>
("100"
),
967 RX_DFE_AGC_CFG2 =>
("0000"
),
968 RX_DFE_AGC_OVRDEN =>
('1'
),
969 RX_DFE_H6_CFG =>
(x"020"
),
970 RX_DFE_H7_CFG =>
(x"020"
),
971 RX_DFE_KL_LPM_KH_CFG0 =>
("01"
),
972 RX_DFE_KL_LPM_KH_CFG1 =>
("010"
),
973 RX_DFE_KL_LPM_KH_CFG2 =>
("0010"
),
974 RX_DFE_KL_LPM_KH_OVRDEN =>
('1'
),
975 RX_DFE_KL_LPM_KL_CFG0 =>
("10"
),
976 RX_DFE_KL_LPM_KL_CFG1 =>
("010"
),
977 RX_DFE_KL_LPM_KL_CFG2 =>
("0010"
),
978 RX_DFE_KL_LPM_KL_OVRDEN =>
('1'
),
979 RX_DFE_ST_CFG =>
(x"00E100000C003F"
),
980 ------------------ TX Phase Interpolator Attributes--------------- 986 TXPI_CFG5 =>
("100"
),
987 TXPI_GREY_SEL =>
('0'
),
988 TXPI_INVSTROBE_SEL =>
('0'
),
989 TXPI_PPMCLK_SEL =>
("TXUSRCLK2"
),
990 TXPI_PPM_CFG =>
(x"00"
),
991 TXPI_SYNFREQ_PPM =>
("000"
),
992 TX_RXDETECT_PRECHARGE_TIME =>
(x"155CC"
),
993 ------------------ LOOPBACK Attributes--------------- 994 LOOPBACK_CFG =>
('0'
),
995 ------------------RX OOB Signalling Attributes--------------- 996 RXOOB_CLK_CFG =>
("PMA"
),
997 ------------------ CDR Attributes --------------- 998 RXOSCALRESET_TIME =>
("00011"
),
999 RXOSCALRESET_TIMEOUT =>
("00000"
),
1000 ------------------TX OOB Signalling Attributes--------------- 1002 ------------------RX Buffer Attributes--------------- 1003 RXSYNC_MULTILANE => '0',
1005 RXSYNC_SKIP_DA => '0',
1006 ------------------TX Buffer Attributes--------------- 1007 TXSYNC_MULTILANE => '0',
1009 TXSYNC_SKIP_DA => '0'
) 1011 ---------------------------------- Channel --------------------------------- 1013 DMONITOROUT =>
open,
1014 GTRESETSEL => '0',
-- Sequential Mode 1015 GTRSVD => "
0000000000000000",
1019 ---------------- Channel - Dynamic Reconfiguration Port (DRP) -------------- 1020 DRPADDR => drpMuxAddr,
1025 DRPRDY => drpMuxRdy,
1027 ------------------------- Channel - Ref Clock Ports ------------------------ 1028 GTGREFCLK => gtGRefClk,
1029 GTNORTHREFCLK0 => gtNorthRefClk0,
1030 GTNORTHREFCLK1 => gtNorthRefClk1,
1031 GTREFCLK0 => gtRefClk0,
1032 GTREFCLK1 => gtRefClk1,
1033 GTREFCLKMONITOR =>
open,
1034 GTSOUTHREFCLK0 => gtSouthRefClk0,
1035 GTSOUTHREFCLK1 => gtSouthRefClk1,
1036 -------------------------------- Channel PLL ------------------------------- 1037 CPLLFBCLKLOST =>
open,
1038 CPLLLOCK => cPllLock,
1042 CPLLREFCLKLOST => cPllRefClkLost,
1044 CPLLRESET => cPllReset,
1045 ------------------------------- Eye Scan Ports ----------------------------- 1046 EYESCANDATAERROR =>
open,
1048 EYESCANRESET => '0',
1049 EYESCANTRIGGER => '0',
1050 ------------------------ Loopback and Powerdown Ports ---------------------- 1054 ----------------------------- PCS Reserved Ports --------------------------- 1055 PCSRSVDIN => "
0000000000000000",
1056 PCSRSVDIN2 => "
00000",
1058 ----------------------------- PMA Reserved Ports --------------------------- 1059 PMARSVDIN => "
00000",
1060 ------------------------------- Receive Ports ------------------------------ 1064 RXSYSCLKSEL => RX_SYSCLK_SEL_C,
1065 RXUSERRDY => rxUserRdyInt,
1068 DMONFIFORESET => '0',
1070 RXPMARESETDONE => rxPmaResetDone,
1073 -------------- Receive Ports - 64b66b and 64b67b Gearbox Ports ------------- 1074 RXDATAVALID =>
open,
1075 RXGEARBOXSLIP => '0',
1077 RXHEADERVALID =>
open,
1078 RXSTARTOFSEQ =>
open,
1079 ----------------------- Receive Ports - 8b10b Decoder ---------------------- 1081 RXCHARISCOMMA =>
open,
1082 RXCHARISK => rxCharIsKFull,
1083 RXDISPERR => rxDispErrFull,
1084 RXNOTINTABLE => rxDecErrFull,
1085 ------------------- Receive Ports - Channel Bonding Ports ------------------ 1086 RXCHANBONDSEQ =>
open,
1093 ------------------- Receive Ports - Channel Bonding Ports ----------------- 1094 RXCHANISALIGNED =>
open,
1095 RXCHANREALIGN =>
open,
1096 ------------------- Receive Ports - Clock Correction Ports ----------------- 1097 RXCLKCORCNT =>
open,
1098 --------------- Receive Ports - Comma Detection and Alignment -------------- 1099 RXBYTEISALIGNED =>
open,
1100 RXBYTEREALIGN =>
open,
1106 ----------------------- Receive Ports - PRBS Detection --------------------- 1107 RXPRBSCNTRESET => '0',
1110 ------------------- Receive Ports - RX Data Path interface ----------------- 1111 GTRXRESET => gtRxReset,
1112 RXDATA => rxDataFull,
1113 RXOUTCLK => rxOutClk,
1114 RXOUTCLKFABRIC =>
open,
1115 RXOUTCLKPCS =>
open,
1116 RXOUTCLKSEL => to_stdlogicvector
(RX_OUTCLK_SEL_C
),
-- Selects rx recovered clk for rxoutclk 1117 RXPCSRESET => '0',
-- Don't bother with component level resets 1121 --------------------- Receive Ports - RX Equalizer Ports ------------------- 1122 RXDFESLIDETAPSTARTED =>
open,
1123 RXDFESLIDETAPSTROBEDONE =>
open,
1124 RXDFESLIDETAPSTROBESTARTED =>
open,
1125 ------------ Receive Ports - RX Decision Feedback Equalizer(DFE) ----------- 1126 RXADAPTSELTEST =>
(others => '0'
),
1127 RXDFEAGCHOLD => rxDfeAgcHold,
1128 RXDFEAGCOVRDEN => '0',
1129 RXDFEAGCTRL => "
01000",
1131 RXDFELFHOLD => rxDfeLfHold,
1133 RXDFELPMRESET => '0',
1134 RXDFESLIDETAP => "
00000",
1135 RXDFESLIDETAPADAPTEN => '0',
1136 RXDFESLIDETAPHOLD => '0',
1137 RXDFESLIDETAPID => "
000000",
1138 RXDFESLIDETAPINITOVRDEN => '0',
1139 RXDFESLIDETAPONLYADAPTEN => '0',
1140 RXDFESLIDETAPSTROBE => '0',
1141 RXDFESTADAPTDONE =>
open,
1142 RXDFETAP2HOLD => '0',
1143 RXDFETAP2OVRDEN => '0',
1144 RXDFETAP3HOLD => '0',
1145 RXDFETAP3OVRDEN => '0',
1146 RXDFETAP4HOLD => '0',
1147 RXDFETAP4OVRDEN => '0',
1148 RXDFETAP5HOLD => '0',
1149 RXDFETAP5OVRDEN => '0',
1150 RXDFETAP6HOLD => '0',
1151 RXDFETAP6OVRDEN => '0',
1152 RXDFETAP7HOLD => '0',
1153 RXDFETAP7OVRDEN => '0',
1155 RXDFEUTOVRDEN => '0',
1157 RXDFEVPOVRDEN => '0',
1160 RXMONITOROUT =>
open,
1161 RXMONITORSEL => "
00",
1163 RXOSINTCFG => "
0110",
1166 RXOSINTID0 => "
0000",
1167 RXOSINTNTRLEN => '0',
1168 RXOSINTOVRDEN => '0',
1169 RXOSINTSTARTED =>
open,
1170 RXOSINTSTROBE => '0',
1171 RXOSINTSTROBEDONE =>
open,
1172 RXOSINTSTROBESTARTED =>
open,
1173 RXOSINTTESTOVRDEN => '0',
1175 ------- Receive Ports - RX Driver,OOB signalling,Coupling and Eq.,CDR ------ 1178 RXCDRFREQRESET => '0',
1180 RXCDRLOCK => rxCdrLock,
1183 RXCDRRESETRSV => '0',
1185 RXELECIDLEMODE => "
11",
1187 RXLPMHFHOLD => rxLpmHfHold,
1188 RXLPMHFOVRDEN => '0',
1189 RXLPMLFHOLD => rxLpmLfHold,
1190 RXLPMLFKLOVRDEN => '0',
1192 ------------ Receive Ports - RX Decision Feedback Equalizer(DFE) ----------- 1193 RSOSINTDONE =>
open,
1194 RXDFESLIDETAPOVRDEN => '0',
1195 RXOSCALRESET => '0',
1196 -------- Receive Ports - RX Elastic Buffer and Phase Alignment Ports ------- 1199 RXDDIEN =>
RX_DDIEN_G,
-- Don't insert delay in deserializer. Might be wrong. 1201 RXDLYEN => '0',
-- Used for manual phase align 1203 RXDLYSRESET => rxDlySReset,
1204 RXDLYSRESETDONE => rxDlySResetDone,
1206 RXPHALIGNDONE => rxPhAlignDone,
1209 RXPHDLYRESET => '0',
1210 RXPHMONITOR =>
open,
1212 RXPHSLIPMONITOR =>
open,
1219 ------------------------ Receive Ports - RX PLL Ports ---------------------- 1222 RXRESETDONE => rxResetDone,
1223 -------------- Receive Ports - RX Pipe Control for PCI Express ------------- 1226 ----------------- Receive Ports - RX Polarity Control Ports ---------------- 1228 --------------------- Receive Ports - RX Ports for SATA -------------------- 1229 RXCOMINITDET =>
open,
1230 RXCOMSASDET =>
open,
1231 RXCOMWAKEDET =>
open,
1232 ------------------------------- Transmit Ports ----------------------------- 1233 SETERRSTATUS => '0',
1234 TSTIN => "
11111111111111111111",
1235 TXPHDLYTSTCLK => '0',
1237 TXPOSTCURSORINV => '0',
1239 TXPRECURSORINV => '0',
1243 TXQPISTRONGPDOWN => '0',
1244 TXQPIWEAKPUP => '0',
1245 TXSYSCLKSEL => TX_SYSCLK_SEL_C,
1246 TXUSERRDY => txUserRdyInt,
1248 TXPMARESETDONE =>
open,
1249 ----------------- TX Phase Interpolator PPM Controller Ports --------------- 1251 TXPIPPMOVRDEN => '0',
1254 TXPIPPMSTEPSIZE => "
00000",
1255 -------------- Transmit Ports - 64b66b and 64b67b Gearbox Ports ------------ 1256 TXGEARBOXREADY =>
open,
1258 TXSEQUENCE => "
0000000",
1260 ---------------- Transmit Ports - 8b10b Encoder Control Ports -------------- 1261 TX8B10BBYPASS => X"00",
1263 TXCHARDISPMODE => txCharDispMode,
1264 TXCHARDISPVAL => txCharDispVal,
1265 TXCHARISK => txCharIsKFull,
1266 ------------ Transmit Ports - TX Buffer and Phase Alignment Ports ---------- 1269 TXDLYEN => txDlyEn,
-- Manual Align 1272 TXDLYSRESET => txDlySReset,
1273 TXDLYSRESETDONE => txDlySResetDone,
1275 TXPHALIGN => txPhAlign,
-- Manual Align 1276 TXPHALIGNDONE => txPhAlignDone,
1277 TXPHALIGNEN => txPhAlignEn,
-- Enables manual align 1279 TXPHDLYRESET => '0',
-- Use SReset instead 1280 TXPHINIT => txPhInit,
-- Manual Align 1281 TXPHINITDONE => txPhInitDone,
1288 ------------------ Transmit Ports - TX Data Path interface ----------------- 1289 GTTXRESET => gtTxReset,
1290 TXDATA => txDataFull,
1292 TXOUTCLKFABRIC =>
open,
--txGtRefClk, 1293 TXOUTCLKPCS =>
open,
--txOutClkPcsOut, 1294 TXOUTCLKSEL => to_stdlogicvector
(TX_OUTCLK_SEL_C
),
1295 TXPCSRESET => '0',
-- Don't bother with individual resets 1299 ---------------- Transmit Ports - TX Driver and OOB signaling -------------- 1302 TXBUFDIFFCTRL => "
100",
1306 TXMAINCURSOR => "
0000000",
1307 TXPDELECIDLEMODE => '0',
1309 ----------------------- Transmit Ports - TX PLL Ports ---------------------- 1312 TXRESETDONE => txResetDone,
1313 --------------------- Transmit Ports - TX PRBS Generator ------------------- 1314 TXPRBSFORCEERR => '0',
1316 -------------------- Transmit Ports - TX Polarity Control ------------------ 1318 ----------------- Transmit Ports - TX Ports for PCI Express ---------------- 1324 --------------------- Transmit Ports - TX Ports for SATA ------------------- 1325 TXCOMFINISH =>
open,
1330 ------------------------- Soft Fix for Production Silicon---------------------- 1347 drpRstRdy <= drpMuxRdy when(drpRstDone = '0') else '0';
1348 drpRdy <= drpMuxRdy when(drpRstDone = '1') else '0';
1349 drpMuxEn <= drpEn when(drpRstDone = '1') else drpRstEn;
1350 drpMuxWe <= drpWe when(drpRstDone = '1') else drpRstWe;
1351 drpMuxAddr <= drpAddr when(drpRstDone = '1') else drpRstAddr;
1352 drpMuxDi <= drpDi when(drpRstDone = '1') else drpRstDi;
1353 drpRstDo <= drpMuxDo;
1356 end architecture rtl;
RX_OS_CFG_Gbit_vector := "0000010000000"
CHAN_BOND_SEQ_1_4_Gbit_vector := "0000000000"
CHAN_BOND_SEQ_2_1_Gbit_vector := "0000000000"
FTS_DESKEW_SEQ_ENABLE_Gbit_vector := "1111"
RX_BUF_EN_Gboolean := true
STABLE_CLOCK_PERIOD_Greal := 4.0E-9
CHAN_BOND_SEQ_2_3_Gbit_vector := "0000000000"
out PHASE_ALIGNMENT_DONESTD_LOGIC := '0'
CBCC_DATA_SOURCE_SEL_Gstring := "DECODED"
ALIGN_MCOMMA_VALUE_Gbit_vector := "1010000011"
RX_CHAN_BOND_EN_Gboolean := false
out rxDecErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
CLK_COR_KEEP_IDLE_Gstring := "FALSE"
CHAN_BOND_SEQ_1_1_Gbit_vector := "0000000000"
CLK_COR_SEQ_2_USE_Gstring := "FALSE"
FTS_LANE_DESKEW_EN_Gstring := "FALSE"
out rxPhaseAlignmentDonesl
TX_8B10B_EN_Gboolean := true
out GTTXRESETstd_logic := '0'
in rxMmcmLockedInsl := '1'
CLK_COR_MAX_LAT_Ginteger := 9
CHAN_BOND_SEQ_2_2_Gbit_vector := "0000000000"
RX_DFE_LPM_CFG_Gbit_vector := x"0080"
TX_BUF_EN_Gboolean := true
out PLL_RESETstd_logic := '0'
out PLL_RESETstd_logic := '0'
out RUN_PHALIGNMENTstd_logic := '0'
RX_CLK25_DIV_Ginteger := 5
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
TX_PHASE_ALIGN_Gstring := "AUTO"
out GTRXRESET_OUTstd_logic
CLK_CORRECT_USE_Gstring := "FALSE"
RX_CHAN_BOND_MASTER_Gboolean := false
ALIGN_PCOMMA_EN_Gsl := '0'
FIXED_ALIGN_COMMA_0_Gslv := "----------0101111100"
COMMA_EN_Gslv( 3 downto 0) := "0011"
out RX_FSM_RESET_DONEstd_logic
out RXDFEAGCHOLDstd_logic
in drpDislv( 15 downto 0) := X"0000"
ALIGN_COMMA_DOUBLE_Gstring := "FALSE"
in txCharIsKInslv(( TX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
RX_EQUALIZER_Gstring := "LPM"
out RESET_PHALIGNMENTstd_logic := '0'
out RESET_PHALIGNMENTstd_logic := '0'
TX_INT_DATA_WIDTH_Ginteger := 20
in rxChBondLevelInslv( 2 downto 0) := "000"
in qPllRefClkLostInsl := '0'
COUNTER_UPPER_VALUEinteger := 20
RX_OUTCLK_SRC_Gstring := "PLLREFCLK"
out rxBufStatusOutslv( 2 downto 0)
SIM_GTRESET_SPEEDUP_Gstring := "FALSE"
out txBufStatusOutslv( 1 downto 0)
ALIGN_COMMA_WORD_Ginteger := 2
COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
RX_BUF_ADDR_MODE_Gstring := "FAST"
in rxChBondInslv( 4 downto 0) := "00000"
RX_8B10B_EN_Gboolean := true
in PLLREFCLKLOSTstd_logic
in PLLREFCLKLOSTstd_logic
in DLYSRESETDONESTD_LOGIC
SIM_VERSION_Gstring := "2.0"
out RXUSERRDYstd_logic := '0'
CLK_COR_SEQ_2_3_Gbit_vector := "0000000000"
in txPostCursorslv( 4 downto 0) :=( others => '0')
CLOCK_PULSESinteger := 5000
CPLL_REFCLK_SEL_Gbit_vector := "001"
CLK_COR_REPEAT_WAIT_Ginteger := 0
SIMULATION_Gboolean := false
out EXEC_RESTARTstd_logic
TX_EXT_DATA_WIDTH_Ginteger := 16
in txMmcmLockedInsl := '1'
DEC_VALID_COMMA_ONLY_Gstring := "FALSE"
RX_EXT_DATA_WIDTH_Ginteger := 16
in RUN_PHALIGNMENTSTD_LOGIC
CHAN_BOND_MAX_SKEW_Ginteger := 1
COMMA_1_Gslv := "----------1010000011"
out DRPADDRstd_logic_vector( 8 downto 0)
out rxCharIsKOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
gthe2_channel gthe2_igthe2_i
RX_CM_TRIM_Gbit_vector := "1000"
CHAN_BOND_SEQ_1_3_Gbit_vector := "0000000000"
in txPowerDownslv( 1 downto 0) := "00"
in RECCLK_MONITOR_RESTARTstd_logic := '0'
FIXED_ALIGN_COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
out rxDataOutslv( RX_EXT_DATA_WIDTH_G- 1 downto 0)
in txDiffCtrlslv( 3 downto 0) := "1000"
CPLL_REFCLK_DIV_Ginteger := 1
COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
CHAN_BOND_SEQ_1_2_Gbit_vector := "0000000000"
ALIGN_COMMA_ENABLE_Gbit_vector := "1111111111"
in rxDataslv( WORD_SIZE_G- 1 downto 0)
out TXUSERRDYstd_logic := '0'
out rxDispErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
CLK_COR_SEQ_1_4_Gbit_vector := "0000000000"
in RXPMARESETDONEstd_logic
in drpAddrslv( 8 downto 0) := "000000000"
in rxPowerDownslv( 1 downto 0) := "00"
CLK_COR_PRECEDENCE_Gstring := "TRUE"
DEC_PCOMMA_DETECT_Gstring := "TRUE"
PMA_RSV_Gbit_vector := X"00000080"
RXCDR_CFG_Gbit_vector := x"0002007FE1000C2200018"
CLK_COR_SEQ_1_1_Gbit_vector := "0100000000"
EXAMPLE_SIMULATIONinteger := 0
out TX_FSM_RESET_DONEstd_logic
COMMA_0_Gslv := "----------0101111100"
in rxDataValidInsl := '1'
CLK_COR_SEQ_1_2_Gbit_vector := "0000000000"
CLK_COR_SEQ_2_2_Gbit_vector := "0000000000"
CLK_COR_SEQ_2_1_Gbit_vector := "0100000000"
in loopbackInslv( 2 downto 0) := "000"
DEC_MCOMMA_DETECT_Gstring := "TRUE"
RXSLIDE_MODE_Gstring := "PCS"
CHAN_BOND_SEQ_2_ENABLE_Gbit_vector := "0000"
out RECCLK_STABLEstd_logic
out MMCM_RESETstd_logic := '1'
CHAN_BOND_SEQ_LEN_Ginteger := 1
out MMCM_RESETstd_logic := '1'
in RECCLK_STABLEstd_logic
CLK_COR_SEQ_2_4_Gbit_vector := "0000000000"
in DRPDOstd_logic_vector( 15 downto 0)
in txDataInslv( TX_EXT_DATA_WIDTH_G- 1 downto 0)
CHAN_BOND_SEQ_1_ENABLE_Gbit_vector := "1111"
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
CLK_COR_SEQ_LEN_Ginteger := 1
out drpDoslv( 15 downto 0)
CHAN_BOND_SEQ_2_USE_Gstring := "FALSE"
RX_USRCLK_SRC_Gstring := "RXOUTCLK"
TX_BUF_ADDR_MODE_Gstring := "FAST"
ALIGN_PCOMMA_DET_Gstring := "FALSE"
out DRPDIstd_logic_vector( 15 downto 0)
out GTRXRESETstd_logic := '0'
in txPreCursorslv( 4 downto 0) :=( others => '0')
EXAMPLE_SIMULATIONinteger := 0
out rxChBondOutslv( 4 downto 0)
TX_CLK25_DIV_Ginteger := 5
ALIGN_MCOMMA_DET_Gstring := "FALSE"
out RUN_PHALIGNMENTstd_logic
CPLL_FBDIV_45_Ginteger := 5
ALIGN_PCOMMA_VALUE_Gbit_vector := "0101111100"
CLK_COR_SEQ_2_ENABLE_Gbit_vector := "0000"
CHAN_BOND_KEEP_ALIGN_Gstring := "FALSE"
CLK_COR_SEQ_1_3_Gbit_vector := "0000000000"
CLK_COR_SEQ_1_ENABLE_Gbit_vector := "1111"
FIXED_COMMA_EN_Gslv( 3 downto 0) := "0011"
RX_INT_DATA_WIDTH_Ginteger := 20
CHAN_BOND_SEQ_2_4_Gbit_vector := "0000000000"
in gtRxRefClkBufgsl := '0'
GCLK_COUNTER_UPPER_VALUEinteger := 20
FTS_LANE_DESKEW_CFG_Gbit_vector := "1111"
FIXED_ALIGN_COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
SHOW_REALIGN_COMMA_Gstring := "FALSE"
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
TX_OUTCLK_SRC_Gstring := "PLLREFCLK"
RX_ALIGN_MODE_Gstring := "GT"
CLK_COR_MIN_LAT_Ginteger := 7
in PHALIGNMENT_DONEstd_logic
in PHALIGNMENT_DONEstd_logic
RX_DISPERR_SEQ_MATCH_Gstring := "TRUE"
ALIGN_MCOMMA_EN_Gsl := '0'
FIXED_ALIGN_COMMA_1_Gslv := "----------1010000011"