Answers Database
 
 
 CPLD: 9500/XL : How to control Logic Optimization in a CPLD 
 
 Record #2729
Product Family:  Software 
 
Product Line:  CPLD Implementation 
 
Product Part:  hitop 
 
Product Version:  1.3 
 
Problem Title: 
CPLD: 9500/XL : How to control Logic Optimization in a CPLD  
 
 
Problem Description: 
Urgency: standard 
 
General Description: 
 
The CPLD fitter software will collapse all the combinatorial 
logic in your design, either partially or completely. You can, 
however control the way the logic optimization is performed. 
 
 
Solution 1: 
 
Collapsing Product Term Limit: 
 
When a larger combinational logic function consisting of 
several levels of AND-OR logic is completely collapsed 
(flattened), the number of product terms required to implement 
the function may grow considerably. By default, the fitter 
limits the number of p-terms used as a result of collapsing to 
25 for XC9500 devices. If the collapsing of a logic level 
results in a logic function consisting of more than the p-term 
limit (after Boolean reduction), then the collapsing of that 
logic level is not performed and the function will be 
implemented using additional levels of AND-OR logic. 
 
You can change the Pterm Collapsing Limit to any value from 
2 to 90. 
 
The fitter report (design_name.rpt) indicates the number of 
p-terms used for each logic function. You should see these 
numbers increase as you raise the pterms limit, until the 
design is fully flattened. At the same time, you'll see the 
internal combinational nodes eliminated until none remain. 
 
 
 
 
Solution 2: 
 
Preventing Collapsing of a Logic Node: 
 
Flattening typically increases the overall amount of p-term 
resources required to implement the design. Some designs which 
fit the target device initially may fail to fit if flattened 
too much. Other designs can be flattened completely and still 
fit. If you cannot increase the pterms parameter enough to 
sufficiently flatten a critical path and still fit the target 
device, you may try applying the logic optimization control 
attribute KEEP to specific nodes in your design so that those 
nodes won't get collapsed into their fan-outs. 
 
If you have a symbol FRED in your schematic that you do not 
want to get optimized out, place the KEEP attribute on FRED. 
 
You can also do this through a UCF file. The correct syntax is: 
 
INST FRED KEEP; 
 
The KEEP attribute has no effect on any symbol that contains no 
macrocell logic, such as an I/O buffer. 
 
When the KEEP attribute is placed on a symbol, it inhibits 
logic optimization on all macrocells used to implement the 
symbol. For example, if you place KEEP on a macro symbol (E.g. 
Library Element - D2_4E), all outputs and internal nodes of the 
decoder will be prevented from collapsing. This is usually not 
desirable. 
 
If you want to prevent collapsing on a specific output signal 
from a macro symbol, you can place the KEEP attribute on the 
net itself. When you place the KEEP attribute on a net, the 
fitter applies the attribute only to the primitive symbol that 
drives that net. 
 
If you have a net JACK connected to your symbol FRED in your 
schematic that you do not want to get optimized out, place the 
KEEP attribute on JACK. 
 
You can also do this through a UCF file. The correct syntax is: 
 
NET JACK KEEP; 
 
 
 
Solution 3: 
 
Forcing Collapsing of a Logic Node: 
 
You can also force a logic symbol to collapse into all of its 
fanouts by placing the COLLAPSE attribute on the symbol or its output net. 
 
The correct syntax to do this via a UCF file is : 
 
NET NODE COLLAPSE; - on the output NET. 
 
The COLLAPSE attribute affects all logic functions contained 
within a symbol. If you want to force collapsing of a 
multi-symbol logic chain, you may need to use multiple collapse 
attributes. 
 
 
 
 End of Record #2729 - Last Modified: 12/30/99 10:34  |