After opening a Vivado project incorporating an IP core which uses a COE file in its XCI file (e.g., a block RAM might require a .coe file), you can see the relative path to the COE file.
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COE_FILE">../blk_mem_gen_v8_0_0c0h3jfb7ba3aph379te0864a8_vivado.coe</spirit:configurableElementValue>
Then, after generating the output products for the IP, the above XCI file gets overwritten as expected, but now it contains the absolute path.
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COE_FILE">c:/CASE_968283/src/sysgen/duc_2lte/ip/blk_mem_gen_v8_0_0c0h3jfb7ba3aph379te0864a8_vivado.coe</spirit:configurableElementValue>
This causes errors when attempting to re-generate IP core target files if the project has been moved or sent to a different location where the absolute path can no longer be found (even though the relative path would still have been valid).
This issue has also been seen with Sysgen projects where IP cores using COE files are included.
In the Vivado Design Suite 2013.1, COE file relative path support in XCI is available only for internal sources (i.e., the .coe file should be available inside the project/srcs/ip directory).
In the case of any external design sources, absolute paths will be referred in the XCI file.
Some possible work-arounds include:
In the Vivado Design Suite 2013.2, COE file paths will be stored as relative paths when possible.