+++ title = "Combining Loop Pipelining and Scheduling " author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3c", "1c6"] forwardlinks = ["1c6", "1c6a", "3c2"] zettelid = "3c1" +++ A [high-level synthesis] tool needs to perform various optimisations to. The idea is to simulate full resource constrained scheduling with loop pipelining ([\#1c6]) by splitting up the transformation into two steps. One thing to consider is that this is software loop scheduling ([\#1c6a]). 1. First, resource constrained iterative modulo scheduling \[1\] can be performed, which only affects loops and schedules each instruction into a clock cycle. This can move instructions over loop boundaries to create a more compact schedule and pipeline the instructions. 2. Second, resource constrained scheduling can be performed on all the instructions in the program, by limiting each schedule to a basic block at a time. This will parallelise the epilogue that was generated in the iterative modulo scheduling step.