Route boxes are usually used to create parameterized routing between families whose sizes can vary depending on instantiation parameters. However, occasionally the size of a family is fixed by the algorithm. In such cases, the route box can also be used to implement fixed connections that are not easily specified with routing equations. Here are examples for the three different ways this can be done.
Problem:
Show how to take members 0, 5, and 9 from a family of 11 members and connect them to members 1, 7, and 3, respectively, of a family of 9 members.
Solution:
Here's the first and simplest solution. We use route3_1 to pull out members 0.5. and 9 from [1]x. We use route_2 to then connect members 1,7 and 3 of [1]y. The connections between the two route boxes implement the permutation.

The second solution uses an additional range variable, k, that ranges over the number of connections being made. Array P is initialized to the members of the source that are to be connected and array Q is initialized to the respective members of the destination that are to be connected.

The final solution uses just one route box and an array R whose i'th member tells which destination the ith source is connected to. If no connection is to be made -1 is entered in the array.

This is the simplest solution when the permutation fully connects inputs and outputs. For example connect 0,1,2,3,4,5,6,7,8 to 1,3,5,7,0,2,4,6,8.

Here is another example showing two methods of accomplishing the same routing topology.
Application Note last updated 3/24/98