• 沒有找到結果。

Table 2.1: FIB observable rates for 0.18µm and 90nm technologies.

circuit technology difference

In Table 2.1, we report the FIB observable rate, i.e., the percentage of the total nets which can be successfully observed by FIB probing, for the benchmark circuits implemented by a UMC 0.18µm and a UMC 90nm process technology,

8 respectively. The layout of each circuit is generated by a commercial back-end tool, SoC Encounter [17], with a 80% cell-utilization rate. The minimal sufficient width of the baseline window is set to 1000nm. The benchmark circuits in use are the relatively large circuits selected from the ISCAS and ITC benchmarks. The same benchmark circuits will also be used in our later experiments.

As the result shows, the average FIB observable rate is 57.82% for the bench-mark circuits implemented by the 0.18µm technology, and drops to only 29.50% for that by the 90nm technology. This FIB observable rate will be even worse if a 65nm or 40nm technology is used. In other words, more than 70% of a circuit’s nets cannot be observed by FIB probing if a 90nm or smaller technology is used, which significantly limits the candidates that can be diagnosed through the FIB techniques and may delay the overall silicon-debug or failure-analysis process.

In this thesis, our objective is to build a framework, which can automatically adjust the circuit layout to increase the percentage of the nets that can be observed or even repaired by using FIB probing or FIB circuit editing. The layout adjustment made by this framework must be simple and good for timing, such that (1) the timing constraint of the circuit will not be violated, (2) no complicated router or placer is required to build the framework, and (3) the framework can be in conjunction with any back-end APR tool. Also, any made layout adjustment needs to follow the design rules. With the help of the proposed framework, we can extend the advantage of using FIB techniques for debugging to a more advanced process technology.

In the next chapter, we will first introduce our proposed framework, named MFOB, which focuses on maximizing the FIB observable rate.

Chapter 3

MFOB: Framework for Maximizing FIB Observable Rate

3.1 Basic Operations for Adjusting Layout

D %HIRUHDPRYHXSRSHUDWLRQ

Figure 3.1: Example of using a move-up operation.

In the proposed framework, we adjust the layout based on only two basic operations, named move-up and move-down. Each operation is performed on a metal line of a net. As its name, a move-up operation will move a portion of the target metal line to a higher layer with extra vias. The function of this move-up operation is to create a long-enough metal line at a higher layer to successfully land an FIB hole on it when the original target line at a lower layer is blocked by other metal lines on top. As a result, the moved-up portion of a line must be longer than the minimal sufficient width of a baseline window. Figure 3.1 illustrates an example of using a move-up operation, where metal line b is originally unobservable in Figure 3.1(a) since metal line a blocks the space on top of b for digging an sufficient

9

10 FIB hole (as shown by the dashed shape). After applying a move-up operation to b in Figure 3.1(b), the moved-up portion of b can successfully land an sufficient FIB hole and hence b becomes observable.

On the other hand, a move-down operation will move the target metal line to the empty space on a lower layer with vias. The function of this move-down operation is to remove the target line which originally blocks the observation of other lines below it, such that certain lines below it may become observable after the move-down operation. Figure 3.2 illustrates an example of using a move-down operation, where line b is originally unobservable due to line a and c blocking the space above b as shown in Figure 3.2(a). After applying a move-down operation to a, line b becomes observable as shown in Figure 3.2(b).

D %HIRUHDPRYH  

Figure 3.2: Example of using a move-down operation.

The move-up and move-down operations need not necessarily be applied individually. They can be applied together to make an unobservable line observable as illustrated in Figure 3.3, where line c is originally unobservable in Figure 3.3(a).

After applying move-down operation to b and move-up operation to c, line c becomes observable in Figure 3.3(b).

Note that the move-up and move-down operations move the metal line only vertically, and hence the total metal length of the layout is almost the same, except that an extra length of a via needs to be added to connect the new via if only a

11

Figure 3.3: Example of using both move-up and move-down operations.

