Abstract:
The current invention considers automatic synthesis of segmented channel architecture of row-based FPGAs so as to achieve maximum routability and performance. The routability of a channel and the performance of the routed nets may have conflicting requirements. For a given number of tracks, very short segments usually enhance routability at the expense of performance. For such a granular segmented channel architecture routing of long nets may require that several short segments be joined together by programming horizontal antifuses. Depending on the antifuse technology, the programmed antifuses can add considerably to the path delays. A simulated annealing based channel architecture synthesis algorithm has been developed which enhances routability and performance. The synthesis algorithm is based on the fact that a strong correlation between the spatial distribution of nets and segments in a channel improves both routability and performance.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to the automatic synthesis of a segmented channel architecture for row-based field programmable gate arrays (FPGAs) and more particularly relates to the use of a simulated annealing based channel architecture synthesis algorithm which has been developed to achieve maximum routability and performance of a channel architecture for various FPGA designs. 
     2. Description of the Prior Art 
     Field Programmable Gate Arrays (FPGAs) combine the flexibility of mask programmable gate arrays with the convenience of field programmability. We consider row-based architecture for FPGAs as shown in FIG. 1. Rows of logic modules are separated by channels which are used for the routing of the nets. Only 2 rows (row1 and row2) of logic modules, with each row having three logic modules (LM1-LM6), are shown in FIG. 1. The two rows are shown separated by a single channel having three horizontal tracks T1-T3. However, typical FPGAs may have 20 rows of logic modules with 44 logic modules in each row. Each logic module can implement various types of logic functions and each logic module can be connected to any other logic module through pins on the logic modules as is well known. The routing resources are limited as there are a fixed number of horizontal routing tracks hardwired in each channel. The routing tracks are also segmented. For example, FIG. 1 has 3 tracks per channel of which the topmost track T1 is divided into two segments sa and sb separated by a horizontal antifuse HA1. In the unprogrammed state the antifuse HA1 offers a very high resistance, and hence, there is no electrical connection between the segments sa and sb. A low resistance electrical connection between the segments sa and sb can be established by programming the antifuse HA1. Dedicated vertical lines VA through each input and output pin of a logic module connect the pins to the routing tracks T1-T3. Vertical feedthroughs pass through the modules, serving as links between channels. There is a cross antifuse CA located at the crossing of each horizontal and vertical segment. Programming these antifuses produces a bi-directional connection between the horizontal and vertical segments. Let us again consider FIG. 1. The net names are shown at its constituent pins&#39; locations. There are three available choices for routing net 1-segments sa and sb (requires programming of an antifuse HA1 between segments sa and sb, and two cross antifuses CA1 and CA2); segment sc (requires programming two cross antifuses CA3 and CA4); or segments sd and se (requires programming of a horizontal antifuse HA2 between segments sc and sd, and two cross antifuses CA5 and CA6). Once net 1 is assigned to one or more segments, those segment(s) are unavailable for further usage by any other net. 
     The routing resources are fixed, and hence, the channel segmentation scheme has an enormous effect on performance and routability of a channel. Efficient usage of horizontal antifuses is required for routability and for meeting the critical path delay (performance) requirements. Intuitively, a strong correlation between the segment length and the net length distributions within a channel is very desirable. However, the mere existence of a unique segment of acceptable length for every net in a channel does not guarantee 100% routability. This is due to the fact that an additional factor, the location of a segment with respect to a net span in a channel is also important in determining whether that segment can be used for routing that net. It is imperative, therefore, to consider the spatial distributions for segments and nets when developing a particular channel architecture. Once a channel architecture is developed for a particular FPGA net design, it may be desirable that the particular channel architecture also be useful for various other net designs. This is especially so, due to the reprogrammable nature of current FPGA&#39;s. Prior art FPGA channel architecture was developed with a sort of hit or miss approach with a desire toward selecting a random distribution of channel segmentation. 
     It is therefore a general object of the present invention to develope a channel segmentation architecture for row-based FPGA&#39;s which provides for good routability and performance over a large set of FPGA net designs. 
     It is further object of the present invention to develope a channel segmentation architecture for row-based FPGA&#39;s which maximizes the correlation between the spatial distribution of segments of the channel architecture and the nets over a large set of FPGA net designs. 
     It is a further object of the present invention to route the nets of a particular FPGA design with maximum performance and routability, once a particular channel segmentation architecture has been developed. 
     These and other objects of the invention will become apparent to those of ordinary skill in the art having reference to the following specification, in conjunction with the drawings. 
     SUMMARY OF THE INVENTION 
     A simulated annealing based channel architecture synthesis procedure has been developed, which attempts to maximize the correlation between the spatial distribution of segments and nets. A set of benchmark net distributions were obtained from Texas Instruments&#39; gate array designs. The optimization procedure can be also used to produce channel architectures for net length distributions in functional forms. 
     The routability of a channel and the performance of the routed nets may have conflicting requirements. 
     For a given number of tracks, very short segments usually enhance routability at the expense of performance. For such a granular segmented channel architecture routing of long nets may require that several short segments be joined together by programming horizontal antifuses. Depending on the antifuse technology, the programmed antifuses can add considerably to the path delays. A simulated annealing based channel architecture synthesis algorithm has been developed which enhances routability and performance. The synthesis algorithm is based on the fact that a strong correlation between the spatial distribution of nets and segments in a channel improves both routability and performance. Excellent results have been obtained for a set of benchmark examples and industrial designs. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a standard configuration for a prior art row-based FPGA architecture; 
     FIG. 2 is an illustration of the division of a row-based FPGA architecture separated into 6 zones, wherein each zone is one logic module in width; 
     FIGS. 3(a-c) illustrates successive steps in the architecture synthesis methodology of the preferred embodiment; and 
     FIG. 4 illustrates the segment length distribution for the Simulated Annealing based Segmentation (SAS) scheme of the preferred embodiment. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The following description is organized as follows. Section 2 describes the basis of antifuse programming and then describes segmented channel routing based on constraints derived from antifuse programming. The channel segmentation scheme of the preferred embodiment is described in Section 3. Section 4 discusses experiments performed and gives the experimental results. Finally, the conclusions are given in Section 5. 
     2 Preliminaries and Definitions 
     Routability of FPGAs requires the presence of a large number of cross antifuses and horizontal antifuses in channel. An antifuse requires multiple programming pulses to successfully form an electrical connection between logic modules or segments. Depending on the circuit size and device types, 3,000 to 20,000 antifuses are topically programmed. Cross antifuse programming introduces certain routing constraints which influence channel architecture synthesis. The following section details the cross antifuse programming methodology. 
     2.1 Cross Antifuse Programming 
     Each cross antifuse in a channel can be individually addressed for programmation. Let us consider cross antifuse CA5 of FIG. 1. Programming cross antifuse CA5 requires charging the vertical line crossing this antifuse to a voltage VPP and the segment sd, crossing antifuse CA5 horizontally, to GND(0 V). Voltage VPP is determined by the antifuse technology under consideration. A voltage stress of VPP across the antifuse for a certain period of time creates a low resistance (technology dependent) connection between the vertical line and the horizontal segment. All other vertical and horizontal lines are charged to a voltage of VPP/2. It can be noted that the other unprogrammed cross antifuses experience a voltage stress of 0 volts or VPP/2 volts, and hence remain unprogrammed. 
     2.2 Channel Routing 
     The channel routing problem is formulated as an assignment problem where each net within a channel is assigned to one or more unassigned segments. Each net is allowed to use at most one track due to a technology constraint which does not allow programming of antifuses connected in an L-shaped fashion. For a discussion of this technology constraint see &#34;An Architecture for Electrically Configurable GAte Array&#34;, IEEE Journal of Solid State Circuits, Vol. 24, No. 2, pp 394-398, April 1989, by A. E. Gammal et al. The programming of such antifuses can lead to programming two antifuses at the same time which can degrade the performance of the programmed antifuses. Let us consider net 3 (N3) of FIG. 1. If the net were routed by programming cross antifuses CA7, CA8, CA9, and CA10 (using 2 tracks) then cross antifuses CA7, CA8, and CA9 form an &#34;L&#34;. After programming any two of the antifuses forming the &#34;L&#34;, and while trying to program the third one using the technique described in Section 2.1, antifuse CA11 also gets programmed at the same time. The electrical connection due to the programmation of antifuse CA11 does not logically affect routing. However, whenever two or more antifuses get programmed simultaneously using the same programming pulse, the reliability of the connections thus produced may not be very predictable. 
     The cost of routing is determined by the number of segments used by the critical nets (What do you mean by critical nets?) in a channel, and the length of the segments assigned to different nets. The number (H x ) of horizontal antifuses to be programmed is equal to the number of segments assigned to the corresponding net (x) minus one. Note that the number of cross antifuses (cfuses) is not considered during routing. Depending on the technology, the resistance and the capacitance associated with programmed horizontal antifuses (hfuses) can be detrimentally high. If a net x of Length L x  is routed with p(1≦p≦K, maximum of K segments allowed) segments, each of length L j  (j=1, . . . p) , then ##EQU1## gives a measure of the wasted or excess segment(s) length. For K-segment routing, in which a maximum of K segments can be used by each net, we define the cost C of routing a net x as ##EQU2## where α and β are penalties for segment length wastage and horizontal antifuse usage, respectively, and are both positive and less than 1. The weights w 1 , w 2  assigned to the wastage factor, and the antifuse usage factor respectively, are determined by the technology under consideration. For example, the metal-metal horizontal antifuse as described in a paper titled &#34;A Very High Speed Field Programmable Gate Array Using Metal to Metal Antifuse Programming Elements&#34;, IEEE Custom Integrated Circuits Conference, pp 1.7.1-1.7.6, May 1991 by J. Birkner et al., has a much lower programmed resistance than a programmed poly-poly antifuse, and hence, w 2  for the latter technology should be higher than the metal-metal antifuse technology. If you are using ONO anti-fuse technology then the resistance is approximately 400 ohms. In this case you don&#39;t want to use too many horizontal antifuses because of the high resistance. It was experimentally determined that a weight of 2 for w 1  and a wieght of 7 for w 2  give a good correlation between the segments and nets to be routed. A ratio of approximately 3 to 1 for w 2  /w 1  is desireable for the weights. The total cost of routing all the nets in a channel is Σ p , C p , 0&lt;p≦V, where V is the total number of nets in a channel. 
     A paper by Green et. al. entitled &#34;Segmented Channel Routing&#34;, Design Automation Conference, pp. 567-572, 1990, has shown that K-segment (K&gt;1) channel routing problem is NP(non-deterministic polynomial)-complete. For K-segment routing each net is allowed a maximum of K adjacent segments (on the same track) for routing. However, for purposes of this invention, we use a fast 1-segment routing scheme which can be efficiently used to optimize the channel architecture. The nets are ordered in decreasing order of length while the segments are ordered in increasing order of length. The nets are assigned to the first available segment(s) in that order. Once a net is assigned to a segment, the corresponding segment is made unavailable for further routing of any other net. It can be observed that the first segment that can be assigned to the net is the best match in terms of segment length wastage. If there are m nets in a channel consisting of n track segments, then the worst case routing complexity is O(mn) with the above ordering scheme. It takes O(m log(m)) and O(n log(n) time to sort the nets and the segments, respectively. Use of the 1-segment routing to determine a cost of routing a particular architecture will be further described in section 3.3 dealing with the synthesis technique of the preferred embodiment. 
     3 Channel Architecture Synthesis 
     Given a channel architecture, the routability and the performance are solely dependent on the net length distribution and the location of the nets across the channels. Hence, to come up with a good segmentation scheme we consider the net length and their spatial distributions across the channels for a wide range of gate-array examples. The distributions were obtained from a set of gate-array benchmark designs with a given channel length of 44 logic modules. Of course this invention is not limited to developing channel architectures for gate array designs having only 44 logic modules in a row. 
     3.1 Routability and Routing delay 
     It can be observed from FIG. 1 that if the routing tracks T1, T2, and T3 are finely segmented, routability is enhanced. However, for routing the longer or more critical nets, a larger number of horizontal antifuses will probably be required. The resistance and capacity of the programmed antifuses can be detrimentally high for some of the critical nets. If all the track segments are long, routability decreases because of the decrease in the number of available segments for routing. Hence, a judicious mixture of long and short segments are required to get the best performance routability from the architecture. 
     The net length distributions across a channel is given by the number (n j ) of nets of length (l j ) present in the given channel. Lengths are quantized to the logic module width (shown in FIG. 1), which is the minimum segment length in our case. Given a set of p net length distributions D i , O&gt;i≦p, (each consisting of a set of nets N i ), the total length of nets for each distribution D i  is given by L i  =Σ j  n j  l j . Let the given channel have a set of segments S, where the total length of the segments is given by T. Lemma 1: The necessary condition for routing the sets of nets N i  forming distribution D i  is : T≧max{L i , ∀i}. Proof: In order to route all the nets, the total segment length (T) within a channel (to which the nets are assigned) should be at least the total length (L i ) of the set of nets N i , and hence the result. The area under the segment length distribution curve for a channel should be at least equal to the largest area under any one of the p net length distribution curve for the channel. 
     3.2 Net-Segment Correlation 
     For best performance and routability, the segment length distribution and the segments&#39; spatial location within the channel should very closely follow the net length and their spatial distributions. We determine the correlation between the net and segment distributions within a channel in terms of 1-segment routing and the segment wastage factor as described in Section 2. 
     To solve the segmentation problem efficiently, the channel is divided into q equal zones by imaginary vertical lines, the minimum zone length being equal to the length of a logic module. Let us consider FIG. 2 as an example. There are 6 zones, zone 1  through zone 6  in the Figure. A minimum segment length of one logic module width is used in all discussions. The track segments are ordered in terms of increasing length. This is done so that the longest segments can be assigned to the shortest possible segments by going through the list of tracks. 
     Each segment s carries information on its spatial location within the channel--the left most (s l ) and the right most (s r ) zones that the segment spans across. For example, for segment c in FIG. 2, c 1  =1 and c r  =3, whereas, for segment f, f1=1 and fr=1. A channel is divided into M zones, where M is the number of logic modules per row of channel. A net n ε N i  whose left most and right most zones are given by n l  and n r  is 1-segment routable if there exists an unassigned segment g ε S a , (the set of available segments) such that 
     
         g.sub.l ≦n.sub.l and g.sub.r ≧n.sub.r        (1) 
    
     The set of unavailable segments (already assigned to some nets) is given by S u  =(S-S a ), where S is the total of all available and unavailable segments. Once such an assignment is made, segment g is made unavailable for the routing of any other net. If it is possible to find such assignments for all the nets in a channel, the set of nets are said to be 1-segment routable with respect to that segmentation scheme. Let us consider net 1 of FIG. 1, where M=6, net1 l  =1 and net1 r  =3. To start with, all the segments in the channel belong to set S a , and S u  is empty. Condition (1) is satisfied for net 1 with respect to segment c. As c ε S a , net 1 can be assigned to segment c, and hence is 1-segment routable. Segment c is made unavailable for any other net by moving segment c from set S a  to set S u  (c S a , c ε S u ). However, there are no segments in set S a  which satisfies condition (1) for net 2 after net 1 is routed with segment c, making net 2 unroutable if net 2 were routed first using segment c. 
     The nets are ordered in terms of decreasing length and the longest net is routed first. The segments within a channel are ordered in terms of increasing length. The list of ordered segments are searched to assign a net to a proper segment. The search can stop as soon as a possible assignment is obtained, which satisfies condition (1). If net n is assigned to segment g then the segment wastage factor is given by ##EQU3## (gr-gl) and (nr-nl) respectively denote segment length and net length in terms of the number of zones they span across. Routing produces a set of 1-segment routable nets N ir  and a set of 1-segment unroutable nets N iu . For 1-segment routable channels, N iu  is empty. However the given set of nets N i  are possible K-segment routing, the set of 1-segment unroutable net N iu  (after initial 1-segment routing) and the given channel are considered. Obviously, condition (1) cannot be satisfied for any net n ε N iu  with any segment g ε S a . The maximum x-coordinate overlap, θ ng  of a net n ε N iu  with any segment g ε S a , can be used as a heuristic measure of K-segment routability of net n. The larger the value of θ ng , the larger is the measure of K-segment routability. Segment g is moved from set S a  to the S u  after such an overlap is established. Let us again consider the nets and the channel of FIG. 2. After routing net 1, net 2 is not 1-segment routable, and hence is a member of set N iu . However, net 2 has a large overlap (θ 2a  =2, where 2 zones is the length of the overlap between segment a and net 2) with unassigned segment a. Though condition (a) is not satisfied with respect to segment a, net 2 can be routed using 2 segments--a and b. 
     It can be observed that exact K-segment routability could have been used as a measure of correlation between S and N i . However, that would be very CPU time intensive. We obtained good results using 1-segment routability and segment wastage as the measure of correlation. 
     3.3 Synthesis Technique 
     A simulated annealing based channel segmentation synthesis methodology has been developed which tries to optimize the horizontal antifuse usage and segment wastage for different net distributions. This technique is discussed in a paper entitled &#34;Optimization by Simulated Annealing&#34;, Science, Vol. 220, N. 4598, pp. 671-680, May, 1983 by S. Kirkpatrick et al. The current invention uses net distributions from a large set of gate array benchmark designs to optimize our channel segmentation architecture. The routing cost for channel i, having the set of nets N 1 , and a set S of already laid out segments is given by ##EQU4## where, |N iu  | represents the cardinality of set N iu  and is equal to the number of unroutable nets in channel i. The first term in the equation corresponds to the number of 1-segment unroutable nets, the next term is due to the segment wastage factor, while the last term corresponds to percentage segment overlap for the unroutable nets. Let us again consider FIG. 2. For the 1-segment unroutable net N2, the percentage segment overlap with an unassigned segment a is 2/3(θ 2a  =2 and (net2 r  -net2 l )=3) while the percentage segment overlap with segment sf is 1/3(θ 2f  =1 and (net2 r  -net2 1 )=3. v r , v w , and v o  are the weights associated with the corresponding factors. The routability weight v r  is much higher than v w , or v o  as it relates to both routability and performance. The 1-segment routable nets with low segment for routing due to the presence of programmed horizontal antifuse(s). The weight v o  associated with the overlap factor is a small negative number. For unroutable nets we consider a larger overlap to be better-- the net has a higher probability of getting routed using two or more segments. It was experimentally determined that the weight v r  is approximately 100-200, the weight v w  is approximately 5-10 and the weight v o  is approximately -(1-2). For p different channels (p sets of nets, N i , N 2 , . . . N p ), the total cost of routing, C, using the same set of segments S is given by ##EQU5## The usage of 1-segment routability and the overlap factor represents a novel way of efficiently determining the K-segment routability of a segmented channel architecture. 
     Due to the complex nature of the cost function, simulated annealing was used. Annealing starts by assigning an arbitrary segmentation for a channel of given width and a given number of tracks. Care should be taken to ensure that the segments exactly fit each track and there are no empty spaces on the tracks. Either one of two moves is allowed in annealing--merging of two adjacent segments in a track or breaking of a segment within a track into two segments such that the broken segments add up to the original segment length. The segments are randomly picked for either merging or breaking. Merges or breaks are also determined randomly. It is not possible to break a segment of length equal to the width of a single logic module. After each move the cost C i  is calculated for each of the sets of net distributions, N i , . . . N p . If C is accepted with a probability ##EQU6## where |δ(C)| is the absolute value of the change in cost C and Temp is the annealing temperature. At a higher temperature a higher cost move is accepted with a higher probability than at a lower temperature. This helps the optimization technique to move out of local minimas of the cost function. The cooling schedule used is the same as the one proposed in a paper titled &#34;An Efficient General Cooling Schedule for Simulated Annealing&#34;, Intl. Conf. on Computer-Aided Design, pp. 381-384, 1986, by M. Huang et al. 
     Let us consider a simple example to illustrate the architecture synthesis methodology. FIG. 3(a) shows an initial channel segmentation. There are three routing tracks T1, T2, and T3 having uniform segmentation, each segment having a length of two logic modules. The channel is divided into six equal zones. Two net distributions, N (only two nets) and N&#39; (only three nets) are also shown in the figure. The pin numbers with primes correspond to the distribution belonging to N&#39;. It can be observed that for such a segmentation, net 2 of distribution N can be assigned to segment sc (or sf, or sk having same cost), while net 2&#39; of distribution N&#39; can be assigned to segment se (or sb, or sh having same cost). However, all the other nets are not 1-segment routable. If we assume that v w  =100, v w  =2, and v o  =0, then the cost of routing using Eqn (2) and (3) is given by: 
     
         C.sub.N =100*2+2*0=200 
    
     
         C.sub.N&#39; =100*1+2*0=100 
    
     Hence, the total cost after the first iteration is 
     
         C.sub.1 =C.sub.N +C.sub.N&#39; =300 
    
     Now the algorithm can randomly pick a segment (say sb) and merge it with segment sa (FIG. 3(b)). For such a move, the change in cost is calculated. Net 1&#39; can now be assigned to segment sb, and net 2&#39; to segment se, making distribution N&#39; 1-segment routable. For distribution N, net 2 and 3 are assigned to segments sc and sb respectively. Note that net 1&#39; is also assigned to segment sb. That is allowed because the nets belong to different distributions, i.e. the distributions N and N&#39; do not share the segmentation at the same time. The portion of segment wasted when net 1&#39; of length 3 zones is assigned to segment sb of length 4 zones is ##EQU7## It can be observed that for all the other routed nets, the segment wastage factor is 0 (this of course does not include the wastage due to segment quantization). The nets assigned to the segments are also shown in the Figure on the top of each segment. Net 1 of distribution N is 1-segment unroutable. Hence, the new cost of routing is given by: ##EQU8## The total cost after the second iteration is 
     
         C.sub.2 =C.sub.N +C.sub.N&#39; =100.5 
    
     The change of cost (delta C)=C 1  -C 2  =199.5, and hence the move of merging sb and sa together is accepted. After a few iterations, the synthesis algorithm came up with an architecture shown in FIG. 3(c), which indeed produces the lowest cost of routing: ##EQU9## and hence, 
     
         C=C.sub.N +C.sub.N&#39; =0.5 
    
     In general, it can take several iterations--in the thousands --to arrive at a minimum cost. The idea is to come up with a cost which is some acceptable minimum. However, this cost is not known at the start of the algorithm. 
     4 Implementation and Results 
     The synthesis procedure based on simulated annealing has been implemented in C on an Apollo 425 workstation. The set of net distributions in different channels for our experiments were obtained from a set of gate array benchmark designs of Texas Instruments. Uniform segmentation was used as an initial state for simulated annealing where each segment was of length 2 logic modules. For all our experiments a track length of 44 logic modules have been used. Hence, there were 44 zones. The channel architecture obtained using our synthesis procedure was compared with existing industrial segmentation schemes having 12 or 22 tracks. The FPGA template (only the number of rows) were varied to fit different designs. Each of the channels had identical segmentation. The segmentations were also compared with a uniform channel segmentation scheme with 2 logic module long segments. The latter channel architecture is very good for routability. However, routing requires programming a large number of horizontal antifuses which degrades performance. 
     A segmented channel router [6] developed at Texas Instruments was used for evaluating the segmented channel architectures. The channel router uses the cost C x  described in equation 2 to assign a set of nets to one or more segments (K-segment routing). Weights of w 1  =1 and w 2  =20 were used. Therefore, there was a heavy penalty placed on the usage of antifuses. 
     Table 1 shows the details of the results obtained for an industry design example f104667. The first two columns show the channel number and the number of nets in each channel. The number of horizontal antifuses programmed, the number of unroutable nets in each channel, and the percentage segment wastage for our Simulated Annealing based Segmentation (SAS) scheme are compared with an existing industrial segmentation scheme (I) with 12 tracks. The results were also compared with a uniform segmentation scheme (U) having each segment of length two logic modules. Five of the nine channels were not routable with architecture I. Architecture I is the TPC1010 architecture of Texas Instruments. The SAS scheme completely routed all the channels and used lesser number of horizontal antifuses. Uniform segmentation used lot of horizontal 
     
                       TABLE 1______________________________________Results for f104667 with 12 trackschan-        Hfuses     Unrouted nets                             Seg. wastage (%)nel   nets   SAS    I   U   SAS  I    U   SAS  I    U______________________________________1     23     0      0   29  0    0    0   56.1 54.2 33.02     31     0      1   57  0    1    0   55.3 --   28.93     50     1      0   78  0    2    0   54.6 --   31.94     55     0      5   74  0    6    0   55.0 --   31.55     66     0      2   75  0    11   0   61.5 --   34.76     61     0      1   55  0    9    0   67.8 --   36.47     40     0      0   64  0    0    0   55.4 64.6 30.48     40     0      0   47  0    0    0   62.0 71.7 34.49     19     0      0   24  0    0    0   57.1 56.0 38.1______________________________________ 
    
     antifuses due to its granular segmentation architecture. However, as expected, segment wastage was considerably lower for the U scheme than the other two architectures. Percentage segment wastage in the last column was calculated using actual net and segment lengths. A `-` appears in the percentage segment wastage column whenever there were unroutable nets in a channel. 
     Table 2 summarizes the statistics of some other examples and shows the routing results on a channel with uniform segmentation (U), each segment having a length of 2 logic modules. This table can be used for comparing the results obtained using SAS. Twentytwo routing tracks were used. The total number of channels for each example and the total number of nets in all the channels are shown in columns 2 and 3, respectively. The average net density over all the channels is shown next. Net density of a channel is defined as the maximum number of nets crossing any imaginary vertical line through the channel and is a measure of the number of tracks required for unsegmented routing as in gate arrays. A large number of antifuses wee used because of the very granular segmented channel. Percentage segment wastage in the last column represents the average over all the channels for the example under consideration and can be compared to Table 3 shown below. Again due to the fine granularity of the architecture, segment wastage is low. Such an architecture is good for routability, and hence, there were no unroutable nets. It must be noted that the number of hfuses used and the percentage segment wastage are excellent measures for both performance and routability. 
     
                                           TABLE 2__________________________________________________________________________Results of routing on channels having uniformsegmentation, each segment of length 2 logic module widthNumber of      Total number             Average netExamplechannels      nets   density                    Hfuses                         Seg. wastage (%)__________________________________________________________________________f10478019    1074   12.1   2713 31.8f10424314     770    9.3   1452 32.4cf92382a19    1174    8.7   1656  39.44f10391819    1136   11.3   2540 28.4duke2 8     496   13.9   1408 26.7bw3   8     317    6.9    406 27.9__________________________________________________________________________ 
    
     
                       TABLE 3______________________________________Results of routing on SAS architecture                Unrouted      Seg.   Hfuses       nets          wastage (%)Example   SAS    I       SAS  I      SAS  I______________________________________f104780   44     56      0    6      44.5 45.9f104243    0      1      0    0      44.0 44.8cf92382a   0      0      0    0      48.9 52.0f103918   15     20      0    0      43.3 43.5duke2     11     12      0    0      43.2 44.9bw3       36     44      0    13     52.0 45.6______________________________________ 
    
     Table 3 summarizes the results of routing on the SAS architecture of the preferred embodiment using the industrial and MCNC benchmark designs of Table 2. Twentytwo routing tracks were used. The results were compared with architecture I. Architecture SAS produced better results in terms of channel routability and percentage segment wastage. For example bw3, there were 13 unroutable nets. However, architecture SAS could route all the nets. The unroutable channels were not considered in segment wastage calculation. The lower percentage segment wastage for I for example bw3 may be attributed to the unroutable nets. For smaller examples both architectures produced comparable results. 
     FIG. 4 shows the statistics of SAS architecture. The x-axis represents the segment length in units of logic module width and the y-axis represents the number of segments of any particular length present in the channel. The synthesis program to generate this channel architecture with 22 tracks took about 7 hours of CPU time on an Apollo 425 workstation. 
     It should be noted that architectures are generated once, and hence, a large CPU time can be justified. The segment length distribution closely follows the benchmark net length distributions used to generate the channel. There are a number of small segments and a few large segments distributed across the channel of length 44 logic modules wide. 
     5 Conclusions 
     A routability and performance driven channel segmentation synthesis scheme for FPGAs has been proposed. The segmentation scheme is based on a large set of net distributions from a set of gate array benchmark designs with fixed channel length. The performance and routability of a channel are heavily dependent on the segmentation scheme and the distribution of nets within the channel. The correlation between the set of nets and the segments is determined using 1-segment routing, percentage of segment wastage, and the overlap factor--a higher correlation corresponds to a lower number of unroutable nets and lower segment wastage. Excellent results have been obtained for a set of benchmark examples and industrial designs. Our scheme can be easily extended at the expense of more computer time to include exact K-segment routing cost for simulated annealing. Though simulated annealing is computation intensive, it can certainly be used for architecture development. Architectures have to be optimized only once, and hence, we can afford to spend more computer time. 
     While the invention has been shown and described with respect to particular embodiments, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention.