Review Article

Formal ESL Synthesis for Control-Intensive Applications

Algorithm 1

Pseudocode of the PARCS scheduling algorithm.
(1) start with the initial schedule (including the special external port operations)
(2) Current PARCS state < 1
(3) Get the 1st state and make it the current state
(4) Get the next state
(5) Examine the next state’s operations to find out if there are any dependencies
 with the current state
(6) If there are no dependencies then absorb the next state’s operations into the
 current PARCS state; If there are dependencies then finalize the so far
 absorbed operations into the current PARCS state, store the current PARCS
 state, PARCS state < PARCS state + 1 ; make next state the current state;
 store the new state’s operations into the current PARCS state
(7) If next state is of conditional type (it is enabled by guarding conditions) then
 call the conditional (true/false branch) processing predicates, else continue
(8) If there are more states to process then go to step 4, otherwise finalize the so
 far operations of the current PARCS state and terminate