| 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
 |