AR# 1846: 2.1i/1.5x/XABEL-CPLD: Controlling optimization using 'keep' and 'LOGIC_OPT'
2.1i/1.5x/XABEL-CPLD: Controlling optimization using 'keep' and 'LOGIC_OPT'
Keywords: XABEL, CPLD, keep, logic_opt
The CPLD Fitter will attempt to reduce the number of logic levels for all signal paths. This means that the resulting logic functions have a wider signal fan-in and may require more product terms than if some of the reduced combinatorial nodes were retained.
If the design is running out of function block inputs or product terms, and it has combinatorial nodes which are being collapsed, you can selectively control the optimization, and preserve selected nodes. This can free up additional function block inputs and/or macrocell product terms at the expense of the macrocells used to implement the combinatorial nodes.
To prevent optimization of selected nodes, you must instruct BOTH the Abel compiler AND the CPLD fitter to preserve the specified nodes. The 'keep' attribute will tell Abel not to collapse the node, and the 'LOGIC_OPT' property statement will tell the Fitter not to optimize it.
In the ABEL file, the following 2 lines must be included in the Declarations section to prevent the collapsing of the node MY_NODE.
MY_NODE node istype 'com, keep'; XEPLD Property 'LOGIC_OPT OFF MY_NODE';
In 2.1i/1.5x (EDIF flow), the KEEP attribute tells both the ABEL compiler and the CPLD fitter to preserve the node; the LOGIC_OPT attribute is no longer needed and is obsolete.