Unroll or stream loops in generated HDL code
coder.hdl.loopspec('unroll')
fully unrolls
a loop in the generated HDL code. Instead of a loop statement, the
generated code contains multiple instances of the loop body, with
one loop body instance per loop iteration.
The coder.hdl.loopspec
pragma does not
affect MATLAB® simulation behavior.
Note
If you specify the coder.unroll
pragma,
this pragma takes precedence over coder.hdl.loopspec
. coder.hdl.loopspec
has
no effect.
coder.hdl.loopspec('unroll',
unrolls
a loop by the specified unrolling factor, unroll_factor
)unroll_factor
,
in the generated HDL code.
The generated HDL code is a loop statement that contains unroll_factor
instances
of the original loop body. The number of loop iterations in the generated
code is (original_loop_iterations
/ unroll_factor
).
If (original_loop_iterations
/ unroll_factor
)
has a remainder, the remaining iterations are fully unrolled as loop
body instances outside the loop.
This pragma does not affect MATLAB simulation behavior.
coder.hdl.loopspec('stream')
generates
a single instance of the loop body in the HDL code. Instead of using
a loop statement, the generated code implements local oversampling
and added logic to match the functionality of the original loop.
You can specify this pragma for loops at the top level of your MATLAB design.
This pragma does not affect MATLAB simulation behavior.
coder.hdl.loopspec('stream',
unrolls
the loop with stream_factor
)unroll_factor
set to original_loop_iterations
/ stream_factor
rounded
down to the nearest integer, and also oversamples the loop. If (original_loop_iterations
/ stream_factor
)
has a remainder, the remainder loop body instances outside the loop
are not oversampled, and run at the original rate.
You can specify this pragma for loops at the top level of your MATLAB design.
This pragma does not affect MATLAB simulation behavior.