01-02-2015 09:00 PM
I'd like to report a misbehavior of the "Create Interface Definition" tool in Vivado 2014.4 x64 (Windows 8.1 pro x64).
When creating a customized interface using the tool, A "busDefinition" and an "abstractionDefinition" .xml files are created correctly, but when the interface name is edited and saved they contain the same VLNV (vendor-library-name-version).
According to the IP-XACT (IEEE-1685-2009) specification, a VLNV must be unique in the current ip_repo/library.
Observing the interfaces definition that come with Vivado, all of them have different VLNVs for the "busDefinition" and "abstractionDefinition" files, but the generated with the tool fail at the "name" attribute of the "abstractionDefinition" file.
For example, Xilinx's "clock" interface is defined as:
- "busDefinition" = "clock"
- "abstractionDefinition" = "clock_rtl"
And if I generate a custom interface I obtain the following:
- "busDefinition" = "cust_int"
- "abstractionDefinition" = "cust_int"
Which generates an identical VLNV.
The steps to reproduce the problem are:
- 1: Open any project in Vivado.
- 2: Go to menu: Tools -> Create "Interface Definition...".
- 3: On the opened window select "Create new interface definition".
- 4: Populate the VLNV fields, choose a location and click Ok.
- X: Two files are created, and they have the correct values for the name attribute.
- 5: Change the interface name, just adding a single letter triggers the bug.
- 6: Click save and examine the .xml files generated, now both contains the same name attribute, which is forbidden by the IP-XACT specification.
When I change the interface name in the tool, the "Tcl Console" show this:
Line 1: set_property name cust_int [ipx::current_busdef]
Line 2: set_property name cust_int [ipx::current_busabs]
I think that is the cause for the bug, because the second line should has "cust_int_rtl" as the name.
01-04-2015 01:38 PM
Thanks for the very detailed write up. This does indeed look like a bug that needs to be addressed. And as you note, that second line of TCL is the error (and also the way to fix the problem, by issuing the correct tcl your self on the console).