ERROR: [IP_Flow 19-3461] on custom platform

I'm porting the FMCOMMS5 to a custom board and every time I build the project I receive the following error:

### ad_ip_instance axi_iic axi_iic_main
### ad_ip_parameter axi_iic_main CONFIG.USE_BOARD_FLOW true
### ad_ip_parameter axi_iic_main CONFIG.IIC_BOARD_INTERFACE {IIC_MAIN}
ERROR: [IP_Flow 19-3461] Value 'IIC_MAIN' is out of the range for parameter 'IIC Board Interface(IIC_BOARD_INTERFACE)' for BD Cell 'axi_iic_main' . Valid values are - Custom
INFO: [IP_Flow 19-3438] Customization errors found on 'axi_iic_main'. Restoring to previous valid configuration.
ERROR: [BD 41-245] set_property error - Value 'IIC_MAIN' is out of the range for parameter 'IIC Board Interface(IIC_BOARD_INTERFACE)' for BD Cell 'axi_iic_main' . Valid values are - Custom
Customization errors found on 'axi_iic_main'. Restoring to previous valid configuration.

ERROR: [Common 17-39] 'set_property' failed due to earlier errors.

    while executing
"rdi::set_property CONFIG.IIC_BOARD_INTERFACE IIC_MAIN /axi_iic_main"
    invoked from within
"set_property ${i_param} ${i_value} [get_bd_cells ${i_name}]"
    (procedure "ad_ip_parameter" line 3)
    invoked from within
"ad_ip_parameter axi_iic_main CONFIG.IIC_BOARD_INTERFACE {IIC_MAIN}"
    (file "/home/nturner/gemini_hdl/projects/common/custom/custom_system_bd.tcl" line 64)

    while executing
"source $ad_hdl_dir/projects/common/custom/custom_system_bd.tcl"
    (file "system_bd.tcl" line 3)

    while executing
"source system_bd.tcl"
    (procedure "adi_project_xilinx" line 114)
    invoked from within
"adi_project_xilinx fmcomms5_custom"
    (file "system_project.tcl" line 6)
INFO: [Common 17-206] Exiting Vivado at Wed Jun 26 17:43:14 2019...

The project includes some 3rd party IP that includes the following lines:

  <spirit:busInterfaces>
    <spirit:busInterface>
      <spirit:name>EMIO_I2C1</spirit:name>
      <spirit:displayName>EMIO I2C</spirit:displayName>
      <spirit:description>EMIO I2C connection to SC resources</spirit:description>
      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="iic" spirit:version="1.0"/>
      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="iic_rtl" spirit:version="1.0"/>
      <spirit:slave/>
      <spirit:portMaps>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_I</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>sda_i</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_I</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>scl_i</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_O</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>sda_o</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_O</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>scl_o</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_T</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>sda_t</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_T</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>scl_t</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
      </spirit:portMaps>
    </spirit:busInterface>
    <spirit:busInterface>
      <spirit:name>EXT_I2C</spirit:name>
      <spirit:busType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="iic" spirit:version="1.0"/>
      <spirit:abstractionType spirit:vendor="xilinx.com" spirit:library="interface" spirit:name="iic_rtl" spirit:version="1.0"/>
      <spirit:master/>
      <spirit:portMaps>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_T</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_scl_t</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_O</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_sda_o</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_I</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_sda_i</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SDA_T</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_sda_t</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_O</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_scl_o</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
        <spirit:portMap>
          <spirit:logicalPort>
            <spirit:name>SCL_I</spirit:name>
          </spirit:logicalPort>
          <spirit:physicalPort>
            <spirit:name>ext_scl_i</spirit:name>
          </spirit:physicalPort>
        </spirit:portMap>
      </spirit:portMaps>
    </spirit:busInterface>
  </spirit:busInterfaces>

Would the way the I2C is implemented in this IP block interfere with how it's implemented in custom_system_bd.tcl? If not is there another reason for this error? Other posts seem to suggest a version mismatch, but I'm using Vivado 2018.2 with the hdl_2018_r2 branch.

Top Replies

Parents
  • 0
    •  Analog Employees 
    on Jun 27, 2019 7:06 AM over 1 year ago

    Hi,

    This is something new.
    Can you please start a build of the project from the Vivado GUI.
    If you kept the ADI build flow, open GUI. In the tcl console enter:
       cd <your project location>
       source ./system_project.tcl

    After the error occurs, manually remove the AXI_IIC core from the block design and add it back again and take a look at the tcl commands vivado is outputting.

    Let me know if it works, and if you see some differences in the tcl commands, comparing with the ones from the _bd.tcl script.

    Thanks,
    Andrei

Reply
  • 0
    •  Analog Employees 
    on Jun 27, 2019 7:06 AM over 1 year ago

    Hi,

    This is something new.
    Can you please start a build of the project from the Vivado GUI.
    If you kept the ADI build flow, open GUI. In the tcl console enter:
       cd <your project location>
       source ./system_project.tcl

    After the error occurs, manually remove the AXI_IIC core from the block design and add it back again and take a look at the tcl commands vivado is outputting.

    Let me know if it works, and if you see some differences in the tcl commands, comparing with the ones from the _bd.tcl script.

    Thanks,
    Andrei

Children
  • When I manually add the IP core the tcl commands say:

    update_compile_order -fileset sources_1
    delete_bd_objs [get_bd_cells axi_iic_main]
    startgroup
    create_bd_cell -type ip -vlnv xilinx.com:ip:axi_iic:2.0 axi_iic_0
    endgroup

    Afterwords I get the option to run the automated board connection, which runs successfully, but connects the IIC port on the IP to a new external port I didn't create instead of the iic_main port I would like to use.

    Should I  use the create_bd_cell command that Vivado uses in place of the ad_ip_instance command from the _bd.tcl script?

  • I should also mention, that the custom host uses its own board files, which I didn't think to look at until today. When I look at these, there's nothing specifically in there for I2C the way it is for the ZC702.

  • +1
    •  Analog Employees 
    on Jun 28, 2019 7:09 AM over 1 year ago in reply to nturner

    Hi,

    You will have to add the missing info in your board files or customize your IIC IP instance.

    Andrei

  • I went ahead and modified my board files to include the information, and I'm able to run make successfully and continue through the process of making my BOOT.BIN.

    However, when I run i2cdetect I get no devices on the bus.

    $ sudo i2cdetect 1
    WARNING! This program can confuse your I2C bus, cause data loss and worse!
    I will probe file /dev/i2c-1.
    I will probe address range 0x03-0x77.
    Continue? [Y/n] y
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --                         
    $ sudo i2cdetect -l
    i2c-1    i2c           xiic-i2c                            I2C adapter
    i2c-2    i2c           Cadence I2C at e0005000             I2C adapter
    $ sudo i2cdetect 2
    Error: Can't use SMBus Quick Write command on this bus
    $ sudo i2cdetect -r 2
    WARNING! This program can confuse your I2C bus, cause data loss and worse!
    I will probe file /dev/i2c-2 using read byte commands.
    I will probe address range 0x03-0x77.
    Continue? [Y/n] y
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --       
                     

    I'm expecting the AD7291 and EEPROM on 0x2F and 0x50.

  • Even when I put the pins on an oscilloscope I'm not getting any readings.