When I try to assign a bidirectional I/O a class I (or III) I/O standard, the following error occurs in the related packing phase of MAP. However, if the I/O standard attribute is changed from class I (or III) to class II (or IV), the error does not occur.
"ERROR:DesignRules:503 - Blockcheck: Incompatible programming for IO standard.
IO standard SSTL2_I_DCI of comp TST does not allow both input and output
programming on the same comp."
This error is valid. The reason that a class I (or III) I/O produces an error for bidirectional pins while a class II (or IV) I/O of the same type does not is related to the termination schemes used for the respective standards.
A class II (or IV) standard uses a termination scheme that is symmetrical with the transmission line (with termination resistors on both the source and receiver side). Alternatively, a class I (or III) standard uses an asymmetrical termination scheme with a termination resistor only on the receiving side. Consequently, the odd numbered classes cannot be used in a bidirectional IOB since in Virtex-II silicon the source and receiver share a common connection to the I/O pad.