Electronic – Using register retiming to pipeline a module

digital-logicflipflophdltiming-analysis

From my reading I understand that modern synthesis tools are able to perform register retiming where registers are moved between combinational logic to meet timing constraints.

So for example in your HDL you would describe comb -> reg1 -> reg2 -> reg3 and the tools would move those registers to get comb1 -> reg1 -> comb2 -> reg2 -> comb3 -> reg3.

When would one manually pipeline logic rather than depending on register retiming?

Best Answer

Well there are at least two scenarios where I would opt for manual retiming:

  1. Where I know there is a specific optimal geometry, for example, a logic tree, and I don't want the synthesizer to do this alone since it could make a suboptimal election.

  2. Synthesis running times can be long. I may prefer to make these decisions alone instead of letting the tool take them, where I may have to check what it did and possibly rerun synthesis.