1149 - Diamond: Why does the user get warnings in the automake.log file regarding "Combinational Loops found"? <br>
Use of combinational loops has long been discouraged because they can cause significant stability and reliability problems in a design. The combinational loop behavior is usually dependent on the relative propagation delays of the loop's logic.
Typically, combinational loops creep into a design to handle sticky asynchronous issues. A combinational loop is essentially the implementation of an implied or inferred latch. An inferred latch is an example of a combinational feedback loop because this function has to be built out of LUTs since there is no latch mode for the FPGA registers. When latches are implemented in LUTs, the timing analysis tool is not able to check the setup and hold time requirements on these circuits. Most design issues in which a combinational loop have been employed can be solved with a standard register, and the design will be more robust and stable.
Combinational loop warning are usually a result of "combinational" logic code that isn't strictly combinational. These Combinational loops are usually associated with an error in the "Case" structure or the "IF/Then/Else" structure. (e.g. An incompletely specified "case statement"). One suggestion is to keep registers in separate processes from combinatorial logic. This makes it easier to tell if the inferred latch is really an error.
Users should investigate any combinational loops and implement a fix to the RTL to remove unintended latches or redesign the circuit so that no latch is required.
Related Articles
2592 - What does "potential circuit loops found in timing analysis" in trace report mean?
Solution: The use of combinational loops has long been discouraged because this can cause significant stability and reliability problems in a design. The combinational loop behavior is usually dependent on the relative propagation delays of the ...
ECP5 / Diamond 3.14: Why does my design get a Map device oversize error related to PLL for LFE5U-12F in with Diamond 3.14, but completes map successfully in earlier releases of Diamond software?
In Diamond version 3.14, there is a bug where it incorrectly limits the number of PLLs in the device to 0 for LFE5U-12F. Example error message: ERROR - (device oversize error). The number of PLL components needed (1) exceeds the number available. ...
Diamond / Synplify Pro: Can the user ignore the "Unsupported property <parameter_name> found - ignoring" warnings of specific parameters when synthesizing using Synplify Pro?
Yes, these warnings are safe to ignore. These warnings occur because, for any Verilog parameter or localparam, Synplify Pro will pass it with a value into EDIF as part of the original design info. Since such property cannot be recognized by ...
346 - Lattice Diamond: Where can I find a description of Synplify errors and warnings?
In Synplify, select Help->Error Messages An Online Help - Message Viewer window appears. Select the Index tab on the left portion of the window. Select each of the following for more information: error messages, errors, warning messages, and warnings ...
1712 - Diamond: How can user get estimated timing of my design before running place and route?
In both ispLEVER and Lattice Diamond tools, user can generate the timing using the static timing analysis tool after map, and before place and route. The static timing analyzer (TRCE) will generate timing using estimated models, as well as the fanout ...