portion of the line is moved. Also, all made move-up or move-down operations must be feasible, i.e., following the design rules, such as the spacing between the moved metal line and its new neighbors. In addition, some process technologies do not allow stacked vias, meaning that a via can pass through only a certain number of metal layers (3 in the UMC 90nm technology used in our experiments), which is another constraint of using a move-up or move-down operation.

3.2 Overall Flow of MFOB

Figure 3.4 shows the overall flow of the proposed framework MFOB, which requires the following input files.

• design.def: the file describing the layout of the design.

• FIB.para: the file describing the parameter for FIB, such as the minimal sufficient width of a baseline window and the edge slope of a dug FIB hole.

• tech.lef: the file describing the physical-design information for the cell library, such as pin location, layer, and via.

• netlist.v: the file describing gate-level netlist of the design.

• tech.lib: the file describing the timing information for the cell library.

12

Figure 3.4: The overall flow of the proposed framework.

The outputs of the framework include an adjusted layout, design new.def, and the list of the FIB observable nets, obs.list. The objective is to maximize the FIB observable rate without violating any design rule or timing constraint. After parsing in the input files, the first step of the framework is to examine whether each metal line in the layout is FIB observable or unobservable. Among the unobservable lines, we further determine whether an unobservable line can become observable by using the basic operations, assuming all other layout remains the same. If yes, how many operations are required. Those unobservable lines which can potentially turn into an observable one through basic operations are defined as the potentially observable lines. Based on the classification of all metal lines, we can determine whether a net is observable, potentially observable, or unobservable. Note that a net is (potentially) observable if any of its lines is (potentially) observable.

Next, our framework will iteratively select an untried potentially observable net and adjust the layout to turn it into an observable one until no untired potential

13 exists. In fact, adjusting the layout for a potentially observable net may eliminate the chance of other potentially observable nets becoming an observable one. Therefore, in order to maximize the FIB observable rate, we need to find a proper order for the potentially observable nets being processed. In our framework, this process order of the potentially observable nets is determined by a proposed ranking method, which will be introduced in detail in Chapter 3.3. Note that the layout adjustment here is performed based on a greedy-based principle. In other words, if an adjustment for a potentially observable net may turn an originally observable net into an unobservable or potentially observable one, the adjustment will not be performed. Any made layout adjustment must increase the overall FIB observable rate.

After the layout adjustment stops, we will perform connection check, design-rule check, and equivalence check to guarantee the correctness of the adjusted layout.

Then we perform the RC extraction for the layout and store the RC information in the .spef file. Last, a timing analysis is applied based on the RC information, design netlist, and technology files. If any timing violation occurs, we will rerun the whole framework without adjusting the timing-violated nets and the critical paths (if setup-time violated). In practice, timing violations rarely occur after our layout adjustment. Its reasons will be discussed in Chapter 4.5.

3.3 Ranking Method

We rank the potentially observable nets based on two criteria, the number of moving candidates of a net as the primary criterion and the moving cost of a net as the secondary one. First, the number of moving candidates of a net is the number of potentially observable lines contained by the net. If a net has only one moving candidate, then we should better adjust the layout to save this net as early as possible before its only left candidate become unobservable due to the layout

14 adjustment for the other nets. Thus, a net with less moving candidate will be selected earlier by our ranking method.

Secondly, the moving cost of a line is the number of basic operations required to turn the line into an observable one. The moving cost of a net is the smallest moving cost among all its composed lines. In our ranking method, we prefer to first select the net with the smallest moving cost, i.e., the easiest net to become observ-able. This is because our objective is to maximize the total number of observable nets with the limited routing resource. The less routing resource is spent for one net, the more routing resource can be left for the other nets. In summary, our ranking method will first select the net with the least moving candidates. If multiple nets have the same moving candidates, the ranking method will select the net with the smallest moving cost.

