TIMING DRIVEN METHOD FOR LAYING OUT A USER'S CIRCUIT ONTO A PROGRAMMABLE INTEGRATED CIRCUIT DEVICE

Abstract: The present invention provides suggested delay limits for use by layout tools which cause a programmable integrated circuit device to implement a logic design. The suggested delay limits can be used by such tools as an initial placement algorithm, a placement improvement algorithm, and a routing algorithm for evaluating and guiding potential layouts. The suggested delay limits take into account characteristics of the programmable device being used by estimating lower bound delays for each connection in a logic design, and take into account any previously achieved delays or achievable delays for each connection in calculating the suggested limits. Results of routing benchmark designs using the novel suggested limits show improved timing performance for all benchmark cases tested.

Description: TIMING DRIVEN METHOD FOR LAYING OUT A USER'S CIRCUIT ONTO A PROGRAMMABLE INTEGRATED CIRCUIT DEVICE FIELD OF THE INVENTION The present invention relates to converting a circuit design into a physical integrated circuit structure which implements the design. More particularly, the invention relates to laying out the design onto the physical structure so that the layout meets timing requirements specified by a user. BACKGROUND Programmable logic devices are available for implementing any of a wide variety of logic designs. The user designs a logic circuit, and uses software to direct a computer to program a logic device or to design a set of masks to implement the desired logic design. Timing of signals passed between parts of the logic device depends in part upon placement of the user's circuit elements into transistor groups in the physical structure and the resultant arrangement of the metal wires. In general, longer wires mean longer delays, the actual timing depending upon capacitances, resistances, and the number of logic elements a signal must traverse. As transistors have become faster, a larger percentage of the delay in passing a signal through the device is contributed by the wiring. Therefore it has become a worthwhile effort to select wiring segments carefully to minimize the delay caused by these wiring segments. Logic devices which can be programmed using the method of the present invention include both mask and field programmable devices. Mask programmable devices are programmed at the factory when the device is being manufactured, and field programmable devices are programmed by the user after purchasing the completed device. Mask programmable devices include gate array structures which have an array of transistor groups formed in the substrate of an integrated circuit, and typically a layer of control gates formed in a layer above the substrate. Above these standard layers are formed personality layers, usually two or three layers of metallization, which interconnect the transistors to create a circuit desired by a customer. Field programmable devices include programmable logic array (PLA) devices and field programmable gate array (FPGA) devices. PLA devices generally comprise an array of AND gates which provides input to an array of OR gates, and thereby implement logic which is stated as a sum of products. FPGA devices include a plurality of logic blocks or modules connected together by programmable interconnect lines. The programmable blocks can be programmed to implement multiple functions, and the programmable interconnect can be connected together in a wide variety of ways to produce an overall structure which implements the user's design. The detailed description below uses an FPGA in its description; therefore, an FPGA structure will be described in more detail here. FPGA Structure Fig. 1 represents a typical island-type field programmable gate array (FPGA) structure. A plurality of configurable logic blocks (CLBs) implement functions selected by a user and must be interconnected to perform an overall function desired by the user. The CLBs of Fig. 1 are shown as having one connecting lead extending in each direction north, south, east, and west from the CLB. There are typically more leads than this in an actual circuit but the figure is representative of the FPGA architecture. Wire segments are provided in the chip for interconnecting these CLBs. The CLB leads may be programmably connected to the wire segments, for example by pass transistors or antifuses. In a mask programmed alternative, the leads and wire segments may be interconnected by opening vias between metal layers. Also present in the FPGA are switch boxes SBX which selectively interconnect the wire segments to each other at nodes. These switch boxes may offer a variety of internal interconnections between the wire segments which connect to the node. Two examples follow. The makeup of an SBX may be as shown in Fig. 2A, in which each wire W1-W6 extending from the west is connectable to one wire N1-N6, E1-E6 and S1-S6 from each of the north, east, and south. Connections are made through diamond connectors Dl through D6. In a transistor embodiment the diamond connectors are as shown in Fig. 2B, with six transistors selectively connecting the wires N, E, S, and W together. Such an architecture allows a connection to be formed between any CLB lead and any other CLB lead, though it does not allow for "lane changes", for example allowing a signal placed on segment Wl of Fig. 2B to be connected to segment N2. A more flexible switching architecture is illustrated in Fig. 3. For simplicity, in Fig. 3, only interconnections from west wire segments are illustrated. It can be seen that west wire Wl can be connected to any of north wires Nl and N2, east wires El and E2, and south wires SI and S2. West wire W3 can also be connected to north wires Nl and N2, east wires El and E2, and south wires SI and S2. West wire W2 can be connected to north wires N2 and N3, east wires El, E2, and E3, and south wires S2 and S3. Typically, the same choices are provided for each of the other three directions, but for simplicity are not illustrated. Three types of wire segments are shown in Fig. 1. Wire segment SL is a short segment extending between two switch boxes SBX. Double length wire segment DL extends the distance of two short segments. Wire segment LL is a long line and extends the entire length of the FPGA device, or sometimes half this length. These different length segments are intended for different purposes. The long segments are useful for wide fanout signals such as clock signals, while the double and single length segments are best for local routing. The time delay experienced by a signal routed from one CLB to another will depend upon the kinds of wire segments used and the number of nodes traversed. Definitions In a logic design, a conductive route from one source logic block or register to one destination logic block or register is called a connection. Frequently a signal generated at one source must be sent to several destinations. The collection of routes from one source to all destinations is called a net. In the hardware which implements the logic design, a single piece of wire which makes up one part of a connection or net is called a segment. One segment can be interconnected to another at a node. Typically, a wire segment may be interconnected to any of several other wire segments at a node. A path is the set of connections and combinational logic blocks which extend from one package pin or clocked register to another package pin or clocked register. Motivation to Include Interconnect Wiring in Timing Analysis If segments are connected at nodes by turning on transistors, the connection will comprise both wire segments and transistors. Since transistors still have finite resistance in their on states, the connection will impose a finite RC delay on the signal path. Further, as feature size decreases, the fraction of delay due to wiring increases. Connection delays have become a significant part of the total delay for transistor connected devices. Even for hard-wired ASIC devices, as feature size has become smaller, wiring has begun to contribute a major part to total delay of signals. In the past, for example when configuring a sea-of-gates ASIC device, most research focused on optimizing placement because this had the most effect on timing. In devices such as FPGAs a variety of routing resources have a variety of time delay characteristics. Therefore routing as well as placement can significantly affect timing of the configured logic device. Laving Out a Design Onto an Integrated Circuit Logic Device The software for laying out a user's logic design onto a logic device performs a sequence of steps to convert the user's logic design into a set of commands for programming the hardware to implement the design. Typically these steps include: 1) Design Entry: Either schematic capture of a graphical display of the user's circuit, or the reading of a hardware description language which describes functions to be performed and connections between the functions. Design entry sometimes includes reading a list of states and transitions between states which are to be implemented. 2) Functional Verification and Logic Synthesis: Functional verification comprises checking to see if the user's design makes logical sense (avoids connecting outputs together, for example) . Logic synthesis includes logic optimization, which involves rewriting the information entered during design entry to simplify expressions, reduce the number of terms in an equation, reduce the area needed to implement the design or otherwise optimize the user's design. 3) Mapping: Mapping involves grouping the user's logic gates into units each of which can be implemented by a corresponding unit of the logic device (for example, by a Xilinx FPGA function generator) . 4) Initial Placement: The units of the logic design are divided into portions each of which is assigned to a particular unit of the logic device (for example a Xilinx FPGA logic block) . This step may use a min-cut algorithm such as described in a paper by B. W. Kernighan and S. Lin entitled "An Efficient Heuristic Procedure for Partitioning Graphs" published in the Bell System Technical Journal, February 1970 at pages 291-307, or a spring relaxation algorithm such as described in a paper by Neil R. Quinn, Jr., and Melvin A. Breuer entitled "A Force Directed Component Placement Procedure for Printed Circuit Boards" published in the IEEE Transactions on Circuits and Systems, vol. CAS-26, No. 6, Jun. 3 1979, at pages 377-388. 5) Placement Improvement: The initial placement is adjusted to improve some measure of placement quality such as minimizing total wiring length needed for all connections. 6) Routing: Interconnect lines are selected for connecting each of the unit's input and output lines to correspond to connections in the user's design which join partitioned pieces of the user's logic. In general, a route for connecting a signal from a source logic block to a destination logic block is selected by adding segments one step at a time to form a continuous connection between source and destination. 7) Evaluation of Success, and Possible Iterative Improvement Success of the software in placing all logic into the device and routing all lines which interconnect the logic is evaluated, and the speed of the overall device in implementing the user's logic is also evaluated. Typically, either a user desires to process the logic of an entire chip in minimal time (or within a specified time) , or a user desires to operate the logic device with the highest clock speed. In either case, performance can be measured in terms of the time required to transfer signals from beginning to end of the slowest path. A path typically goes through one or more logic blocks, and thus may include several connections. 8) Device Programming: Finally, if the above steps have been successful, a bit stream corresponding to connections to be made and not made configures the device to implement the user's design as determined in the above steps. The bit stream is either loaded into the device if the device is an SRAM FPGA, used to address antifuses to be programmed if it is an antifuse FPGA, used to pattern a mask if the device is a mask programmable ASIC, or otherwise used to make the specific connections in the device so that the device performs the function. Search Algorithms to Establish Connections The routing problem occurs in many applications, not just routing of interconnect in an integrated circuit FPGA, and has been studied extensively. Many search algorithms have been developed for finding an available connection from a source to a destination. These include a depth-first search in which segments are added to a route until some obstacle stops the progress, and alternative routes are tried until the destination is reached. For another example, a breadth first search tries all possible segments extending from the source, then all possible second segments, etc. until the destination is reached. A more sophisticated algorithm uses direction information about the destination, and searches first in the most likely direction. With any of these algorithms, a path to the destination will eventually be found if it exists. A book by Nils J. Nilsson entitled "Principles of Artificial Intelligence" published in 1980 by Tioga Publishing Company of Palo Alto, California, and a book edited by Avron Barr & Edward A. Feigenbaum entitled "The Handbook of Artificial Intelligence: published in 1981 by William Kaufmann, Inc of Los Altos, California and HeurisTech Press of Stanford, California both describe several methods useful for selecting a route between points. The process of finding connections is typically repeated for each signal to be routed from a source to a destination. As later connections are routed, there are fewer free routing resources, and the connections may become longer and less efficient. The collective result of finding connections will in general depend on which connection was routed first as well as on the algorithm used to route each connection. Register-to-RegJster Transfers A typical logic design uses both clocked registers (flip flops) and unclocked combinational and arithmetic functions. Timing of the overall device (how fast the device can be clocked) characterizes how quickly a signal can propagate from the output of one clocked register to the input of the next clocked register. This in turn depends upon how quickly any logic to be processed between the output of one register and the input of another register will produce its output, and on how quickly the signal can be routed through the connections, i.e., wire segments and nodes which connect the combinational logic blocks positioned along the path from one register to another. Different transfers may have different timing requirements if the design uses multiple clocks to control the registers. Improving the Device Performance - Critical Paths The time delay for each path used can be computed once paths have been selected. Users are generally interested in minimizing the longest delay in propagating a signal between one clocked register and another because this delay determines the maximum clock speed which can be used with the device when it is implementing the user's function. Thus users are typically interested in register-to-regiεter path timing. The performance requirement is often specified in terms of the time required to transfer a result from one register through some combinational logic to another register. One path will usually turn out to be the slowest path, and is termed the critical path. This critical path limits the overall clock speed, and therefore limits the speed of the device. The delay on this critical path must be reduced if the overall speed of the device is to be improved. Therefore, efforts have been made to reduce the delay of the critical path. Extensive work has been done on the subject. Analysis of Overall Layout vs Decisions about Each Element The above steps each involve a multitude of detailed decisions about parts of a design. Each of the specific steps is implemented by a specific algorithm. For example, decisions must be made about which logic block in the logic device will implement which logic gate or gates of the user's design (partitioning and placement) , and decisions must be made about which wires in the physical device will carry each of the signals from one block to the next. These individual decisions are usually made sequentially by an algorithm which does not take into account the overall device performance. At some point, the results must be evaluated from an overall perspective. The present invention relates to this overall perspective and to ensuring that the individual steps produce a good overall evaluation. Placement and Routing Tools Early placement and routing analysis tried to apply results of an overall evaluation of performance by adjusting weights on connections, and used the weights to establish priority for routing and to calculate a measure of goodness. Work by A.E. Dunlop, V.D. Agrawal, and D.N. Deutsch, entitled "Chip Layout Optimization Using Critical Path Weighting," Proc. 21st Design Automation Conference, pp. 278-281, 1984; and M. Burstein and M.N. Youssef, entitled "Timing Influenced Layout Design," Proc. 22nd Design Automation Conference, pp. 124-130, 1985 performed timing analysis using delay estimates for connections, and gave signals on critical paths higher weight during partitioning or higher priority during routing. Work by S. Teig, R.L. Smith, and J. Seaton, entitled "Timing-driven Layout of Cell-based ICε," VLSI Systems Design, pp. 63-73, May 1986, highlighted the importance of interactions between timing analysis and the place-and-route steps. But a method of assigning weights to critical paths was not described. The Teig et al. work described only generally how to relate timing to placing and routing. A paper by M. Marek-Sadowska and S.P. Lin entitled "Timing Driven Layout of Cell-Based ICs," Proc. ICCAD '89, pp. 94-97, 1989 described a recursive min-cut algorithm for initial placement, in which non-critical connections were given weights in inverse proportion to their slacks. Slack is the difference between time allowed to complete a transfer and the time used for that transfer. Critical paths (those with low or negative slack) were given slightly higher weights than non-critical paths. In a paper by J. Garbers, B. Korte, H.J. Promel, E. Scheietzke, and A. Steger, entitled "VLSI-Placement Based on Routing and Timing Information," Proc. European Design Automation Conference, pp. 31 321, 1990, improved performance was obtained by recursive partitioning and approximate routing (selecting the general area of a chip in which the routing is to be allocated but not selecting the particular lines to be used) using a re-weighting scheme in which a routing connection's weight is simply incremented by one at any stage it is found to be on a critical path. The evolving weights influence both partitioning costs and routing order. A problem which occurs with these weight adjustment methods is that the solution can oscillate. As critical paths are improved, other paths may become critical, and a second iteration may not produce a better result than the first iteration. Thus, weight adjustment methods do not in general proceed monotonically to a good result. Dynamic Methods in which Timing Analysis is Repeated after Small Layout Changes Another approach has been to perform layout (layout refers to the overall function of assigning all logic, registers, and connecting lines in a user's schematic to corresponding elements in the physical device, and includes mapping, placement, and routing) with frequent interaction between the overall analysis of the device performance (accounting for path delays) and the layout process (the selection of positions for individual elements and lines) . In a conference paper by W.E. Donath, R.J. Norman, B.K. Agrawal, S.E. Bello, S.Y. Han, J.M. Kurtzberg, P. Lowy, and R.I. McMillan entitled "Timing Driven Placement Using Complete Path Delays," Proc. 27th Design Automation Conference, pp. 84-89, 1990, the timing analysis is updated after one or a few moves during placement. Linear programming has been used at each stage of recursive partitioning to dynamically track path constraints during placement, as described by M.A.B. Jackson and E.S. Kuh, in a paper entitled "Performance-Driven Placement of Cell Based ICs," Proc. 26th Design Automation Conference, pp. 370-375, 1989. Related work by M.A.B. Jackson, A. Srinivasan, and E.S. Kuh entitled "A Fast Algorithm for Performance-Driven Placement," published in Proc. ICCAD '90 pp. 328-331, 1990 and by A Srinivasan entitled "An Algorithm for Performance-driven Initial Placement of Small-Cell ICs," published in Proc. 28th Design Automation Conference, pp. 636-639, 1991 used quadratic programming and reduced the number of delay requirements or constraints which must be considered in selecting the placement of a block of logic to achieve high performance placements more efficiently. A paper by R.S. Tsay and J. Koehl entitled "An Analytic Net Weighting Approach for Performance Optimization in Circuit Placement," in Proc. 28th Design Automation Conference, pp. 620- 625, 1991 provides a formula for connection re-weighting which requires as inputs from timing analysis a set of precise limits on individual connection delays. The task of transforming the results of timing analysis into guidance for placement and routing is not trivial, as evidenced by the many heuristics that have been proposed. Slaςk When a timing requirement in one connection of a logic design fails to be met but a timing requirement in another connection of the logic design is met with time to spare, it is often possible to adjust element positions and routes so that timing of the connection with room to spare is made slower in order to speed up that connection which failed to meet a requirement, with the result that all connections and paths meet the requirements. The room to spare is called slack. The slack of a path is defined as R(p) - A(p) where R(p) is the required propagation time along path p, and A(p) is the actual total propagation time along path p. Positive slack indicates a connection was made with time to spare. Negative slack indicates that a timing requirement has not been met. Near- zero (positive) slack means a timing requirement is barely met. Paths which have been routed so that they have positive slack can be rerouted to have less positive slack if that action allows other paths with negative slack to be rerouted so that they meet a timing requirement. Slack Calculation for Connections of a Path In a typical circuit, there will be both fan-in (multiple signals entering an element) and fanout (output signals applied to more than one element) . R.B. Hitchcock, Sr., G.L. Smith, and D.D. Cheng, in "Timing Analysis of Computer Hardware,", IBM J. Res. Develop., Vol. 26, No. 1, pp. 100-108, 1982, described how to compute slacks of individual connections. The slack of a connection, slack(c), is computed as (1) slack(c) = R(c) - A(c) where: R(c) is the earliest required arrival time of a signal at the output end of connection c A(c) is the latest actual arrival time of a signal at the output end of connection c Two linear time computations are performed to calculate slack(c) . Fig. 5 illustrates an example problem which includes both fan-in and fan-out and which shows how the slack of individual connections is determined from known connection delays and an overall path requirement. The overall requirement is that signals arrive at the three destinations R904, R905, and R906 within 30 nanoseconds after signals are applied to registers R901, R902, and R903. This requirement is illustrated by the numbers "30" in the destinations R904, R905, and R906. Connection delays are illustrated in ovals positioned on the respective connections C901 through C913. These connection delay numbers represent the delay due to length of wire in the segments of the connection and will include propagation delay for signals internal to a block or register plus set-up delay for signal switching time as a signal enters a register. The calculation of actual arrival times A(c) propagates forward from points at which arrival times are known (or forward from a reference point) . As shown in Fig. 6, actual arrival times are shown at inputs to the blocks. Arrival times at R901, R902, and R903 are shown as 0 nanoseconds. Delays in the connections are added to these times to produce arrival times at inputs to subsequent blocks. For simplicity, delay within a block is accounted for in the delays of its outgoing connections. When several signals are applied to a block, the latest arrival time must be used, since the output signal from that block is not a valid signal until the last input signal has arrived. For example, connection delays of 3, 4, and 2 nanoseconds respectively for connections C902, C903, and C904 cause signals to arrive at block B902 at times 3, 4, and 2 respectively. The latest of these, a time of 4 nanoseconds, becomes the time at which an output signal is present on the output terminal to connection C908, causing an input signal to arrive at block B904 at 8 nanoseconds. In this manner, delays are propagated forward through the circuit. As shown in Fig. 7, the required arrival time R(c) is propagated backward from the register at which it must arrive. The connection delay of 7 nanoseconds at connection C909 means that for a signal to reach destination R904 by 30 nanoseconds, it must exit R901 by 23 nanoseconds. Another requirement derived from the destination R905 requirement and connection C910 is that the signal must exit R901 by 24 nanoseconds to reach destination R905 by 30 nanoseconds. But destination R904 has imposed an earlier required arrival time. However, a still earlier requirement of 20 nanoseconds is imposed on R901 by R905 in combination with connections C912 with a delay of 3 nanoseconds, C908 with a delay of 4 nanoseconds, and C902 with a delay of 3 nanoseconds. Thus the required exit time from R901 imposed by the requirement that signals arrive at R904, R905, and R906 by 30 nanoseconds is that the signal exit R901 by 20 nanoseconds. The calculation of required arrival times R(c) propagates backward through the connections from the points at which the requirements are specified. At any connection, it is possible to calculate slack by subtracting the latest actual arrival time at that connection from the earliest required arrival time at that connection. Fig. 8 shows slacks S for each of the connections as determined by propagating actual arrival time forward to that connection and required arrival time backward to that connection. Zero-Slack Algorithm P.S. Hauge, R. Nair and E.J. Yoffa in a paper "Circuit Placement for Predictable Performance," in Proc. ICCAD '87, pp. ε 91, 1987 introduced the zero-slack algorithm (ZSA) . This algorithm begins by setting an initial set of connection delays which add up to less than a user's requirements, and computing slacks based on these initial connection delays. These initial delays are replaced by connection delay limits which use up the available slack such that any path having each of its connection delays equal to its limit would just meet the user's requirements. These connection delay limits are then used by placement and routing tools to select acceptable positions and routes for the circuit elements and connections. The limits guide the placement and routing tools to select satisfactory positions and routes more easily than would be possible with tighter requirements, yet assure that if each connection meets its connection delay limit, the overall timing requirements will be met. The zero-slack algorithm tools use path slack information to determine limits by distributing the slack of a path p to the individual connections on path p. According to Hauge et al., slack is distributed uniformly among connections on a path. Alternatively, as described by W.K. Luk in a paper entitled "A Fast Physical Constraint Generator for Timing Driven Layout," Proc. 28th Design Automation Conference, pp. 626- 631, 1991, slack can also be distributed in proportion to physical measures, e.g., capacitance per fanout or capacitance change per fanout. The delay limits are suggestions which, if universally obeyed, would meet a user's requirement. The user's requirement may still be satisfied when some suggested delay limits are not met if other limits are met with room to spare. In a paper by H. Youssef and E. Shragowitz entitled "Timing Constraints for Correct Performance," Proc. ICCAD '90, pp. 24-27, 1990, the slack of a path is distributed to its connections in proportion to the function (2) weight(c) = LF(c) * AcL(c) where LF(c) is the delay per unit load (fanout) on the source pin (logic block output) of connection c, and AcL(c) is the capacitance presented by connecting the load to connection c. Thus Youssef and Shragowitz attempt to distribute slack to portions of a path according to the delay which is likely to occur on that part of a path. An iterative procedure for distributing slack of a path to the connections in the path is described in the above paper. A fraction f(c) which represents that portion of the total slack to be distributed to connection c is computed as (3) f(c) = weight (c) / max[weights (p) ] where : weight (c) is weight of the connection c as determined from the formula in equation 2 above, weight (p) is the weight of a path p and is the sum of all connection weights on path p, max[weights (p) ] is the maximum weight (p) of those paths that include connection c. In each iteration, allowable delay U(c) of a connection is increased by f(c) * slack(c) . Thus, (4) U(c) new = U(C) 0 ld + ( (c) * Slac (c) ) Fig. 9 shows calculations of new delay limits U(c) new based on adding to old delays U(c) 0 id the value of f(c) * slack(c) . The formula for fraction f(c) never distributes so much slack that the slack of a path becomes negative. Existing methods do not make use of information about what values of connection delay are realistic. For example, if initial delays are assumed to be zero, (suggested by Youssef and Shragowitz), some suggested delay limits U(c) may be too small to achieve. On the other hand, if initially the delay limits are assumed to be "physically reasonable" (suggested by Hauge et al., supra) the suggested delay limits may be unnecessarily large. Either way, suggested delay limits do not provide the best guidance for layout tools which will use the suggested limits. What is needed is an optimized set of suggested upper limits on connection delays. SUMMARY OF THE INVENTION Given a partially completed layout, each suggested delay limit U(c) should be attainable in a finished version of that layout. Therefore, limits should be chosen that have the best chance as a set of being achieved. The present invention suggests delay limits based on information about lower bound delays and achieves iterative improvement in suggested delay limits by examining achieved delays in an earlier layout. The present invention achieves a layout of a user's logic design onto a logic device which meets specified timing constraints by suggesting delay limits for the connections of a path which can be used as guides to layout tools. According to the invention, when suggested delay limits are being calculated for use of layout tools (partitioning, placement, and routing algorithms) , initial values of the delay limits are set to be the lower bound delays which can be achieved using the fastest route for a connection. Setting the starting values for computing delay limits at the lower bound values assures that no delay limit will be suggested which is faster than can be achieved. To evaluate collective achievability the present invention uses information on achieved delays in layouts already attempted. According to the present invention, when improving performance of a laid out design, the present invention uses both lower bound delay limits and already achieved delays in computing suggested delay limits for iterative timing improvement. In a preferred embodiment, the suggested delays are a fraction of the difference between achieved delay and lower bound delay in which the fraction f(c) is computed from the formula f(c) = weight(c) / max [weight(p) ] where weight(c) = D(c) - L(c) D(c) = estimated or achieved delay for connection c L(c) = lower bound achievable delay for connection c weight(p) = ∑ weight(c) for all connections c on path p max [weight(p) ] is weight(p) on the slowest path using connection c. Thus suggested delay limits are proportionally adjusted according to differences between achieved delays and lower bound achievable delays. During improvement, limits on connections with negative slack are adjusted down and those with positive slack are adjusted up. Thus limits suggested to a layout tool for iterative improvement attempt to meet tighter path constraints by assigning connection delays according to the difficulty of meeting the tighter limits on the individual connections. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 illustrates a Xilinx prior art FPGA architecture. Figs. 2A and 2B illustrate a simple implementation of a switchbox SBX shown in Fig. 1. Fig. 3 illustrates a more flexible switchbox SBX, showing connections available to west wires. Fig. 4A illustrates a logic block used in Xilinx FPGA devices. Fig. 5 illustrates an example circuit design showing logic elements or registers interconnected by connections having specified delays. Fig. 6 shows propagation of actual arrival time forward from a known point. Fig. 7 shows propagation of required arrival times backward from a destination. Fig. 8 shows slack available at each connection determined from the actual and required arrival times of Figs. 6 and 7. Fig. 9 shows a slack distribution according to the zero- slack algorithm. Fig. 10 shows the flow of steps used to layout a design using the slack allocation method of the present invention. Fig. 11 shows the flow of steps used in a limit adjusting algorithm according to the present invention. Fig. 12A shows an example net, which is part of a logic design. Fig. 12B shows fractional multipliers f(c) attached to each connection in the example net of Fig. 12A. Fig. 12C shows upper limit time delays for each connection in the net determined by multiplying the fractions of Fig. 12B by a path timing constraint. Fig. 12D shows lower bound connection delays for the net of Fig. 12A. Fig. 12E shows delays achieved on the net of Fig. 12A after a layout has been completed. Fig. 12F shows fractions f (c) computed using lower bounds and achieved delays of Figs. 12D and 12E. Fig. 12G shows revised upper limit time delays for the connections in the net of Fig. 12A after a tighter path constraint has been applied and new delay limits have been determined using the information from Figs. 12D and 12E to compute the fractions f(c) of Fig. 12F. Fig. 13 shows in more detail the steps performed in step 104 of Fig. 10. Fig. 14 shows steps performed in a first-pass calculation of routing in an FPGA device. Fig. 15 shows steps performed in an iterative improvement of routing in an FPGA device. Fig. 16 illustrates a sample problem for illustrating the mincut partitioning algorithm which may be used during initial placement. Fig. 17A represents the assumed placement when estimating actual delays on connections which do not cross a partitioning line during initial placement. Fig. 17B represents the assumed placement when estimating actual delays on connections which do cross a partitioning line during initial placement. Fig. 18 represents the assumed placement when estimating lower bound delays during initial placement. Fig. 19 illustrates a subset of candidate elements to be cycled during placement improvement. Fig. 20 illustrates a cost function used during placement improvement. DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT The method of the present invention operates both while an initial layout step is being determined and while iterative improvement over this initial layout is being formulated. Novel features of the present invention include consideration of lower bound achievable delays and a new delay limit calculation. The path analysis method of the present invention is preferably used during initial placement of logic elements into logic blocks, placement improvement, and routing of connections between the logic elements. Iterative Interaction Between Path Analysis and Layout Tools Fig. 10 shows the flow of steps in which the present invention is used to achieve iterative improvement. The flow of steps iterates back and forth between the layout tools, which select partitioning of the logic or select positions or routes for elements of the user's design, and the path analysis tool which evaluates the entire layout in terms of timing (performance) , and suggests delay limits to be used by the layout tools. Initially, step 102 of estimating delay is performed after some activity of a layout tool, for example after a first cut by a mincut partitioning algorithm, or after routing some or all of a user's design. In step 103, the path analysis tool of the present invention compares estimated (or actual) delays to any timing requirements which have been specified by a user, and computes resulting slacks. The prior art Hitchcock method discussed in connection with Figs 5-9 is preferably used to compute connection slacks. From these slacks, at step 104, a novel method is used to compute suggested delay limits for each connection in the design. These limits are then used in step 111 by the layout tools in an attempt to improve each position or route to meet all suggested delay limits. When Step 111 is completed, the layout tools may return to step 102 and calculate new delays for the new connections. The path analysis process of steps 103 and 104 is then repeated again, new slacks being computed, and new delay limits being suggested. Step 103 takes connection delays from step 102 and estimates delays of paths, which typically comprise several connections and several logic blocks. A preferred method considers four types of paths and related time delays: pad-to-pad: the time delay from when a signal is placed on an input pad until the signal reaches an output pad by way of a path which does not include any intermediate registers; pad-to-setup: time delay from an input pad to a register input plus any additional time required to stabilize the voltage level of a switched signal; clock-to-pad: the time delay from a register output to an output pad plus the time delay between when a clock signal switches to the time a stable signal is present at the register output; and register-to-register: the time delay from a register output to another register input plus the time delay between when the clock signal switches and the signal is present on the register output plus the time delay from when a signal reaches the register input until the voltage level of a switched signal is stabilized. Thus internal delay times are added to wire segment delay times and logic block delay times to estimate the total delay of the path. This activity is performed by the layout tools. As mentioned in the prior art discussion of steps used to determine layout, the partitioner partitions the design into logic elements to be implemented by logic blocks, the placer positions the logic elements into logic blocks, and the router selects wire segments which route connections between the logic blocks. Each tool preferably includes means for estimating connection delays resulting from its actions. Lower Bounds The present invention relates to step 104, in which suggested delay limits are computed, and which is discussed in detail below. The suggested delay limits are supplied to the layout tool as guides for revising the layout in step 111, a step which handles individual connections between logic blocks and does not evaluate total path delay. Lower bound delay estimates for each connection are determined at step 104, either from values input by a designer, or preferably by generating a table of lower bound delays for the chip being used as a function of the coordinates of the connection end points. These lower bound delays are used in computing the suggested delay limits for each connection. Suggested delay limits can be used, for example, at the following stages of layout: initial placement, placement improvement, and routing. As with other steps which use the invention, the best available lower bound connection delays (during initial placement and placement improvement accurate lower bounds are not known) are used at step 104 for computing suggested delay limits. Limit Ad-iusting Algorithm Fig. 11 shows the flow used by the path analysis tools at Step 104 of Fig. 10 to compute a set of suggested delay limits used initially in partitioning, placement, and routing. Lower bound connection delays are used when setting upper limit connection delays U(c) to assure that upper limits are never set below the lower bound delays. Without considering this lower bound, an unsatiεfiable upper limit U(c) < L(c) could result. This is true even in designs for which layouts exist that meet the timing constraints. The lower bound connection delays, L(c) are used as inputs 1(c) to the limit adjusting algorithm. In step 104, the present invention uses a limit adjusting algorithm which generalizes on the prior art method of iteratively distributing slacks. Fig. 11 shows steps used in implementing this limit adjusting algorithm. As was taught by Youssef and Shragowitz, at step 205, for each connection the product of f (c) and the current slack of connection c is added to the suggested delay at connection c. However, f(c) is not necessarily computed by the formula established in the prior art. Terms used in the limit adjusting algorithm of Fig. 11 are: U(c) = the suggested delay limit for connection c 1(c) = an initial delay for connection c slack(c,U) = slack on connection c given the set of delays U f (c) = a multiplier fraction for distributing slack L(c) = lower bound achievable connection delay As shown in step 201, inputs to the limit adjusting algorithm are: a netlist, which is a list of logic block inputs and outputs to be connected together timing constraints (which may include clock speed or timing between package pins) block delays, which are the delays internal to each logic block, and for registers include setup and clock-to- output delays for each connection: initial delay 1(c), which according to the invention is set at the lower bound L(c) a multiplier f(c) which indicates what fraction of the connection slack is to be added to the connection In step 202, the limit adjusting algorithm initializes U(c) = 1(c) which is set at the lower bound L(c) for each connection c. At step 203, a slack for the connection, slack(c,U), is computed. As shown in step 204, if slacks are close enough to zero, go to step 207, and output the delay limits; otherwise, as shown in step 205, slacks are distributed to each connection c using the formula (5) U(c) new = U(c) old + (f(c) * slack(c,U)) As shown in Fig. 11, steps 203 and 205 of computing and distributing slacks are repeated until undistributed slacks are sufficiently near zero. Eventually, step 207 is reached and delay limits are provided to the layout tools for a further iteration. Fig. 12A shows a small example portion of a logic design comprising three registers Rl, R2, and R3, combinational blocks Bl and B2, and connections Cl through C4 interconnecting these blocks and registers. An output signal from register Rl is carried on connection Cl to block Bl . The output of block Bl fans out on connection C2 to register R2 and on connection C3 to block B2, which provides output on connection C4 to register R3. Fig. 12B shows the example circuit of Fig. 12A with slack distributed using the function (6) f (c) = 1 / max length path through connection c As shown in Fig. 12B, the path from Rl to R3 uses three connections Cl, C3 , and C4. The shorter path to R2 uses two connections Cl and C2. Since the longest path uses three connections each connection on this longest path is assigned a fraction 1/3. Since the path from Rl to R2 uses only two connections, one might consider assigning a fraction of 1/2 to each of connections Cl and C2 on this path. But since the maximum length path through connection Cl is three connections, the smaller fraction f(Cl) of 1/3 prevails. If a goal of register transfer within 24 nanoseconds has been specified, and delays were initialized at zero, (not according to the invention) the fractions of Fig. 12B would produce the delay limits shown in Fig. 12C. Delays Achieved bv Layout Tools After a set of suggested delay limits has been generated by the path analysis of step 104 (Fig. 10) , these limits are provided to the layout tool, which at step 111 revises the layout in an attempt to meet the limits. Fig. 12E shows a set of delays actually achieved in response to the limits supplied in Fig. 12C. On connection Cl an actual delay of 4 nanoseconds was achieved, on connection C2, a delay of 20 nanoseconds was achieved, and on connections C3 and C4, delays of 8 and 12 nanoseconds respectively were achieved. Thus the 24 nanoseconds limit has been achieved on both paths. Note that even though the suggested limit on connection C2, U(C2), was not met, the overall goal of 24 nanoseconds was achieved. This is because the layout tools which aim for the suggested limits U(c) preferably do not give up if they fail to meet a suggested limit but continue to attempt to complete a solution. And since the limit on connection Cl was met with room to spare, the overall goal was met. Lower Bounds on Delay Limits It is unrealistic to assume delay limits can ever be zero. The shortest path between two registers will have a lower bound delay determined by the physical separation of the two registers on the chip, and by the routing segments present on the chip. The lower bound can be adjusted if blocks to be connected are placed in different physical locations (in other words, if placement is revised) . But for routing changes where placement does not change, this lower bound is constant for the connection. As compared to calculating suggested limits using initial delays of zero, an improvement in the slack allocation can be achieved by starting with these lower bound delays, and adding fractions of the slack to these lower bounds. Also if analysis using the set of lower bound delays shows failure to meet a timing constraint specified by a user, this is a sure indication that the timing constraint can not be met by any routing configuration. Indeed, combining lower bound delays with timing requirements can be used to evaluate placement before further efforts at routing have been made. If the placement does not allow satisfactory routing, and the timing constraints are critical, then the placement must be revised to allow the possibility of successful routing. Iterative Improvement Using Gap Between Achieved Delay and Lower Bounds After an initial layout calculation is completed, total path delays and corresponding slacks can be evaluated. It may be desirable to perform an iteration to improve some of the path delays. For example, a 25% increase in clock speed may be desired. If lower bound delays as shown in Fig. 12D are used, these lower bounds can be taken into consideration when attempting an improvement in performance. According to the invention, slacks are allocated according to the difficulty of achieving a higher standard. The remaining improvement in a connection delay is measured by the difference between the minimum delay achievable and the delay already achieved. A formula for attempted delay reduction which has worked well on several benchmark tests is to reduce the delay allowance by an amount proportional to the gap D(c) - L(c) where D(c) is delay achieved for the connection and L(c) is the lower bound achievable delay for the connection. Thus the formula for weight, used by equation 3 in computing f(c), is (7) weight(c) = D(c) - L(c) Equation 3 is repeated here: (3) f(c) = weight (c) / max[weights (p) ] With the weight function of equation 7 used by equation 3, the equation 5 calculation for new delay limits (5) U(c) new = U(c) 0 i d + ( (c) * slack(c,U)) thus makes use of both achieved delay and lower bound delay. Unlike the other weight functions which were considered by prior researchers, the weight function of equation 7 depends on the current state of the layout, and thus takes advantage of knowledge about what has been achieved. Since the weight function of equation 7 is the gap between the delay achieved on a connection and its lower bound, it relates to the connection's maximum potential for improvement. When an effort is then made to improve timing, upper limits U(c) therefore set the amount by which each delay is asked to improve to be proportional to its potential to improve. Fig. 13 shows a flow chart of steps 103 and 104 of Fig. 10, as used to improve timing of a given design. The flow chart of Fig. 13 will be discussed in conjunction with the example of Figs. 12D, 12E and 12F. When an attempt is made to iteratively improve the timing of a design which has been laid out, the first step is to set the new goal for path time delay. In the example of Figs. 12D-12F, the goal is to reduce the 24 nanoseconds delay by 25% to 18 nanoseconds. Since slack is the difference between achieved delay and required delay, it is clear that some slacks will initially be negative. In the example of Fig. 12D-12F, all slacks are initially negative with respect to the new requirement. For example, on connection C2, the achieved delay is 20 ns and on connection Cl the achieved delay is 4 ns. The new goal is a total of 18 nε . Thus the slacks, computed in step 103 for connectionε Cl and C2 are 18 - 24 = -6. Slackε for connectionε C3 and C4 are alεo -6. Aε a novel feature of the invention, at εtep 107, negative εlackε are diεtributed without violating lower boundε by setting the new delay limit U(c) new to be the greater of the value U(c) 0 i d + f(c) * slack(cU) and the lower bound value L(c) . Thus as delay limits are reduced, no delay limit will be reduced below an achievable value. The fractions f(c) shown in Fig. 12F are computed from equation 3 where weight of a connection is determined from equation 7, aε diεcussed above. In Figs. 12F and 12G, the actual achieved delay on connection Cl of 4 nanoseconds minus the lower bound of 2 ns reεultε in a fraction f (Cl) of 2/12 and a εuggeεted limit of 3 nε. On connection C2, the actual delay of 20 nε and lower limit 10 nε produce a fraction f(C2) of 10/12 and a εuggeεted delay limit of 15 ns. Similar computations are made for paths C3 and C4. Note that the 25% reduction in overall delay doeε not distribute to the connections as a 25% decrease uniformly. Thiε iε becauεe the lower bound delayε were not uniform. Fig. 13 shows that after negative slacks have been diεtributed, the diεtribution of poεitive εlacks occurs at εtep 109 by the εame method deεcribed above in connection with Fig. 12C. Application to FPGA Routing A preferred embodiment of the preεent invention iε uεed for routing εignals in an FPGA εtructure in conjunction with a routing tool which haε the following characteriεticε: 1) The routing tool reεpondε to εuggeεted delay limitε U(c) by selecting for each connection c a route which meets the suggested delay limit when one is available. 2) In determining which connections to route firεt and in εelecting routeε, the routing tool uεeε a coεt function which accounts for a combination of delay and resource costs (number of wires used of a certain type compared to the number available of that type) . The routing tool makes choices based on a) εuggeεted delay limit, b) actual delay of a propoεed route, and c) number and kind of wiring εegmentε uεed to form the connection. 3) When the routing tool haε attempted to find routeε for all connectionε and has failed to find some routes, the routing tool attempts to route the unrouted connections by designating an unavailable route which could complete the connection, removing (ripping up) the connections which made the route unavailable, and attempting to find routes for the temporarily unrouted connections. Xilinx, Inc, assignee of the present patent application, supplies a router for the Xilinx XC4000 family which meets the above criteria. However, in the past, only a single upper limit for all connections has been available to the Xilinx router. The present invention supplies suggested upper limits for each connection. Guidance from this set of suggested upper limits lets the router select routes which enhance the ability of the configured device to meet faster timing requirements. Initial Routing Solution Using Lower Bounds If the goal is to minimize clock period, it is possible to determine the best conceivable total path delay for each of four path types (pad-to-pad, pad-to- setup, clock-to-pad, and register-to-register) by assuming all connections are routed on their fastest routes, and then select a goal for a first iteration less severe than this fastest conceivable total path delay. When used for routing a placed logic design in a logic device, connections that require special resources are routed first. The others are routed in decreasing order of the ratio of lower bound delay to allowable delay, so connections with tighter limits are routed first. The requirement may then be tightened for a second iteration. In detail, as shown in Fig. 14, at step 141, the path analyzer (which performs steps 103 and 104 of Fig. 10) computes lower bound path delays L(C) in order to find, at step 142, the best conceivable clock period T low . In one embodiment, as shown in step 143, the path analyzer (the tool used in steps 103 and 104 of Fig. 10) then sets a goal (required path time) of oal = 1• 5 T low As shown in step 144, for each connection c, fraction f(c) is determined from equation 3 (3) f(c) = weight(c) / max [weights(p)] 28 where the weight function used is simply the uniform slack distribution function weight (c) = 1 and max [weightε(p)] iε the number of connectionε in the longest path. As shown in εtep 145, limitε U(c) are adjuεted uεing the limit adjuεting algorithm diεcuεεed above in connection with Fig. 11. Theεe limitε are provided to the router (thiε iε equivalent to the arrow in Fig. 10 from εtep 104 to εtep 111), which at εtep 146 of Fig. 14 recognizeε connectionε which require εpecial resources (for example, a signal which is labeled as a global clock εignal) , and aεεignε them to the appropriate resources. Next, at εtep 147, the router routeε the remaining connections in order of decreasing ratio L(c)/U(c) . Recall that no connections will have εuggeεted delay limitε leεε than their faεtest posεible delay L(c) . Thuε all ratios L(c)/U(c) will be lesε than or equal to 1. A ratio near 1 indicateε a connection which εhould have a time delay near the faεteεt poεεible for that connection. Thuε connectionε having a high ratio are routed firεt to increaεe the chance of obtaining a εatiεfactory route for the difficult connectionε. Any connectionε for which the router can not find a route that meetε the U(c) requirement are left unrouted. At εtep 148 a determination iε made of whether any connections were left unrouted. If so, at step 149, the router increases the values U(c) for all unrouted connections by 20%, thus increasing T goal by 20%, and proceeds again to step 146. When step 148 is reached, if all connectionε are routed, the initial routing effort iε complete, and the routing information can be supplied to the path analyzer (equivalent to the arrow between stepε 102 and 103 of Fig. 10. Improvement of an Exiεting Routing Fig. 15 εhowε the εtepε uεed according to the invention to improve the timing of an exiεting routing εolution. The exiεting routing εolution will have an achieved clock speed T achιeved . If the intent is to obtain the fasteεt possible solution, a preferred embodiment attempts on one iteration to reduce the clock period by one third of the maximum posεible decrement. Thus in step 151, a new clock period T goa ι is set ( 8 ) Tgoal = T ac h eve d - ( T ac )-.i evec 3 - T low ) / 3 As indicated in εtep 152, for each connection c, the fraction f (c) iε computed from equation 3 (3) f(c) = weight(c) / max[weightε(p) ] where the weight function uεed iε now the achieved delay minuε lower bound delay, or room for improvement: (7) weight(c) = D(c) - L(c) After these fractions f(c) have been determined, at step 153, those limits U(c) with negative εlack are adjuεted downward uεing the formula (b) U(c) new = max[U(c) 0 id + f(c) * slack (c,U)), L(c)]; then at step 154, thoεe limitε with positive slack are adjusted upward, using the formula (5) U(c) new = U(c) old + f(c) slack(c,U) Theεe new and εometimeε tighter εuggeεted delay limits are provided to the router, which at εtep 155, deleteε or rips up all routes for connections having a delay D(c) higher than the new εuggeεted limit U(c) . At εtep 156, the router εortε theεe now unrouted connectionε in order of decreaεing D(c)/U(c), so that those having delays most exceeding their new limits can be routed first. At εtep 157, the router attempts to route these unrouted connections in the sorted order. Any connections which fail to meet the U(c) requirement are temporarily left unrouted. At εtep 158 the router determineε whether any connectionε now remain unrouted, and if so, at step 159, increases U(c) for those unrouted connections by 20%. Steps 156 and 157 of sorting and attempting to route are then repeated. This loop repeats until all routes are completed. Results of Timing Improvement During Routing It is often possible to achieve improved timing with this routing improvement method. An experiment with 22 benchmark designε of varying εizeε and functionε compared delays reεulting from a routing algorithm which useε a single delay limit for all connections with delays resulting from using the limit adjuεting algorithm which used lower bounds, followed by one pasε of the routing improvement algorithm diεcussed above. Reεults showed improvement in every case when compared with the timing resultε uεing the εingle delay limit. Percentage timing improvement ranged from 3% to 32% with an average of about 14% for the 22 benchmark deεignε. Comparison of the achieved connection delays with theoretical minimum connection delayε εhowed that only an additional 16% improvement in routing delay could ever be obtained if every connection were routed on its fastest route. Further improvement in timing for these 22 designs, as well as for other designε may be achieved by uεing the invention with initial placement or placement improvement when laying out the deεign. Such improvement haε not yet been teεted. The flow diagram of Fig. 10 applieε at all these stageε. Since little is known about actual delay during early stageε of placement, the lower bounds are only estimateε. But computing εuggeεted limits from theεe early eεtimates does improve later placement resultε. We will next diεcuεε the applicationε of the path analyεiε method to earlier stages in the layout process. Initial Placement The method of the present invention can also be used with initial placement of logic elements into logic blocks. Initial placement is preferably performed by a min-cut partitioning algorithm which begins by dividing the complete design into two clusters to be implemented in two regions of the device. The min-cut algorithm tries to minimize the number of connections extending across a cut line dividing the two regions. The min-cut algorithm continues to divide one cluster into two smaller clusters, until each cluster can be implemented in one logic block. Each partitioning of one cluster of elements into two begins by placing half the logic elements on each side of the cut line. Then follows a sequence of steps in which each element in turn changes sides. At each step, the element selected to move across the cut line is the one that can effect the greatest cost reduction by moving to the other side. In the prior art min-cut algorithm, the cost of a particular arrangement of elements around a cut line is the estimated number of connections crossing that line (estimated because the actual number of connections in general depends upon final routing for sets of multiple connections which fan out from a single source) . Fig. 16 illustrates a small example in which the cost of moving element E2 across cut line 171 from section SI to S2 will be evaluated. After all elements are moved from one side to the other, the step within the sequence at which the lowest cost was attained is adopted as a new proposed partition. The process is then repeated, again moving each element across the cut line in turn and selecting the arrangement with the lowest cost. Repetitions of the process of moving each element and selecting the arrangement with the lowest cost continue until a sequence occurs with no further improvement. The present invention evaluates cost of moving an element across a cut line based not only on improvement in number of connections crossing the cut line but also on a delay calculation. (9 ) Cost E = N^ - N^ + C^ (E) 32 where Coεt E is the cost of moving an element E acroεε the cut line (a negative number indicateε an improvement); N af er - before is the prior art connection croεεing coεt: the eεtimated number of connectionε extending acroεε the cut line after the element iε moved minuε the number of connectionε extending acroεs the cut line before the element is moved; and C de i ay (E) is the cost addition related to delay for moving that element acroεε the cut line. According to the preεent invention, C de ι ay (E) iε the sum of connection delay functions C de ι ay (c) for connectionε to element E. That iε, (10) C delay (E) = ∑ C delay (c) for all connections c that attach to element E. According to a preferred embodiment of the invention, the connection delay function C delay (c) iε a function of εuggeεted delay limitε U(c) aε calculated in εtep 104 of Fig. 10 deεcribed above, and alεo of two valueε B(c) and W(c) . The value B(c) repreεentε the better εituation, e.g. where the connection doeε not croεε the cut line, and the value W(c) represents the worεe situation, e.g. where the connection c does cross the cut line. Fig. 17A illustrateε the better εituation in which a connection between elements El and E2 does not crosε a cut line 171, and Fig. 17B illustrates a worse situation in which element E2 has been moved such that the connection between elements El and E2 does crosε the cut line 171. In the caεe of Fig. 17A, where the connection doeε not croεε the cut line, to determine the delay for connection El- E2, elementε El and E2 are aεεumed to be εeparated by 1/3 the x dimenεion and 1/3 the y dimenεion of the region to the left of cut line 171. Better caεe delay B(c) correεponding to these coordinates is looked up in a table of estimated delays which is εpecific to the chip being uεed. Eεtimated delayε εtored in the table are determined by aεεuming that the connection will be routed between itε elementε uεing the fastest route in the chip excluding any chip routing resourceε which have been deεignated as fast reεourceε. Typically delay dependε upon the particular reεourceε and tranεiεtorε in the chip and iε not proportional to the diεtance between the logic blockε where the elementε are located. In εome Xilinx FPGA chipε, for example, global clock buffer lines and other long lines extending a full dimension of the chip, or in some caseε half the dimenεion of the chip, relatively few of theεe faεt reεourceε are provided becauεe they occupy εignificant chip area, and they are deεignated aε fast reεourceε εo that they can be recognized by the layout toolε aε reεources intended for fast use such as clocks and high fan-out lines. Theεe faεt resources are not available to the large number of connections in a chip. Therefore the best eεtimate of connection delayε aεεumeε theεe faεt reεources are not available. In one embodiment, the estimated delays placed in the eεtimated delay table alεo aεεumeε that wiring εegmentε which are uεed to form a connection are not interconnected through buffers to regenerate and sometimeε εpeed up the εignal. Thuε the eεtimated delay table iε a fairly conεervative table. For εome chipε available today, eεtimated delay iε in the range of 1 to 20 nanoεecondε. in the caεe of Fig. 17B, where the connection doeε croεε vertical cut line 171, elementε El and E2 are aεεumed to be at the midpointε of the horizontal dimenεionε of the portionε, and at the 1/3 and 2/3 pointε of the vertical dimenεion. Worse case delay W(c) corresponding to the coordinates of elementε El and E2 aε positioned in Fig. 17B is also looked up in the table of estimated delayε. Aε stated above the cost C de ι ay (c) iε a function of εuggeεted delay limit U(c), better caεe delay B(c) and worεe delay W(c) . The preεently preferred function iε (11) If W(c) < U(c)/2, C de ι ay (c) = 0 If U(C) > W(c) > U(c)/2, C de ι ay (c) = W(c) - B(c) If W(C) > U(C), C de ι ay (c) = W(C) - B(C) + [W(C) greater of B(c), U(c)]. That iε, if the delay cauεed by croεεing the cut line iε εtill far below the εuggeεted limit, a factor relating to C de ι ay (c) will not be added to C e ι ay (E) for evaluating the coεt of moving the element. If the delay cauεed by the connection crossing the cut line is close to but below the suggeεted delay limit U(c) , then a number chosen to reflect the coεt incurred by croεεing the cut line, namely the difference between expected delay when the cut line iε croεεed and expected delay when the cut line iε not croεεed, iε contributed to C de i a y(E) - If the worεe caεe delay exceedε the εuggeεted delay limit U(c), then a second contribution resulting from C de i a y(c) iε added to C de i ay (E) . Thiε additional contribution iε the εmaller of two differenceε: the difference between worεe case delay and suggeεted delay limit (or how badly the limit iε exceeded in the worεe caεe) and the difference between worεe caεe and better caεe delay (relateε to the poεεibility for improvement) . If W(c) corresponds to the state before the move and B(c) correεpondε to the εtate after the move, then C de i ay (c) iε recorded aε a negative number. In the example of Fig. 16, negative valueε of C de ι a y(c) will occur for all connectionε from E2 except El. Thus movement of E2 from section SI to S2 will likely show a negative total and thus an improvement (unlesε element El iε the only element with worεe caεe delay W(c) > U(c)/2) . Regarding equation 9 above, note that unitε of C de ι ay (c) and C de i a y(E) are time unitε whereas units of the number of cut line croεεingε N a f ter - ^efore are pure numberε. In one embodiment, the converεion of unitε iε made by specifying units of C de i ay (c) in tenthε of nanoεeconds, and adding the reεultant C de ι ay (E) to the number N after - N bef0 r e . In another embodiment, the fact that εucceεsive cut lines divide smaller areas iε taken into account by multiplying N after N before by a factor proportional to the dimenεion which iε being partitioned by the cut line. Thuε the formula for coεt of moving an element becomeε ( 9a ) Coεt E = S * (N af te r - N before ) + C de ι ay (E) where S repreεentε the dimenεion (meaεured in number of rowε or columnε) of the portion being partitioned perpendicular to the cut line, which iε related to the physical separation the cut line iε likely to cauεe. The coεt of moving an element acroεε a cut line iε calculated for each element in the portion being partitioned, and for each element the effect of each connection to that element iε conεidered. The flow of εtepε εhown in Fig. 10 when using the suggested limits of the present invention for initial placement uεing a min-cut partitioning algorithm iε to cycle through stepε 102, 103, 104, and 111 once for each cut line. Thuε the calculation of εuggeεted limitε U(c) iε performed many timeε during the initial placement activity. In one embodiment, the path analyεiε εtepε 103 and 104 are repeated for all εucceεsive cut lines until initial placement iε completed. In another embodiment, the εuggeεted limitε are not recomputed (using stepε 103 and 104 of Fig. 10) after the cut lineε dividing the firεt εeveral cluεterε are determined. For example, in a logic array chip having 256 logic blockε, the firεt partitioning will divide the logic into two groupε occupying about 100-150 logic blockε, then the εecond and third cut lineε will divide the logic into groups occupying about 50-75 logic blocks each. Fourth, fifth, sixth, and seventh cut lineε will divide the ' logic into groupε occupying about 25 to 50 logic blockε each. It may be decided to cease the path analyεiε εtepε 103 and 104 after the εeventh or fifteenth cut lineε have been completed, and perform the remaining partitioning uεing delay limitε computed earlier, thuε εaving calculation time. Lower bounds will be lower than would be calculated using updated partitioning information, but the benefit of earlier lower bounds greater than zero reflected in earlier calculated suggested delay limits U(c) will continue through subsequent partitioning stepε. Calculation of better and worεe caεe delayε performed in εtep 111 may continue for subsequent partitioning stepε even if iterating through stepε 103 and 104 of the path analysiε iε diεcontinued. Suggeεted delay limitε U(c) are calculated at εtep 104 of Fig. 10 using lower bound delays L(c) just as was done in other examples diεcuεεed earlier, for example during routing. However, accurate lower bound numberε are not yet known εince elementε are not yet placed. Fig. 18 illuεtrateε the aεεumed lower bound connection delayε for elementε shown in Fig. 16 for use in the suggested limit calculation of step 104. Fig. 18 representε the layout after cut line 171 is establiεhed. For the purpoεe of illuεtration, in Fig. 18, element E2 remainε in εection Si. In calculating lower bound connection delays L(c), the elements are asεumed to be in that part of the region cloεeεt to the elements they connect to. This means the lower bound connection extends from a different part of a region depending upon where the connection extends. For element E9, for example, the element is shown in the lower right corner of region S2 for connection E9-E11 and E9 is shown at the left edge of section S2 for connection E2-E9. Therefore, at this stage of the partitioning, in step 104 of Fig. 10, only connections E2-E10 and E9-E11 show a significant lower bound delay resulting from the partitioning. Other connectionε are shown as having a minimal delay corresponding to the closeεt poεεible logic blockε. Connection delayε are taken from the table of delayε for the minimum diεtanceε εhown. Theεe lower bound delays are then used in calculating a suggested connection delay limit, for example U(E2-E10) for connection E2-E10. A Placement Improvement Algorithm - Use of Suggested Limitε One placement improvement algorithm with which the present invention is uεed is a cycling of elementε among three poεitions. Conεidering the context of Fig. 10, placement improvement occurε at εtep 111. During εtep 111, each logic element in the logic deεign is considered for movement to another place. The placement improvement algorithm cannot depend on finding an empty place to move an element, so, in general, placement improvement involves εwapping two logic elementε or cycling εeveral logic elementε. The following deεcription relateε to cycling three elementε. Fig. 19 εhows element 191 being considered for a change in placement. Element 192 is in the prime candidate place. But moving element 192 to allow placement improvement for element 191 may have a harmful effect overall. Therefore, other neighbors of element 192, in one embodiment eight neighbors, are also considered for the new position of element 191. Element 194, for example, is considered along with element 192 as a place to move element 191. For each of nine elementε, including elements 192 and 194, the most desirable new location for movement is also considered, along with neighbors. For element 192, the most desirable move is to the location of element 193, which can then be moved to the location of element 191, completing the triangle. For element 194, the most desirable element is 195. Thus to evaluate moves for element 191, 81 triangles can be conεidered, and a beεt iε choεen. In a prior art embodiment thiε prime candidate deεtination for element 191 iε the center of gravity of those elements having connections to element 191. In an embodiment uεing the present invention, the prime candidate for movement of element 191 is the place having the loweεt timing coεt for connections to element 191. In yet another embodiment the prime candidate 192 is in a place midway between the center of gravity of 191's connectionε and the place having the loweεt timing coεt for connectionε to element 191. Many other combinations of theεe two meanε of selecting a prime candidate for moving an element can be used. A presently preferred method uεeε the place midway between the prior art center of gravity and the place having the loweεt timing coεt. Suggeεted delay limits U(c) from step 104 are uεed to calculate this timing cost. Fig. 20 showε how the coεt of a particular placement is computed by comparing eεtimated delayε D(c) on the connections to suggeεted delay limits U(c) for those connections. Estimated delays are stored in another table. The table of estimated delayε iε determined by aεεuming that the faεteεt routing reεourceε in a chip having routing resources of more than one speed are unavailable. Several chipε commercially available have a limited number of very faεt routing reεourceε, and because of their scarcity these resourceε are generally not available for moεt connectionε . For estimating delay it is thus reasonable to asεume theεe faεt reεourceε are unavailable. The x and y coordinates of the prime candidate destination are calculated from the following formulas: (12) G x = ∑[cost(c) * X(c) ] / ∑[cost(c) ] (13) G y = ∑[cost(c) * Y(c) ] / ∑[cost(c) ] where coεt(c) iε the timing coεt of a connection c attached to the element being moved, X(c) is the X coordinate of the element at the other end of the connection, Y(c) iε the Y coordinate of the element at the other end of the connection and the summation is performed over all connections c which connect to the element being moved. The timing cost, coεt(c) iε illuεtrated in Fig. 20. Coεt(c) equalε a fixed delay F (for example 10 nε) whenever eεtimated delay iε equal to the εuggeεted delay limit U(c) . For εmaller eεtimated delay, coεt(c) decreaεeε linearly, reaching zero when eεtimated delay is ϋ(c) - F. For eεtimated delays greater than U(c) , cost(c) increaεeε linearly with a slope greater than 1. Of course other valueε than 10 nε may be εelected for the coεt at the delay limit, and will depend upon the εpeed of the part among other factors. One preferred slope is 2.0, though other slopeε may be preferred after further teεting. Aε illuεtrated in Fig. 19, εome collection of alternative positionε cloεe to the prime candidate deεtination iε preferably evaluated in order to find the beεt triangle for cycling of element 191. It iε clear from the above deεcription that many different methodε for selecting alternatives to the prime candidate can be used. The placement improvement algorithm calculates estimated connection delay lower bounds for the new placements after all elements in the deεign are evaluated for movement and improved placementε have been determined (εtep 111 of Fig. 10) . Aε εhown in Fig. 10, theεe new lower bound delayε are provided to the path analyεiε toolε which again compute εuggeεted delay limitε U(c) . In one embodiment, the default number of cycles through the stepε of Fig. 10 for placement improvement is three. At stepε 103 and 104, resulting slacks are computed and delay limits are suggeεted. Theεe εuggeεted delay limitε are then uεed by the placement improvement algorithm to evaluate the next move of an element, and thuε to improve the εelected placement. If a path iε determined to have low εlack, the εuggeεted delay limitε computed at εtep 104 will be uεed by the placer at step 111 to select the next move so the delay limitε can be met. The placer gives higher weight to connections having tight limits so that elements attached by critical connections are lesε likely to be εeparated by a εlow connection. During placement improvement, lower bound delayε assuming the fasteεt poεεible connectionε between placed elementε can be eεtimated at step 102 by assuming the elements are routed on the fasteεt poεεible routeε available for connecting the logic blockε in which the connected elementε are placed. Aε diεcuεεed above under initial placement, lower bound connection delayε are looked up in a table. (The table may be a function of x and y distances between the two elements or may be a function of the x and y coordinates of the two elements) . For lower bound delays, it may be asεumed that multiple connectionε can have access to the same physical lines. After step 102, the set of lower bound connection delays is communicated to the path analysiε tool, which at εtep 103 computeε lower bound path delayε and εlackε, and at εtep 104 computeε new εuggeεted delay limitε U(c) for the connectionε. The path analysis tool can also compute a corresponding lower bound clock period. This iε the minimum clock period which could be uεed to operate the device if every connection were routed on itε fastest route. An error mesεage iε returned to the uεer if a clock period lower than thiε lower bound haε been requeεted. Baεed on εuggeεted limitε computed at step 104, the placer at step 111 will then attempt a set of alternative placements which will meet the suggeεted delay limitε reεulting from the deεired clock period. In one embodiment, the placer will continue to operate and find the beεt available placement if the lower bound delayε indicate that timing conεtraintε can not be met. Other embodimentε will become obvious to those skilled in the art in light of the above discloεure, including methodε for determining delay limitε uεeful for mask programmed devices and custom devices. Such embodiments are intended to fall within the scope of the present invention.

