CRITICAL_SIG_OPT
is used to optimize
sequential loops by restructuring logic in the feedback path, so that timing-critical
signals travel through the smallest number of logic levels. The attribute should be
placed on sequential objects such as registers, that drive critical paths to their own
inputs.
The optimization improves critical path timing, but at the expense of increased logic utilization as it involves Shannon decomposition. You must mark the sequential elements (registers) with a loop which have reasonable logic levels. It can cause resource overhead due to logic replication.