Once the layout adjustment is made for a net, the number of moving candi-dates and the moving cost for the other nets may also change accordingly, meaning that the ranking of nets changes as well. One way to handle this dynamic change is to recompute the moving candidates and moving cost for the affected nets immedi-ately after each layout adjustment, which is called the dynamic ranking. However, this dynamic ranking method requires extra runtime to iteratively search the nets affected by the layout adjustment and recompute their ranking. A more efficient way is to rank the nets based on initial layout and use this initial ranking through-out the entire laythrough-out-adjustment process, which is called the static ranking. We will compare the effectiveness and efficiency between the dynamic ranking and static ranking in Chapter 4.3.

15

3.4 Line Searching and Data Structure

In the proposed framework, we often need to search all the lines within a designated area, such as when computing the initial ranking for each net or updating the new ranking after each layout adjustment. Figure 3.5 shows an example of moving line b from metal 3 (M3) to metal 5 (M5). After moving line b, we need to project the moved line b to all layers below it with an offset wider on each lower layer, and all the lines within the projection area are the ones which may be affected by moving b to M3. Figure 3.5(a) and Figure 3.5(b) shows the cross-section view and top view of the projection area, which is highlighted by the dashed lines.

G

Figure 3.5: Illustration of a moved-up line and the other lines that are blocked by the moved-up line.

To speed up the search within a designated area, we utilize two STL map containers, named hM ap and vM ap, for each metal layer to store the summary information of the lines and sort them with the defined key value. The map con-tainer hM ap stores the information for horizontal lines, whose key is defined as the y-coordinate of the line. The map container vM ap stores the information for vertical lines, whose key is defined as the x-coordinate of the line. Note that the complete layout database is stored in another container of a net’s data structure, which describes the lines, vias, connections, locations, dimensions, and metal lay-ers, after parsing in the .def file. The above two map containers only store simple

16 summary information of a line, such as the location of its end points, the line id, its metal layer, and net id, to assist the search and the link to the complete layout database when needed. Figure 3.6 shows the layout of an exemplary layer and its corresponding hM ap and vM ap.

Figure 3.6: Example of using hM ap and vM ap to store the location of each line.

Since all lines are sorted by its coordinate in hM ap or vM ap, we can effi-ciently list the vertical or horizontal lines within a region by calling the build-in function ”lower bound” of a map container. As shown in Figure 3.6, if we try to search the vertical lines within the rectangle formed by (xi, yi) and (xj, yj), vM ap can list all the vertical lines between xi and xj, i.e., line D, E, F , and G. Then we compare the y-coordinate of each line’s end points to screen out the lines outside the boundary, i.e., E. The final searched lines are D, F , and G. Similar operations can be applied to the horizontal lines.

3.5 Computing Moving Cost

Another heavily operated task in the proposed framework is to compute the moving cost of a metal line, i.e., the number of operations which can make the line observable. To compute the moving cost, we first need to project the target line to each of its upper layers by using a similar way as shown in Figure 3.5, and

17 then search the lines within the projected area on each layer. Those searched lines are the ones which may block the observation of the target line. Next, for each searched blocking line, we project it back to the target line and mark the ends of the projection on the target. Figure 3.7 illustrates this projection process for a case where line a is the target line and line b, c, and d are the blocking lines above a.

F

Figure 3.7: Illustration of the procedure calculating the number of blocking lines for each interval.

In Figure 3.7(a), we first project line b onto line a and mark the left end point and right end point of the projection as value 1 and -1, respectively. By repeating the same action, we then mark the end points for the projection of line c and d as shown in Figure 3.7(b) and Figure 3.7(c). Up to now, line a is divided into several intervals as shown in Figure 3.7(c). Next, we can calculate the number of lines blocking each intervals by summing the marked value from the left to the right.

The summed values are listed on the intervals of line a.

After obtaining the number of lines blocking each intervals, we start to check whether the interval of 0 blocking line can be observable by directly observing it or moving the interval (or part of the interval) to a higher layer right above it. If the interval is already observable, the moving cost of the target line is 0. If the interval can be observable by moving it up, the moving cost is 1. If both cases

