Research Article

High-Level Synthesis: Productivity, Performance, and Software Constraints

Table 3

For loop directives.

DirectiveDescription

loop_flattenCombine multiple levels of perfectly nested loops to form a single loop with larger loop bounds
loop_mergeCombine two separate loops at the same hierarchy level into a single loop
loop_unrollDuplicate computation inside the loop—increase computation resources, decrease number of iterations
pipelinePipeline computation within the loop (or region) scope—increase throughput and computation resources
occurrenceSpecify that one operation occurs at a slower (integer divisor) rate than the outer loop—improve pipeline scheduling, resource use
expression_balanceTypically automatic-code in the loop (or region) is optimized via associative and commutative properties to create a balanced tree of computation