Description
I placed a timing constraint on a path, but the constraint has errors and too many levels of logic.
How can I make this timing constraint pass?
Solution
This is a case where logic exceeds some percentage of the total path delay, implying that there is too much logic between timing end points; the amount of logic must be reduced in order to meet timing requirements.
This number was traditionally around 50% for older architectures; it would need to be quantified for Virtex families (60%). There are exceptions to this rule for carry chain paths, in which the logic delays are much smaller and would allow for a higher number of logic levels or a lower component percentage.
To reduce the levels of logic, return to the source and try the following:
- Issue State Machine Optimization Suggestions, see (Xilinx Answer 9411).
- Use CASE statements instead of nested IF-ELSE statements.
- Use 3-state instead of large muxes (7 or more inputs).
- Use creative math; shift instead of multiplying by multiples of two.
- Use decoders instead of comparators.
- Balance logic around registers.
- Pyramid logic with parentheses instead of serial implementation.
- Use IF-THEN-ELSE statements only to do the following:
- Pre-decode and register counter values.
- Add a level of pipelining to pre-decode and register input signals.
- Use muxes with more than 7-bit wide buses only to do the following:
- Instead of logic, use registers that are in a 3-state condition.
- Drive enable signals from registers; 3-states are in a 3-state condition when enable signals are "1," and drive signals when the enable is "0".
- Use floorplan 3-states.
Add pipeline registers.
For additional suggestions and recommendations, see the following Answer Records:
- For avoiding high fanout signals, see (Xilinx Answer 9410).
- For state machine optimization, see (Xilinx Answer 9411).
- For long carry logic chains, see (Xilinx Answer 9412).
- For I/Os 3-state enable paths, see (Xilinx Answer 9413).
- For paths through TBUFs, see (Xilinx Answer 9414).
- For timing through irrelevant paths such as RESET or ".SR" pin, see (Xilinx Answer 9415).
- For using multi-cycle paths, such as a path through a ".CE" pin, see (Xilinx Answer 9416).
- For timing constraints that miss their goals by 5% to 10%, see (Xilinx Answer 9418).
- For timing constraints that miss their goals by 10% to 15%, see (Xilinx Answer 9419).