This documentation page describes configuration parameters that reside in the HDL Code Generation > Optimization > Pipelining tab of the Configuration Parameters dialog box. Using the parameters in this section, you can improve the timing of your design on the target device. .
Hierarchical distributed pipelining extends the scope of distributed pipelining by distributing delays across subsystem hierarchies. This optimization moves the delays within a Subsystem while preserving the hierarchy.
Default: Off
Enable retiming across a subsystem hierarchy. HDL Coder™ applies retiming hierarchically from the top-level
Subsystem. To move delays inside a Subsystem, in the
HDL Block Properties for that Subsystem, set
DistributedPipelining to on
.
Hierarchical distributed pipelining stops distributing delays when it reaches a
Subsystem that has DistributedPipelining set
to off
.
Distributes pipelines within a Subsystem, if you have
DistributedPipelining set to on
for that Subsystem.
If you select the Preserve design delays check box, distributed pipelining does not move the design delays.
Property:
HierarchicalDistPipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can enable the HierarchicalDistPipelining
setting when you generate HDL code for the symmetric_fir
subsystem
inside the sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'HierarchicalDistPipelining','on')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','HierarchicalDistPipelining','on') makehdl('sfir_fixed/symmetric_fir')
Specify the priority for your distributed pipelining algorithm.
Default:
Numerical Integrity
Numerical Integrity
Prioritize numerical integrity when distributing pipeline registers.
This option uses a conservative retiming algorithm that does not move registers across a component if the functional equivalence to the original design is unknown.
Performance
Prioritize performance over numerical integrity.
Use this option if your design requires a higher clock frequency and the Simulink behavior does not need to strictly match the generated code behavior. This option uses a more aggressive retiming algorithm that moves registers across a component even if the modified design’s functional equivalence to the original design is unknown.
Property:
DistributedPipeliningPriority |
Type: character vector |
Value:
'NumericalIntegrity' | 'Performance' |
Default:
'NumericalIntegrity' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can use the DistributedPipeliningPriority
setting when you generate HDL code for the symmetric_fir
subsystem
inside the sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'DistributedPipeliningPriority','Performance')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','DistributedPipeliningPriority','Performance') makehdl('sfir_fixed/symmetric_fir')
If your design contains multicycle paths, use clock-rate pipelining to insert pipeline registers at a clock rate that is faster than the data rate. This optimization improves the clock frequency and reduces the area usage without introducing additional latency. Clock-rate pipelining does not affect existing design delays in your model. It is an alternative to using multicycle path constraints with your synthesis tool.
Default: On
Insert pipeline registers at the clock rate for multi-cycle paths.
Insert pipeline registers at the data rate for multi-cycle paths.
If you specify an Oversampling factor greater than one, make sure that you select the Clock-rate pipelining check box. Clock-rate pipelining identifies regions in your model that run at the same slow data rate and are delimited by Delay blocks or blocks that introduce a rate transition. The code generator converts these regions to the faster clock rate by introducing Repeat blocks at the input of the region and Rate Transition blocks at the output of the region.
Property:
ClockRatePipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'on' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can use the ClockRatePipelining
setting when you
generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'ClockRatePipelining','on')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','ClockRatePipelining','on') makehdl('sfir_fixed/symmetric_fir')
For DUT output ports, insert pipeline registers at the clock rate instead of the data rate.
Default: Off
At DUT output ports, insert pipeline registers at clock rate.
At DUT output ports, insert pipeline registers at data rate.
When you specify this parameter, make sure that you select the Clock-rate pipelining check box.
Property:
ClockRatePipelineOutputPorts |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can use the ClockRatePipelineOutputPorts
setting
when you generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'ClockRatePipelineOutputPorts','on')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','ClockRatePipelineOutputPorts','on') makehdl('sfir_fixed/symmetric_fir')
Use this parameter to insert pipeline registers to the blocks in your design, reduce the area usage, and maximize the achievable clock frequency on the target FPGA device.
Default: On
Insert adaptive pipeline registers in your design. For HDL Coder to insert adaptive pipelines, you must specify the synthesis tool.
Do not insert adaptive pipeline registers.
When you specify this parameter, in the HDL Code Generation > Targetpane, specify the Synthesis Tool. If your design has multipliers, specify the Synthesis Tool and the Target Frequency (MHz) for adaptive pipeline insertion.
Property:
AdaptivePipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can use the AdaptivePipelining
setting when you
generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'AdaptivePipelining','on')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','AdaptivePipelining','on') makehdl('sfir_fixed/symmetric_fir')
Default: Off
Prevent distributed pipelining from moving design delays.
Do not prevent distributed pipelining from moving design delays.
Property:
PreserveDesignDelays |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use hdlset_param
or makehdl
. To view the property value, use hdlget_param
.
For example, you can use the PreserveDesignDelays
setting when
you generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model using either of these methods.
Pass the property as an argument to the makehdl
function.
makehdl('sfir_fixed/symmetric_fir', ... 'PreserveDesignDelays','on')
When you use hdlset_param
, you can set the parameter on the
model and then generate HDL code using
makehdl
.
hdlset_param('sfir_fixed','PreserveDesignDelays','on') makehdl('sfir_fixed/symmetric_fir')