Post Go back to editing

Link2 status failed (CGS)

Category: Software
Product Number: AD9082
Software Version: Vivado[2022.2], Vitis[2022.2], HDL[2022_r2]

Hi all,

We have ad9082 eval board available with us and we need to test it with our FPGA(VCU118) board.

Software tools and version used: Vivado[2022.2], Vitis[2022.2]

As a part of ad9082 evaluation board bringup, we have cloned hdl 2022_r2 and no-OS build from the adi github.

We are building the hdl & no-OS build on our Linux server and connecting remotely to the FPGA board using hw_server.

".xsa" file created after successful build of HDL 2022_r2, is copied to the ad9081 folder of no-OS project cloned from ADI github.

After building no-OS project successfully, 'build' folder which has '.elf' is created without any error.

we have successfully loaded "ad9081.elf" on our FPGA board and also opened Vitis using "sdkopen" command.

We have connected to the target(FPGA) remotely in the Vitis sdk using hw_server.

After building the project file generated in Vitis, when we run the program, We are observing the "Link2 status failed (CGS)" on terminal.

Also, when connected to iioscope, we are observing only axi_adc  and axi_dac devices only.

Kindly help us in resolving this issue.

Thanks,
Srikanth.

  • Hi  ,

    Could you try with both the main branches for no-OS and HDL and check the result?

    Regards,

    George

  • Hi George, 

    Thanks for your reply.

    With the main branch hdl, when I do "make" command, it's expecting vivado 2023.2 version. We have at present vivado 2022.2 installed at our end

    "ERROR: vivado version mismatch; expected 2023.2, got 2022.2."

    Can we proceed with ADI_IGNORE_VERSION_CHECK environment variable as 1 or do we need to install and use vivado 2023.2 version only?

    Thanks,

    Srikanth.

  • You can ignore the version (ADI_IGNORE_VERSION_CHECK set to 1).

    Regards,

    George

  • Thanks for confirmation regarding the ADI_IGNORE_VERSION_CHECK.

    We have one more query regarding cloning the hdl main branch. When we try to do

    git clone git@github.com:analogdevicesinc/hdl.git

    we are observing Permission denied (publickey).
    [~]"git clone git@github.com:analogdevicesinc/hdl.git
    Cloning into 'hdl'...
    git@github.com: Permission denied (publickey).
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights
    and the repository exists."
    So, we are downloading the hdl main in zip format and using it. Is this ok?
     

    Thanks,

    Srikanth.

  • git clone https://github.com/analogdevicesinc/hdl.git

  • Thanks buha. It worked. I have cloned hdl main branch.

    Will use this database and proceed further.

    Thanks,

    Srikanth.

  • Hi George/buha,

    We have tried using both the main branches for no-OS and HDL and still the result is same.

    rx_jesd link2 status is stuck at CGS.

    Could you please help us regarding this as we are working on a high priority task.

    Thanks,

    Srikanth.

  • Hi ,

    You JESD settings have to match the ones in the FPGA image. You should have a look at the HDL project settings and at the Linux devicetree, and implement those changes in your no-OS project (mainly in app_config.h and clock settings).

    https://github.com/analogdevicesinc/hdl/blob/main/projects/ad9082_fmca_ebz/vcu118/system_project.tcl

    https://github.com/analogdevicesinc/linux/blob/main/arch/microblaze/boot/dts/vcu118_ad9082.dts

    Regards,

    George

  • Hi George,

    Thanks for your reply.

    We will once again check after implementing the suggested changes in our non-OS build and update on this.

    Thanks,

    Srikanth.

  • Hi George,

    We are working parallelly at our end to implement the suggested settings. If possible, could you please provide the app_config.h file with the required settings.

    Attached the app_config.h file generated by default after no-OS build.

    Thanks,

    /***************************************************************************//**
     *   @file   app_config.h
     *   @brief  Application configuration.
     *   @author DBogdan (dragos.bogdan@analog.com)
    ********************************************************************************
     * Copyright 2020(c) Analog Devices, Inc.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *
     * 1. Redistributions of source code must retain the above copyright notice,
     *    this list of conditions and the following disclaimer.
     *
     * 2. Redistributions in binary form must reproduce the above copyright notice,
     *    this list of conditions and the following disclaimer in the documentation
     *    and/or other materials provided with the distribution.
     *
     * 3. Neither the name of Analog Devices, Inc. nor the names of its
     *    contributors may be used to endorse or promote products derived from this
     *    software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. ?AS IS? AND ANY EXPRESS OR
     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
     * EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
     * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *******************************************************************************/
    #ifndef APP_CONFIG_H_
    #define APP_CONFIG_H_
    
    #ifdef QUAD_MXFE
    #define MULTIDEVICE_INSTANCE_COUNT	4
    #else
    #define MULTIDEVICE_INSTANCE_COUNT	1
    #endif
    
    #define AD9081_DAC_FREQUENCY	12000000000
    #define AD9081_ADC_FREQUENCY	4000000000
    #ifdef QUAD_MXFE
    #define AD9081_ADC_NYQUIST_ZONE	{1, 1, 1, 1}
    #else
    #define AD9081_ADC_NYQUIST_ZONE	{0, 0, 0, 0}
    #endif
    
    /* TX path */
    
    #define AD9081_TX_JESD_MODE		9
    #define AD9081_TX_JESD_SUBCLASS		1
    #define AD9081_TX_JESD_VERSION		1
    #define AD9081_TX_JESD_M		8
    #define AD9081_TX_JESD_F		4
    #define AD9081_TX_JESD_K		32
    #define AD9081_TX_JESD_N		16
    #define AD9081_TX_JESD_NP		16
    #define AD9081_TX_JESD_CS		0
    #define AD9081_TX_JESD_L		4
    #define AD9081_TX_JESD_S		1
    #define AD9081_TX_JESD_HD		1
    #ifdef QUAD_MXFE
    #define AD9081_TX_LOGICAL_LANE_MAPPING	{0, 1, 2, 3, 4, 5, 6, 7}
    #else
    #define AD9081_TX_LOGICAL_LANE_MAPPING	{0, 2, 7, 7, 1, 7, 7, 3}
    #endif
    
    #define AD9081_JRX_TPL_PHASE_ADJUST 0x0c
    
    #define AD9081_TX_MAIN_INTERPOLATION	6
    #define AD9081_TX_CHAN_INTERPOLATION	8
    #define AD9081_TX_MAIN_NCO_SHIFT	{1000000000, 1100000000, 1200000000, 1300000000}
    #define AD9081_TX_CHAN_NCO_SHIFT	{0, 0, 0, 0, 0, 0, 0, 0}
    #define AD9081_TX_CHAN_GAIN		{2048, 2048, 2048, 2048, 0, 0, 0, 0}
    
    #define AD9081_TX_DAC_CHAN_CROSSBAR	{0x1, 0x2, 0x4, 0x8}
    
    /* RX path */
    
    #define AD9081_RX_JESD_MODE		10
    #define AD9081_RX_JESD_SUBCLASS		1
    #define AD9081_RX_JESD_VERSION		1
    #define AD9081_RX_JESD_M		8
    #define AD9081_RX_JESD_F		4
    #define AD9081_RX_JESD_K		32
    #define AD9081_RX_JESD_N		16
    #define AD9081_RX_JESD_NP		16
    #define AD9081_RX_JESD_CS		0
    #define AD9081_RX_JESD_L		4
    #define AD9081_RX_JESD_S		1
    #define AD9081_RX_JESD_HD		1
    #ifdef QUAD_MXFE
    #define AD9081_RX_LOGICAL_LANE_MAPPING	{0, 1, 2, 3, 4, 5, 6, 7}
    #else
    #define AD9081_RX_LOGICAL_LANE_MAPPING	{2, 0, 7, 7, 7, 7, 3, 1}
    #endif
    #define AD9081_RX_LINK_CONVERTER_SELECT	{0, 1, 2, 3, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0}
    
    #define AD9081_RX_MAIN_DECIMATION	{4, 4, 4, 4}
    #define AD9081_RX_CHAN_DECIMATION	{4, 4, 0, 0, 4, 4, 0, 0}
    #define AD9081_RX_MAIN_ENABLE		{1, 1, 1, 1}
    #define AD9081_RX_CHAN_ENABLE		{1, 1, 0, 0, 1, 1, 0, 0}
    #define AD9081_RX_MAIN_NCO_SHIFT	{400000000, -400000000, 100000000, 100000000}
    #define AD9081_RX_CHAN_NCO_SHIFT	{0, 0, 0, 0, 0, 0, 0, 0}
    
    #endif
    

    Srikanth.