Claims: CLAIMS 1. A method for laying out a logic deεign made up of logic elementε and connectionε onto a logic device having logic blocks and wire segmentε which can form routes, comprising the stepε of: εpecifying said logic design in machine readable form; estimating lower bound connection delays L(c) for connectionε in εaid logic deεign; εelecting delay limitε U(c) for each of εaid connectionε, each of εaid delay limitε being εelected to be greater than or equal to a corresponding one of said lower bound connection delays; performing a layout step for which actual or estimated delayε D(c) reεult, εaid layout step being performed such that at leaεt εome of said delay limits U(c) are not exceeded by said actual or eεtimated delayε D(c) ; and completing the layout of εaid logic deεign onto said logic device. 2. A method for laying out a logic design onto a logic device as in Claim 1 in which said layout step compriseε forming εaid logic elementε into groupε to be laid out onto correεponding portionε of εaid logic device. 3. A method for laying out a logic deεign onto a logic device aε in Claim 1 in which εaid layout step compriseε εelecting initial placementε of εaid logic elementε in εaid logic blockε. 4. A method for laying out a logic deεign onto a logic device aε in Claim 3 in which εaid initial placement εtep iε performed by a mincut algorithm. 5. A method for laying out a logic deεign onto a logic device as in Claim 1 in which said layout step comprises improving placement of logic elements of εaid logic deεign into correεponding logic blockε of εaid logic device. 6. A method for laying out a logic deεign onto a logic device as in Claim 1 in which εaid layout step compriseε routing of said connections along wiring segmentε of said logic device to connect ones of said logic elements which have been placed in said logic blocks, thereby to implement said logic design. 7. A method for laying out a logic design onto a logic device as in Claim 6 comprising the further step after said step of routing of said connections along wiring segments, of: deleting any completed routes which do not meet said revised delay limits, and routing unrouted connections in order of decreaεing ratio of lower bound to delay limit. 8. A method for laying out a logic deεign onto a logic device as in Claim 1 comprising the further stepε of: computing achieved delayε D(c) computing reviεed delay limitε Ur(c), εaid revised delay limits being a function of said lower bounds L(c) and said achieved delays D(c); performing a next layout step on said logic design using said revised delay limitε Ur(c). 9. A method for laying out a logic deεign onto a logic device as in Claim 8 in which each of said revised delay limits is a function of εlack S(c) for that connection, slack S(c) being the difference between earliest required signal arrival time R(c) of that connection and latest actual signal arrival time A(c) of that connection. 10. A method for laying out a logic design onto a logic device as in Claim 9 in which said revised delay limits are computed from the formula Ur(c) = D(c) + f(c) * S(c) where Ur(c) represents said reviεed delay limitε; f(c) is a fraction leεε than or equal to 1; and S(c) is said slack. 11. A method for laying out a logic deεign onto a logic device as in Claim 10 comprising the εtepε performed after εaid step of computing revised delay limitε of iteratively: again calculating said slackε S(c); and if εaid εlackε S(c) are not εufficiently near zero, further reviεing εaid revised delay limitε by the formula Ur(c) ne w = Ur(c) 0 ι d + f(c) * S(c) until εaid εlackε are εufficiently near zero. 12. A method for laying out a logic design onto a logic device as in Claim 10 in which said fraction f (c) is computed from the formula f(c) = weight (c) / max [weight (p) ] where weight (c) = D(c) - L(c) D(c) = estimated or achieved delay for connection c L(c) = lower bound achievable delay for connection c weight (p) = ∑ weight (c) for all connections c on path p max [weight (p) ] is weight (p) on the path with maximum weight that includes connection c 13. A method for laying out a logic design onto a logic device as in Claim 8 in which said layout step compriseε εelecting a route to implement each said connection. 14. A method for laying out a logic design onto a logic device as in Claim 13 comprising the further εteps after said step of computing revised delay limits, of: deleting any completed routes which do not meet said revised delay limitε, and routing unrouted connectionε in order of decreaεing ratio of previously achieved delay to delay limit. 15. A method for laying out a logic design onto a logic device aε in Claim 8 in which εaid layout step comprises placing logic elements in corresponding logic blocks. 16. A method for laying out a logic design onto a logic device as in Claim 15 compriεing the further step after said step of computing revised delay limitε of placing additional logic elementε in correεponding logic blockε so as not to violate said reviεed delay limitε. 17. A method for laying out a logic deεign made up of logic elements and connections onto a logic device having logic blocks and wire segmentε which can form routeε, compriεing the steps of: a) specifying said logic design in machine readable form; b) selecting delay limits U(c) for each of said connections; c) performing an initial placement step for which estimated delays D(c) result, said initial placement step being performed using a modified min-cut partitioning algorithm which determines whether a logic element shall be moved acrosε a cut line baεed on: 1) minimizing the number of connectionε crossing said cut line, and 2) minimizing delay incurred by moving said element acrosε said cut line; and e) completing the layout of said logic design onto said logic device. 18. A method for laying out a logic design as in Claim 17 in which said step of minimizing delay incurred by moving said element across said cut line compriseε minimizing delay on at leaεt one path of which at leaεt one of εaid connectionε connected to said element is a part. 19. A method for laying out a logic design as in Claim 17 in which said step of minimizing delay incurred by moving said element acrosε εaid cut line compriseε minimizing the sum of timing costε on connectionε to said element. 20. A method for laying out a logic deεign aε in Claim 17 in which each of εaid timing coεtε is a function of said delay limitε U(c), and also a function of worse timing coεt W(c) of a connection which croεεeε εaid cut line and better timing coεt B(c) of a connection which doeε not croεε εaid cut line. 21. A method for laying out a logic deεign aε in Claim 20 in which εaid worεe timing cost W(c) and said better timing cost B(c) are functions of estimated delayε computed by assuming that a route used by εaid connection iε the faεtest route available to that connection without using routing resourceε in εaid logic device specifically designated to be fast. 22. A method for laying out a logic design as in Claim 20 wherein εaid function of worse timing coεt W(c) and better timing cost B(c) iε a function of the difference between said worse timing cost W(c) and εaid better timing coεt B(c). 23. A method for laying out a logic deεign aε in Claim 22 in which said function of the difference is determine as follows: if W(c) < U(c)/2, C de i ay (c) = 0; if U(c) > W(c) > U(c)/2, C de ι ay (c) = W(c) - B(c); and if W(C) > U(C) , Caeiay(c) = W(c) - B(c) + [W(c) - (greater of B(c), U(c)] . 24. A method for laying out a logic design made up of logic elements and connectionε onto a logic device having logic blockε and wire εegmentε which can form routeε, compriεing the εteps of: a) specifying said logic design in machine readable form; b) selecting delay limits U(c) for each of said connections; c) determining estimated delays D(c) for each of said connectionε; d) performing a placement improvement εtep in which a εet of poεitionε εelected for cycling a plurality of logic elementε in εaid logic deεign are a function of timing costs for said plurality of logic elements, each said timing coεt coεt(c) being a function of: D a correεponding delay limit U(c) , and 2) a correεponding eεtimated delay D(c); and e) completing the layout of εaid logic deεign onto said logic device. 25. A method for laying out a logic design aε in Claim 24 in which said estimated delay D(c) asεumeε a route for each connection c is the fasteεt route available to that connection without using routing resourceε in εaid logic device εpecifically deεignated to be faεt. 26. A method for laying out a logic deεign aε in Claim 24 in which εaid function of timing coεtε for εaid plurality of logic elementε iε a function of connection coεtε coεt(c) for each connection to each of εaid plurality of logic elementε. 27. A method for laying out a logic deεign aε in Claim 26 in which εaid function of connection coεtε coεt(c) iε the εum of εaid connection coεtε coεt(c) . 28. A method for laying out a logic deεign aε in Claim 24 in which each of εaid poεitionε εelected for cycling a plurality of logic elementε in εaid logic design are selected from the formulas G x = ∑ [ cost (c ) * X (c ) ] / ∑ [ cost ( c ) ] G y = ∑ [ cost (c ) * Y ( c ) ] / ∑ [ coεt ( c ) ] where coεt(c) iε the timing coεt of a connection c attached to one of εaid plurality of logic elements, X(c) is the X coordinate of the element at the other end of said connection c, Y(c) is the Y coordinate of the element at the other end of εaid connection c; and εaid εummation ∑ iε performed over all connectionε c which connect to said logic element. 29. A method for laying out a logic design as in Claim 28 in which each of said timing coεtε coεt(c) iε equal to a εet value F when εaid eεtimated delay D(c) iε equal to εaid delay limit U(c), decreaεes to zero as a firεt function of the difference D(c) - U(c) for eεtimated delay D(c) less than U(c), and increaseε aε a εecond function of eεtimated delay D(c) minuε delay limit U(c) for eεtimated delay greater than said delay limit. 30. A method for laying out a logic design as in Claim 29 in which said first function is F + D(c) - U(c), and said second function is F + (2 * (D(c) - U(c))).

Inventors: CHENE MON-REN, FRANKLE JON A, CHENE, MON-REN, FRANKLE, JON, A.
Applicants: XILINX INC, XILINX, INC.
Application year: 1993
Main classification: G06F15
IPC codes: G06F17