Pipelining Parameters
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.
Allow design delay distribution
Specify whether to allow distributed pipelining and delay absorption optimizations to move design delays in your model.
Settings
Default: On
On
Allow distributed pipelining and delay absorption to move or absorb design delays in the model.
Off
Prevent distributed pipelining and delay absorption from moving or absorbing design delays in the model.
Command-Line Information
Property:
AllowDelayDistribution |
Type: character vector |
Value:
'on' | 'off' |
Default:
'on' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can use the AllowDelayDistribution
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', ... 'AllowDelayDistribution','off')
Use
hdlset_param
to disable the parameter on the model and then generate HDL code usingmakehdl
.hdlset_param('sfir_fixed','AllowDelayDistribution','off') makehdl('sfir_fixed/symmetric_fir')
See Also
Pipeline distribution priority
Specify the priority for the distributed pipelining and delay absorption optimizations.
Settings
Default:
Numerical Integrity
Numerical Integrity
Prioritize numerical integrity.
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 during the initialization cycles. 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. You can also use this option to reduce area by preventing distributed pipelining from inserting pipeline registers on stable paths.
Command-Line Information
Property:
PipelineDistributionPriority |
Type: character vector |
Value:
'Numerical Integrity' | 'Performance' |
Default:
'Numerical Integrity' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can use the PipelineDistributionPriority
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', ... 'PipelineDistributionPriority','Performance')
Use
hdlset_param
to set the parameter on the model and then generate HDL code usingmakehdl
.hdlset_param('sfir_fixed','PipelineDistributionPriority','Performance') makehdl('sfir_fixed/symmetric_fir')
See Also
Clock-rate pipelining
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.
Settings
Default: On
On
Insert pipeline registers at the clock rate for multi-cycle paths.
Off
Insert pipeline registers at the data rate for multi-cycle paths.
Dependency
If you specify an Oversampling factor greater than one or select Treat Simulink rates as actual hardware rates, 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.
Command-Line Information
Property:
ClockRatePipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'on' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function 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 usingmakehdl
.hdlset_param('sfir_fixed','ClockRatePipelining','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Allow clock-rate pipelining of DUT output ports
Produce the DUT outputs as soon as possible by passing the outputs from the DUT at the clock rate rather than the data rate.
Settings
Default: Off
On
Produce the DUT outputs as soon as possible at the clock rate.
Off
Produce the DUT outputs at the data rate.
Dependency
When you specify this parameter, make sure that you select the Clock-rate pipelining check box.
Command-Line Information
Property:
ClockRatePipelineOutputPorts |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function 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 by 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
, set the parameter on the model and then generate HDL code by using themakehdl
function.hdlset_param('sfir_fixed','ClockRatePipelineOutputPorts','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Balance clock-rate pipelined DUT output ports
Synchronize the DUT outputs while satisfying the highest-latency requirements of the outputs. Apply this option when interfacing your logic with a valid signal interface to align the output of the logic path and valid signal path.
Settings
Default: Off
On
Synchronize the DUT outputs.
Off
Produce the DUT outputs as soon as possible, without synchronization.
Dependency
To enable this parameter, select the Allow clock-rate pipelining of DUT output ports check box.
Command-Line Information
Property:
BalanceClockRateOutputPorts |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can use the BalanceClockRateOutputPorts
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', ... 'BalanceClockRateOutputPorts','on')
When you use
hdlset_param
, set the parameter on the model and then generate HDL code by using themakehdl
function.hdlset_param('sfir_fixed','BalanceClockRateOutputPorts','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Distributed pipelining
Enable pipeline register distribution, which is a speed optimization that increases the clock speed by moving existing delays in a design to reduce the critical path. This optimization moves the delays within a subsystem while preserving the hierarchy. For more information, see Distributed Pipelining.
Settings
Default: Off
On
Distribute pipelines in your design. To distribute pipelines, you must have pipelines already specified in your design.
Off
Do not distribute pipelines in your design.
Dependency
Your design must contain delays that can be redistributed. You can insert delays manually or by using the HDL block properties InputPipeline or OutputPipeline on a subsystem or block.
Command-Line Information
Property:
DistributedPipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can use the DistributedPipelining
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', ... 'DistributedPipelining','on')
When you use
hdlset_param
, set the parameter on the model and then generate HDL code by using themakehdl
function.hdlset_param('sfir_fixed','DistributedPipelining','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Use synthesis estimates for distributed pipelining
To determine more accurate propagation delays for each component, use synthesis timing estimates for distributed pipelining. Different weights are assigned to varying components, which more accurately reflects how the components function on hardware. When you enable this parameter, HDL Coder™ can better distribute pipelines in your design for HDL code generation and hardware deployment to maximize the clock frequency for your target device.
Settings
Default: Off
On
Use synthesis timing estimates for calculating propagation delays for each component in your design for distributed pipelining.
Off
Use equal weights for calculating propagation delays for each component in your design for distributed pipelining.
Dependency
Distributed pipelining must be enabled for at least one subsystem in your model to use this parameter.
Command-Line Information
Property:
UseSynthesisEstimatesForDistributedPipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can enable the
UseSynthesisEstimatesForDistributedPipelining
setting when you
generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model by using either of these methods:
Pass the property as an argument to the
makehdl
function.makehdl('sfir_fixed/symmetric_fir', ... 'UseSynthesisEstimatesForDistributedPipelining','on')
When you use
hdlset_param
, set the parameter on the model, and then generate HDL code by using themakehdl
function.hdlset_param('sfir_fixed','UseSynthesisEstimatesForDistributedPipelining','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Adaptive pipelining
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.
Settings
Default: Off
On
Insert adaptive pipeline registers in your design. For HDL Coder to insert adaptive pipelines, you must specify the synthesis tool.
Off
Do not insert adaptive pipeline registers.
Dependency
When you specify this parameter, in the HDL Code Generation > Target pane, specify the Synthesis Tool. If your design has multipliers, specify the Synthesis Tool and the Target Frequency (MHz) for adaptive pipeline insertion.
Command-Line Information
Property:
AdaptivePipelining |
Type: character vector |
Value:
'on' | 'off' |
Default:
'off' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function 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 usingmakehdl
.hdlset_param('sfir_fixed','AdaptivePipelining','on') makehdl('sfir_fixed/symmetric_fir')
See Also
Map lookup tables to RAM
Use this parameter to map lookup tables in your design to block RAM and reduce area usage on the target FPGA device.
Settings
Default: On
On
Map lookup tables in your design to RAM.
Off
Do not map lookup tables in your design to RAM.
Command-Line Information
Property:
LUTMapToRAM |
Type: character vector |
Value:
'on' | 'off' |
Default:
'on' |
To set this property, use the functions hdlset_param
or makehdl
. To view the property value, use
the function hdlget_param
.
For example, you can use the LUTMapToRAM
setting when you
generate HDL code for the symmetric_fir
subsystem inside the
sfir_fixed
model by using either of these methods:
Pass the property as an argument to the
makehdl
function.makehdl('sfir_fixed/symmetric_fir', ... 'LUTMapToRAM','on')
When you use
hdlset_param
, you can set the parameter on the model, and then generate HDL code by usingmakehdl
.hdlset_param('sfir_fixed','LUTMapToRAM','on') makehdl('sfir_fixed/symmetric_fir')