• No results found

Proposed algorithms

CHAPTER 6. PROPOSED ALGORITHMS

7.2 Contact placement

This section describes how contacts (support probes or push fingers) are added to an existing fixture, taking into account a minimum distance to other fixture contacts and DUT components.

The described procedure is invoked each time a step algorithm needs to place a contact.

The position of the contact is iteratively shifted until a safe distance is created between the contact to be placed, and other contacts and components. First the desired position is evaluated.

For each contact at the same side of the PCB, the distance between the evaluated position and that other contact is calculated. If this distance is less than the minimum specified distance, the position is adjusted such that the new distance between the adjusted position and the other contact is equal to the minimum distance, multiplied by an overshoot factor. The same procedure is applied to ensure a minimum distance to the PCB edges, and to the DUT components. If all these procedures are completed without any adjustments, the contact is added to the fixture.

In case an adjustment is made, the procedure is repeated. This is done until a fitting position is found, or until a maximum of iterations is reached. If the latter is the case, the placement algorithm does not place any contact, but returns an error message that the contact addition has failed.

7.3 Slope based step

This section describes how the slope based step is implemented. One by one, all push fingers and test probes are adjusted according to the description given in Section6.3.

First, the mesh representing the deformed DUT is taken. Per contact to be adjusted, a set of mesh vertices/points near the centre of the contact is taken. Using a least squares method, a plane is fit through this set of points. This plane represents the 2D slope at the contact. From this plane, the normal is taken.

Next, the normal is projected on the original surface by reduction from n = (x, y, z) to nproj = (x, y). If the to be adjusted contact is a push finger, nproj is added to the finger position to make the push finger ‘walk upwards’. If the to be adjusted contact is a support probe, nproj is subtracted from the original position to make the contact ‘walk downwards’.

In order to control the step size, nproj can be multiplied with an aggressiveness value. Sec-tion8.4 presents the results of applying this described algorithm and the effects of different ag-gressiveness values.

7.4 Force based step

This section describes how the quantity version of the force based step algorithm is implemented.

Based on a seed fixture, a new fixture is designed. Each seed fixture contact is disregarded, copied once, or placed multiple times in the proposed fixture, all according to the description given in Section6.4.

The quantity version is implemented in the following manner. First, all test probes of the old fixture are copied to the new fixture. Second, all old support probes are sorted on the amount of force each one produces during the resting stage. Using this ordering, the n0 support probes exerting the least amount of force are ignored, but all other support probes are copied to the new fixture. Again using the ordered list of old support probes, the m0 support probes exerting the largest amount of force are copied a second time and inserted as close as possible to their original locations, while keeping a safe distance to PCB edges, DUT components and other probes. Third, all push fingers are per test stage sorted on force exerted, then copied zero, one or two times to the new fixture, using the same steps as used on the support probes.

Section 8.5 describes test results acquired after application of the described algorithm imple-mentation.

CHAPTER 7. IMPLEMENTATION

7.5 Displacement based step

This section describes how the displacement based step algorithm is implemented. Based on a seed fixture, a new fixture is designed. All old contacts are copied once, and a given number of support probes or push fingers is added, all according to the description given in Section6.5.

First, the mesh representing the deformed DUT is taken. Per test stage, all vertices are ordered on absolute Z displacement. Next, the vertex with the biggest displacement is picked. In case this displacement is in positive Z direction, a push finger is added as close as possible to the vertex position. In case the displacement is in negative Z direction, a support probe is in a similar way, after which a push finger is added above the support probe. This is repeated for the given number of contacts to add.

Section 8.6 describes test results acquired after application of the described algorithm imple-mentation.

7.6 Strain based step

This section describes how the displacement based step algorithm is implemented. Based on a seed fixture, a new fixture is designed. All old contacts are copied once, and a given number of support probes or push fingers is added, all according to the description given in Section6.6.

First, the mesh representing the deformed DUT is taken. Per test stage, all triangles are ordered on strain. Next, the triangle with most strain is picked. In case the displacement of this triangle is in positive Z direction, a push finger is added as close as possible to the centre of the triangle, in case the displacement is in negative Z direction, a support probe is in a similar way.

This is repeated for the given number of contacts to add.

To prevent a deformation overshoot, the addition of a support probe will be accompanied with adding a push finger above the support probe.

Section 8.7 describes test results acquired after application of the described algorithm imple-mentation.

7.7 Hill climb controller

This section describes how the hill climb controller is implemented, as described in Section 6.8.

Most of the hill climb controller structure has already been discussed in that section, but two elements need some extra explanation.

The main loop of the controller consists of four steps. First, a seed fixture is selected from the priority queue. Second, fixture derivations are created using the different step algorithms. Third, these derivations are analyzed. Fourth, the priority queue is updated according to the results.

Of these four steps, the second and third can be fully executed in parallel, to gain a high computational speedup. If sufficient cores are available, the number of fixture derivations has little influence on the time each loop iteration takes. By using more fixture derivations, the depth first search can converge quickly.

In between steps two and three, an extra check is performed that is not mentioned in Section6.8.

Per generated fixture, a convex hull of the different support probes is generated. If the DUT centre of gravity lies outside or close to this convex hull, the fixture will not provide stable support for the DUT in the resting stage. Furthermore, the generated fixture is compared with the seed fixture.

If the difference between these two is negligible, there is no much use in analyzing the fixture. In both cases, instability and negligible changes, the generated fixture is ignored in steps three and four. Since the strain analysis step is computationally the most heavy step, this reduces the total computing power used.

Chapter 8

Experimental results

This chapter describes the results obtained by applying the algorithms described in Chapter 6 using the implementations described in Chapter7.

In the first section, a set of PCBAs is introduced that will be used as the benchmark set.

The next section describes the different used test methodologies. The remaining sections then describe per algorithm the benchmark results and draws some intermediate conclusions. The final conclusions are based on the results described in this chapter and can be found in Chapter9.