TMC-20602: Registers with High Timing Path Endpoint Tension


Violations of this rule identify registers with timing path endpoint tension scores exceeding the value of the minimum_tension 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."

Timing path endpoints are the nodes (usually registers) that terminate timing paths from a register. The Timing path endpoint is equivalent to the nodes that the get_fanouts command returns, or the overall set of nodes that appear as a "From Node" after running the report_timing command. Register duplication is necessary, but not always sufficient, in helping to distribute the signal more efficiently. In addition, you may need to duplicate or restructure any intermediate logic before duplicating the register.

Figure 1. Timing Path Endpoint

Tension is the sum over each sink of the distance from the sink to the centroid of all the sinks. The value of tension is therefore dependent on the number of sinks. Register duplication can help to break up these clouds, since they may be the result of the placement solution getting "warped" by the presence of the register.

Figure 2. High Tension

Registers with high tension among timing path endpoints prevent the Compiler from properly localizing connections and can warp the optimization of placement and routing.


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


Restructure the fan-out cone of the high endpoint-tension driver registers, or duplicate the driver registers. Better localization of the fan-out paths may require logic duplication or additional pipelining. If the driver registers have 1 immediate fan-out, duplicating those registers either in the RTL, or with the DUPLICATE_REGISTER or DUPLICATE_HIERARCHY_DEPTH assignments, can improve results.




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