Hi all,
I am trying to create LVDS, bidirectional, DDR I/O pads in a Spartan-3E chip (xc3s500e).
I've created an I/O pad in VHDL which simply instatiates and connects Xilinx library components: * IOBUFDS = bidirectional, differential I/O pad, * IDDR2 = S3E input DDR logic, * ODDR2 = S3E output DDR logic, Tri-State control is not DDR - I've added a simple FF instance.
The pad matches a subset of the S3E description of the I/O pad logic.
When I try to implement a chip using these I/O pads, the synthesis and Translate stages complete without errors, but the Map stage outputs the following error for each I/O Pad:
ERROR:Pack:1564 - The dual data rate register Data_Pad/IO_Pad6/Out_DDR_Reg/Data_Pad/IO_Pad6/Out_DDR_Reg/ODDR2.C0D1
failed to join the DIFFSI component as required. Symbol Data_Pad/IO_Pad6/Out_DDR_Reg/Data_Pad/IO_Pad6/Out_DDR_Reg/ODDR2.C0D1
is not a kind of symbol that can join a DIFFSI component.
pin of the I/O pad - the I/O logic is placed at the "positive" pad, but borrows resources from the negative pad, which can't be used for anything else.
The error is connected to having bidirectional pads; when I used separate input and output pads, there were no errors.
There is no difference in the errors when I place LOC constraints on the positive, negative, both or none of the I/O pads.
The IDDR2 and ODDR2 have Generic options to control clock alignment, some of which borrow FFs from the negative pad; changing these Generics make no difference in the errors.
I am using ISE7.1i, SP4 (problem appeared in SP3 as well). The Xilinx knowledge base doesn't have anything about this error.
Anyone knows what is the problem and if there is any way to fix it? please help, I am getting pretty desperate (need to start board layout).
Thanks in Advance