The recourse to operation research solutions has strongly increasedthe performances of scheduling task in the High-Level Synthesis(called hardware compilation). Scheduling a whole program is notpossible as too many constraints and objectives interact. We decomposehigh-level scheduling in three steps. Step 1: Coarse-grain schedulingtries to exploit parallelism and locality of the whole program (inparticular in loops, possibly imperfectly nested) with a rough view ofthe target architecture. This produces a sequence of logical steps,each of which contains a pool of macro-tasks. Step 2: Micro-schedulingmaps and schedules each macro-task independently taking into accountall peculiarities of the target architecture. This produces areservation table for each macro-task. Step 3: Fine-grain schedulingrefines each logical step by scheduling all its macro-tasks. Thispaper focuses on the third step.As tasks are modeled as reservation tables, we can express resourceconstraints using dis-equations (i.e., negations of equations). Asmost scheduling problems, scheduling tasks with reservation tables tominimize the total duration is NP-complete. Our goal here is todesign different strategies and to evaluate them, on practicalexamples, to see if it is possible to find optimal solution inreasonable time. The first algorithm is based on integer linearprogramming techniques for scheduling, which we adapt to our specificproblem. Our main algorithmic contribution is an exactbranch-and-bound algorithm, where each evaluation is accelerated byvariant of Dijkstra's algorithm. A simple greedy heuristic is alsoproposed for comparisons. The evaluation and comparison are done onpieces of scientific applications from the PerfectClub and theHLSynth95 benchmarks. The results demonstrate the suitability of thesesolutions for high-level synthesis scheduling.