coder.hdl.loopspec
Unroll or stream loops in generated HDL and SystemC code
Syntax
Description
For HDL Code Generation:
coder.hdl.loopspec('unroll') % HDL Code
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.
For HDL Code Generation:
coder.hdl.loopspec('unroll',
unrolls a loop by the specified unrolling factor,
unroll_factor
) % HDL Codeunroll_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.
For HDL Code Generation:
coder.hdl.loopspec('stream') % HDL Code
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.
For HDL Code Generation:
coder.hdl.loopspec('stream',
unrolls the loop with stream_factor
) % HDL Codeunroll_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.
For SystemC Code Generation:
coder.hdl.loopspec('unroll') % SystemC Code
inserts the pragma at the first line of the for
-loop body in
the generated SystemC code. This pragma indicates that the loop should be
completely unrolled during synthesis.
This pragma does not affect MATLAB simulation behavior.
For SystemC Code Generation:
coder.hdl.loopspec('unroll',
inserts the pragma at the first line of the unroll_factor
) % SystemC Codefor
-loop body in
the generated SystemC code. This pragma indicates that the loop should be
unrolled by a given unroll_factor
during synthesis.
This pragma does not affect MATLAB simulation behavior.