05-07-2010 08:41 AM
I was wondering who takes precedence when setting iostandard for I/Os? The HDL code/Schematic buffer, the .UCF file, or the VCCO pins on the chip. I can imagin setting the VCCO pins to one voltage and making your .UCF set another could cause problems. Are there safeguards inplace to prevent this sort of thing?
But my main question: which of these is most important? For LVCMOS33, can I just connect VCCO to 3.3V and be done with it or do I need to specify that in the .UCF file as well? (NET "pin_name" IOSTANDARD = LVCMOS33;) And if I have both of those, do I need to change my HDL code or buffer symbol to IOSTANDARD = LVCMOS33 or will the .UCF overide anything I have in my code?
Thanks for any help,
05-07-2010 09:49 AM
I'm pretty sure the Constraints Guide has the answer to your question.
05-07-2010 10:30 AM
You should either put the standard type and all of its attributes in the .ucf file, or put it directly in the HDL (verilog or VHDL).
The tools will note if you choose an IO standard or an attribute that is incompatible with the Vcco, has multiple definitions, the pin is not able to be used for what is desired, and so on.
It is best to be consistent: place all of the pin and IO standards and attributes either in the .ucf, of the pins in the .ucf, and the standard and attributes in the HDL, for example.
If you look at some of the examples for the various demo boards, you can get an idea how its done.
05-09-2010 07:12 AM
Just as an aside, the tools will have no idea what voltage is tied to your bank's Vcco pin,
unless you specify it in the .ucf file. Normally specifying an IOSTANDARD for every
pin will cause the tools to check for consistency between IOSTANDARDs in the same
bank, however it is up to you to realize what Vcco voltage those IOSTANDARDs require
and hook up your hardware appropriately. When you use an IOSTANDARD like LVCMOS25
but connect Vcco to another voltage like 3.3V, you will not have 2.5V CMOS outputs,
but rather 3.3V CMOS with a drive strength that doesn't match the selection. Also
setting Vcco to the wrong voltage will result in timing that doesn't match the timing
reports, and in some cases can cause incorrect termination impedance or even
severe overheating. Remember that the tools can only check what you tell them,
they are not omniscient. :-)