User Tools

Site Tools


profiling-driven_multi-cycling

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revision Both sides next revision
profiling-driven_multi-cycling [2014/10/10 01:35]
stefan [Turning on Multi-Cycling]
profiling-driven_multi-cycling [2014/10/10 01:37]
stefan [Turning on Multi-Cycling]
Line 25: Line 25:
  
   * MULTI_CYCLE_REMOVE_REG will de-pipeline data paths, and instead write the multi-cycle constraints to a file. This is done by ''​make''​. The constraints are then added to the project'​s .sdc file by ''​make p'',​ if MULTICYCLE_CONSTRAINTS was enabled in Makefile.config. This is the only one of the 4 variables which needs to be set.    * MULTI_CYCLE_REMOVE_REG will de-pipeline data paths, and instead write the multi-cycle constraints to a file. This is done by ''​make''​. The constraints are then added to the project'​s .sdc file by ''​make p'',​ if MULTICYCLE_CONSTRAINTS was enabled in Makefile.config. This is the only one of the 4 variables which needs to be set. 
-  * MULTI_CYCLE_DUPLICATE_LOAD_REG will force each load from memory (local and global) to have a unique load register, so that it can hold the loaded value are feed multi-cycle paths. See [[Multi-Cycle Enhancements]] for for information. While this is not necessary for multi-cycling,​ not setting this will reduce the opportunities for multi-cycling and I have not recently tested without it.+  * MULTI_CYCLE_DUPLICATE_LOAD_REG will force each load from memory (local and global) to have a unique load register, so that it can hold the loaded value are feed multi-cycle paths. See [[Multi-Cycle Enhancements]] for for information. While this is not necessary for multi-cycling,​ not setting this will reduce the opportunities for multi-cycling and I have not recently tested without it. Note that it may give an error if ram latency is set to < 2 (e.g. if it's set to 1 for local rams), so make sure to set latencies to 2 instead of 1 (this will improve fmax but make latency worse)
   * MULTI_CYCLE_DISABLE_REG_MERGING was added because once I noticed that a register with a multi-cycle .sdc constraint was merged with another register by synthesis, and the constraint was lost. I recently did an experiment where this was turned off however and it had no negative side effects (one or two circuits saved ~50 registers, but mostly the same)   * MULTI_CYCLE_DISABLE_REG_MERGING was added because once I noticed that a register with a multi-cycle .sdc constraint was merged with another register by synthesis, and the constraint was lost. I recently did an experiment where this was turned off however and it had no negative side effects (one or two circuits saved ~50 registers, but mostly the same)
   * MULTI_CYCLE_REMOVE_CMP_REG was added to remove registers from icmp instructions during de-pipelining. The de-pipelining is usually handled without any "​hacks"​ for every instruction but I couldn'​t figure out how to do it for compare instructions,​ so this is kind of a hack. I then also did the same thing for function arguments to remove drivers for their registers, so MULTI_CYCLE_REMOVE_CMP_REG now controls both these cases.   * MULTI_CYCLE_REMOVE_CMP_REG was added to remove registers from icmp instructions during de-pipelining. The de-pipelining is usually handled without any "​hacks"​ for every instruction but I couldn'​t figure out how to do it for compare instructions,​ so this is kind of a hack. I then also did the same thing for function arguments to remove drivers for their registers, so MULTI_CYCLE_REMOVE_CMP_REG now controls both these cases.
profiling-driven_multi-cycling.txt ยท Last modified: 2016/04/23 03:56 by stefan