TMC-20603: Registers with High Immediate Fan-Out Span


Violations of this rule identify registers with immediate fan-out span scores exceeding the value of the minimum_span parameter. This rule analyzes the final placement to identify registers with sinks that are pulling the register in various directions. The Compiler recommends these registers as candidates for duplication.

  • There are two types of sink : "immediate fan-out" and "timing path endpoint."
  • There are two types of pull : "tension" and "span."

Immediate fan-outs are the immediately connected nodes (lookup tables, other registers, RAM or DSP blocks, and others) of the register. This is equivalent to fan-outs that the Chip Planner displays, and in various high fan-out reports. Register duplication directly distributes the immediate fan-outs of a register among the duplicates.

Figure 1. Immediate Fan-Out

Span is the maximum one dimensional delta between the left-bottom-most sink, and the right-top-most sink. The span value is therefore independent of the number of sinks, and it is good at detecting registers that drive a long distance in opposite directions. Register duplication can allow duplicates to travel in each direction to more efficiently disperse the signal.

Figure 2. High Span


Name Description Type Default Value Min Value Max Value
minimum_tension Reports a violation for drivers that have a tension score of at least the value specified in this parameter integer 100000    
minimum_span Reports a violation for drivers that have a maximum 1-dimensional span of at least the value specified in this parameter integer 250    
ignore_high_fanout_tension Filters out registers with high immediate fan-out tension bool 0    
ignore_high_fanout_span Filters out registers with high immediate fan-out span bool 0    
minimum_sinks Filters out registers with fewer than the specified number of sinks integer 2   0


Duplicate high fanout-span driver registers. Specify the DUPLICATE_REGISTER and DUPLICATE_HIERARCHY_DEPTH assignments for automated solutions, or edit the RTL to create duplicate copies. If you edit the RTL, apply the preserve_syn_only attribute to the duplicate registers, and assign the duplicates to individual instances in the fan-out hierarchy.




Tag Description
register-duplication Design rule checks related to duplication of registers in the design, either manually or automatically.
register-spread Design rule checks related to measuring the spread of a register's sinks, as found in the "Report Register Spread" command.
place Design rule checks which pertain to the Compiler's Place stage.

Device Family

  • Intel®Stratix® 10
  • Intel Agilex®
  • Intel Agilex®
  • Intel Agilex®
  • Intel®Arria® 10