Quartus® Prime Pro Edition User Guide: Design Optimization

ID 683641
Date 7/08/2024
Public
Document Table of Contents

5.5.9.9.2. Automatic Register Duplication: Estimated Physical Proximity

The DUPLICATE_REGISTER assignment helps in leveraging estimated physical proximity information to guide the creation of duplicates and their fan-out assignments.
set_instance_assignment -name DUPLICATE_REGISTER -to <register_name> <num_duplicates>

where,

  • register_name is the register to duplicate. To create a register tree from a chain, create a unique assignment for each register in the chain. DUPLICATE_REGISTER assignments are processed in the appropriate order if they apply to registers that drive each other in a chain.
  • num_duplicates is the number of duplicates of the register to create (including the original). If the original signal has M fan-out, the average fan-outs of the duplicates are M/N but any individual duplicate may have more or fewer, at the discretion of the algorithm.

The DUPLICATE_REGISTER assignment is processed during the Fitter stage. It is necessary to create the duplicates and assign fan-outs between the duplicates based on early estimates of physical proximity to maximize the amount of time spent optimizing the design post-duplication. However, this renders fine-grained assignment decisions imprecise. The DUPLICATE_REGISTER assignment is best used when the number of duplicates is small (under 100) and the groups created are coarse-grained enough to allow for flexibility during optimization after the duplicates are created.

The Fitter Duplication Summary panel of the Fit report details the DUPLICATE_REGISTER assignments picked up by Quartus® Prime Pro Edition. It also summarizes any registered signal with greater than 1000 fan-outs, as they could be reasonable candidates for DUPLICATE_REGISTER assignments in future.

Important:
  • Setting PHYSICAL_SYNTHESIS to OFF disables DUPLICATE_REGISTER.
  • Unlike other physical synthesis optimizations, the DUPLICATE_REGISTER assignment does allow duplication of registers that feed asynchronous clears and registers having location assignments.
  • The DUPLICATE_REGISTER assignment does not process registers that have any of the following conditions:
    • Registers drive global signals or clock signals.
    • Registers have timing assignments or exceptions applied to them.
    • Registers have a preserve attribute or a PRESERVE_REGISTER assignment.
    • Registers are marked as don't touch.
    • Registers drive or are driven by other partitions.