18 fail, we need to merge the interval of 0 blocking line with the interval of 1 blocking line, and then check whether the merged interval can be observable by moving all the blocking lines down or plus moving the interval up. If the merged interval can be observable by moving all the blocking lines down and those blocking lines can indeed be feasibly moved down, the moving cost is equal to the number of blocking lines in the merged interval. If the merged interval can be observable by moving all the blocking lines down plus moving itself up, the moving cost is equal to the number of blocking lines plus 1. If both cases fail, we need to merging the interval into the interval with one more blocking line. We repeat the above process until the interval with the most blocking lines is tried. If all above actions fail, the target line is defined as unobservable.

With the help of obtaining the number of blocking lines for each interval, we can systematically find a minimal number of move-up and/or move-down operations to make a target line observable. Such a moving-cost computation avoids the enu-meration and examination of all possible operation combinations, which significantly improves the efficiency of the proposed framework.

Chapter 4

Experimental Results for Maximizing FIB Observable Rate

The experiments in this chapter are conducted based on the same UMC 90nm 9-metal process technology and the same benchmark circuits as used in Table 2.1.

The initial layout of each circuit is generated by a commercial APR tool, SoC Encounter [17]. Also, we ignore the observation for clock, reset, or scan enable when applying the framework.

4.1 Before and After Applying MFOB

Table 4.1 reports the FIB observable rate based on a 1000nm minimum suf-ficient width of the baseline window and a 1-to-10 edge slope of an FIB hole. The cell-utilization rate is set to 80% to generate the initial layout with SoC Encounter.

Also, dynamic ranking is used in MFOB to determine the order of nets for layout adjustment. In Table 4.1, Column 1 and 2 list the circuit name and its total number of nets, respectively. Column 3 and 4 list the FIB observable rate before and after applying our proposed framework MFOB, respectively. Their difference is listed on Column 5. As the result shows, our proposed framework MFOB can successfully increase the FIB observable rate from 29.50% to 61.67% in average by properly adjusting the initial layout. The improvement in FIB observable rate ranges from 28.85% to 36.34% for different circuits. Note that this average 61.67% of the FIB

19

20 observable rate already exceeds the average FIB observable rate of the benchmark circuits implemented by a 0.18µm process (57.82%) with the same cell utilization rate and FIB technology as shown in Table 2.1.

Table 4.1: Result of applying MFOB.

FIB observable rate (%)

circuit total initial MFOB diff. upper runtime nets (a) (b) (b) - (a) bound (sec) s38417 9296 36.57 69.86 33.30 71.72 52 s38584 5711 28.62 64.96 36.34 67.17 38 s35932 5912 50.84 83.12 32.28 83.85 27

b17 16826 17.86 46.71 28.85 48.90 290

b20 7183 25.62 57.48 31.87 59.36 49

b21 6448 23.47 54.12 30.65 56.54 80

b22 9432 23.56 55.45 31.89 57.96 94

avg. - 29.50 61.67 32.17 63.64

-Column 6 of Table 4.1 lists the upper bound of the observable rate by using MFOB, which is actually the percentage of potentially observable nets estimated based on the initial layout. This upper bound can only be achieved when the layout adjustment for all the potentially observable nets will not interfere with one another, which is not the case in practice. Hence, the true maximum observable rate that can be achieved is limited by the listed upper bound. As Table 4.1 reports, the difference between the observable rate of MFOB and the corresponding upper bound is 1.97%

in average, showing that the observable rate achieved by MFOB is already not far away from the true maximum value. Column 7 of Table 4.1 lists the runtime of MFOB in seconds. The longest runtime is 290 seconds for a circuit with more than 16K nets.

21

4.2 Different Ranking Criteria

In the proposed ranking method for determining the order of nets to be processed, we use the less moving candidates first as the primary criterion and the lower moving cost first as the secondary criterion. Table 4.2 compares the proposed ranking scheme with three different ranking scheme, named as R1, R2, and R3.

R1 uses the more moving candidates first as the primary criterion and the lower

R1 uses the more moving candidates first as the primary criterion and the lower

相關文件