Main Content

Hierarchical Distributed Pipelining

What Is Hierarchical Distributed Pipelining?

Hierarchical distributed pipelining extends the scope of distributed pipelining by moving delays across hierarchical boundaries within a subsystem while preserving subsystem hierarchy.

If a subsystem in the hierarchy does not have distributed pipelining enabled, HDL Coder™ does not move delays across that subsystem.

How Hierarchical Distributed Pipelining Works

For example, the following model has one level of subsystem hierarchy:

The following diagram shows the model after applying hierarchical distributed pipelining:

The subsystem now contains pipeline registers:

Benefits of Hierarchical Distributed Pipelining

Hierarchical distributed pipelining enables distributed pipelining to operate on a larger part of your design, which increases the chance that distributed pipelining can further reduce your critical path.

Hierarchical distributed pipelining preserves the original subsystem hierarchy, which enables you to trace the changes that occur during pipelining for nested Subsystem blocks.

Specify Hierarchical Distributed Pipelining

You can specify hierarchical distributed pipelining for your model. To specify hierarchical distributed pipelining using the UI, in the Apps tab, select HDL Coder. The HDL Code tab appears. Click the Subsystem and then click HDL Block Properties. Set DistributedPipelining to on

  1. In the Apps tab, select HDL Coder. The HDL Code tab appears.

  2. Click Settings. In the HDL Code Generation > Optimization > Pipelining tab, select Hierarchical distributed pipelining and click OK.

To enable hierarchical distributed pipelining, on the command line, enter:

hdlset_param('modelname', 'HierarchicalDistPipelining', 'on')

Limitations of Hierarchical Distributed Pipelining

Hierarchical distributed pipelining must be disabled if your DUT subsystem contains a model reference.

Hierarchical Distributed Pipelining Report

To see the hierarchical distributed pipelining information in the report, before you generate code for each subsystem or model reference, enable the optimization report. To enable this report, in the HDL Code tab, select Report Options, and then select Generate optimization report.

When you generate the optimization report, in the Distributed Pipelining section, you see the effect of the hierarchical distributed pipelining optimization. If hierarchical distributed pipelining is unsuccessful, the report shows diagnostic messages and offending blocks that caused hierarchical distributed pipelining to fail.

If hierarchical distributed pipelining is successful, the report displays colored sections to distinguish between different regions where HDL Coder applied hierarchical distributed pipelining.

Selected Bibliography

Leiserson, C.E, and James B. Saxe. “Retiming Synchronous Circuitry.” Algorithmica. Vol. 6, Number 1, 1991, pp. 5-35.