AR# 1669: XABEL-CPLD: Out Of Memory error or long compile times (@CARRY directive)
XABEL-CPLD: Out Of Memory error or long compile times (@CARRY directive)
Keywords: XABEL, CPLD, CARRY
General Description: Designs that have wide with arithmetic functions, 16 bit adders for example, may take a long time to compile or cause an Out of Memory error to appear.
Use the @CARRY compiler directive to limit the bit width of arithmetic functions.
Syntax: @carry <expression>;
Use: The @CARRY directive specifies how adders, counters, and comparators are generated, enabling you to reduce the amount of logic required for processing large arithmetic functions.
For example, for a 16-bit adder, an @CARRY statement with an expression that results in 4 would divide the 16-bit adder into four 4-bit adders, creating intermediate nodes, thereby reducing the amount of logic generated. @CARRY 4 limits the lookahead carry by generating chains of 4-bit adders and comparators for all subsequent adder and comparator equations.
If the @CARRY directive is not used or @CARRY 0 is specified, full lookahead carry is generated.