Using Istype 'invert' and 'buffer'
An output can be declared as type 'invert', and still be implemented with
either positive or negative-polarity. This is because many devices feature fixed
inverters between the flip-flop outputs and the actual output pins, and
programmable-polarity elements located at the terminus of the programmable arrays
(before the flip-flops). Devices such as this allow automatic polarity selection
to be performed (to reduce product term requirements) without affecting the behavior
of flip-flops (as observed on the device outputs).
Note: The XC9500 family does not have inverters between the macrocell flip-flop and the output
pin. However, the existance of an inverter is emulated for register behavior when the 'invert' attribute
is applied.
Since the 'invert' and 'buffer' attributes are related to flip-flops, they
have no meaning and do not apply to signals that are used or declared as
combinational (for example, by using the 'COM' attribute), nor do they apply to input
signals.
When 'invert' or 'buffer' are used for an output signal, the information is
passed to later ABEL programs (such as the PLASim simulator, device fitters, and
the Fuseasm fuse mapper) in the OPEN-ABEL file. If the 'invert' attribute is specified, outputs that were described
using the dot extensions .D, .T, .S, .R., .J., and .K are complemented in the
programmed device.
To see two designs that illustrate this concept, click on "Invert/Buffer
Example" below.
Invert/Buffer Example