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.
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.tclAfter 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
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.
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.
Hi,Do you have the proper constraints on your pins?Andrei
I felt like I had moved on to a new, distinct issue so I made a new post on a different board: https://ez.analog.com/fpga/f/q-a/113387/configuring-i2c-on-custom-platform/338146#338146