Distributed Pipelining Using Synthesis Timing Estimates - MATLAB & Simulink (original) (raw)

Distributed pipelining is a speed optimization that increases clock frequency for your target device by distributing pipelines in your generated HDL code. For more information, see Distributed Pipelining. Synthesis timing estimates can more accurately reflect how components function on hardware. You can use them for distributed pipelining to more effectively maximize the clock frequency for your specific target device.

Synthesis Timing Estimates in Distributed Pipelining

When applying distributed pipelining to a subsystem, HDL Coderâ„¢ calculates an approximate propagation delay for each component in your design to determine where to place the added delays. Synthesis timing estimates are propagation delay estimates for each component in your design.

Without synthesis timing estimates, HDL Coder calculates propagation delay for the components in your design by assigning each component an equal weight, except for wire components, such asSelector blocks and Bit Concat blocks, that are assigned zero propagation delay.

Using synthesis timing estimates, HDL Coder calculates propagation delays for the components in your design by assigning different weights to varying components, based on how the components function on hardware. This information is derived from a target-specific timing database that HDL Coder supports, or that you create by using the genhdltdb function. Critical path estimation uses the same timing databases to estimate the critical path in a design. See Critical Path Estimation Without Running Synthesis. Using synthesis timing estimates for distributed pipelining is typically applied when you specify a synthesis tool for the model because the optimization option is platform-specific.

How Distributed Pipelining Works By Using Synthesis Timing Estimates

For an example of how distributed pipelining works using by synthesis timing estimates, in the following model, there is a delay of 2 at the output. Multipliers on hardware take longer to compute than adders, meaning their actual propagation delay is longer than adder propagation delay. To simplify the calculations for this example, assume adders have a propagation delay of one nanosecond and multipliers have twice as long of a propagation delay as adders, two nanoseconds.

Original model with two output delays

Without using synthesis timing estimates for distributed pipelining, the adders and multipliers are given equal weights for their propagation delays and the distributed pipelining algorithm cannot tell the difference between the components. The pipelines are distributed as shown in the figure. The critical path length then becomes the delay of the first adder and multiplier, three nanoseconds.

Generated model with delays redistributed using distributed pipelining but not using synthesis timing estimates

Using synthesis timing estimates for distributed pipelining, the adders and multiplier are now given weights for their propagation delays that more accurately reflect how the components function on hardware. The delays are redistributed so that the critical path contains just the multiplier, making the critical path length the propagation delay of just the multiplier, two nanoseconds.

Generated model with delays redistributed using synthesis timing estimate for distributed pipelining

Using synthesis timing estimates for distributed pipelining most effectively minimizes the critical path to maximize the clock frequency for your design when:

Requirements for Synthesis Timing Estimates for Distributed Pipelining

To use synthesis timing estimates for distributed pipelining, specify distributed pipelining for at least one subsystem or MATLAB Function block in your design.

If you specify a synthesis tool using the model parameterSynthesisTool, HDL Coder sets default values for the model parametersSynthesisToolChipFamily andSynthesisToolSpeedValue. If you do not specify a value forSynthesisTool or forSynthesisToolChipFamily andSynthesisToolSpeedValue, HDL Coder generates a warning when generating HDL code. HDL Coder sets the default values for SynthesisToolChipFamily and SynthesisToolSpeedValue as virtex7 and-1 respectively. To prevent the warning, specify theSynthesisToolChipFamily andSynthesisToolSpeedValue parameters.

Specify Distributed Pipelining to Use Synthesis Timing Estimates

To use synthesis timing estimates for distributed pipelining, you can:

For more information, see the Use Synthesis Timing Estimates for Distributed Pipelining section in the Distributed Pipelining: Speed Optimization example.

Limitations

See Also

Properties

Topics