Research Article

A Coarse-Grained Reconfigurable Architecture with Compilation for High Performance

Algorithm 2

ripup_reroute.
Input: &routingPathLst // routingPathLst stores routing requirements
Output: a new less congested routing solution stored in routingPathLst
1for ( ; Max; ++) {
2 regDuplicatorLst.clear(); // clear regDuplicatorLst before new iteration
3 newRoutingPathLst.clear();
4 for each path in routingPathLst {
5  src = p.origin; // get start_point of p
6  dest = p.destination; // get end_point of p
7  //step 1: ripup
8  ripup_path(p);  // ripup by release all resources used by p
9  end_step = getReadyStep(dest);
10  //step 2: reroute
11  cost_grid = route_path(src, end_step, &regDuplicatorLst);
12  //step 3: backtrace
13  new_ = backtrace(dest, &src, cost_grid);
14  add(new_ , newRoutingPathLst);
15  update(regDuplicatorLst, new_ );
16 }
17  routingPathLst = newRoutingPathLst;
18 }