US 20050028122 A1 Abstract A method for determining component placement in a circuit includes forming a tree structure that defines the placement of each of a plurality of components associated with the tree structure on a first side, a second side or on both sides of a symmetry line, with at least one component tagged for symmetric placement on both sides of a symmetry line; performing at least one search of the tree structure to determine an initial placement of a subset of the components; and performing another search of the tree structure to determine a final placement of the subset of components whereupon at least a part of each component tagged for symmetric placement is positioned on each side of the symmetry line. The method can be embodied as instructions stored on a computer readable medium which, when executed by a processor, cause the processor to implement the method.
Claims(38) 1. A computer-implemented method for determining component placement in a circuit comprising:
(a) receiving a plurality of components, with each component having associated therewith a width, a height and one of a symmetric and a non-symmetric placement constraint; (b) creating a tree structure that expresses the placement constraints for the plurality of components, the tree structure including:
a global root node that represents a global symmetry line,
a leaf representing each component, with the component associated with each leaf tagged for placement on a first side, a second side, or on both sides of the global symmetry line, and
at least one interior node that represents a slicing line that establishes a relative placement of at least two components with respect to each other on the same side of the global symmetry line;
(c) performing at least one structured search of the tree structure to determine the initial placement of components on the first side, the second side or both sides of the global symmetry line based on the tagging of each component and the connections of the leaves, the global root node and the interior nodes to form the tree structures; and (d) performing another structured search of the tree structure to determine the final placement of components based on at least one of the widths and heights of the components. 2. The method of 3. The method of each slicing line has a direction that is one of parallel and perpendicular to the global symmetry line; and step (c) includes the placement of said at least two components with respect to each other as a function of the direction of the slicing line. 4. The method of 5. The method of each node has a pair of branches descending therefrom; and each branch couples the node from which it descends to (1) one of the interior nodes, (2) one of the leaves, or (3) a null. 6. The method of placing on one side of the global symmetry line, a first component which is tagged for such placement and which is represented by a leaf which is connected to said interior node via one of its branches; and placing on a side of the first component opposite the global symmetry line a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said interior node via the other of its branches. 7. The method of 8. The method of placing a first component which is tagged for placement on one side of the global symmetry line and which is represented by a leaf which is connected to said global root node via one of its branches; and placing on a side of the first component opposite the global symmetry line, a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said global root node via the other of its branches. 9. The method of 10. The method of placing on one side of the global symmetry line, a first component which is tagged for such placement and which is represented by a leaf which is connected to said interior node via one branch descending therefrom; and placing one of above and below the first component, a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said interior node via the other branch descending therefrom. 11. The method of connected to a node at the lowest level of the tree structure via one branch descending from said node; or connected to said node via the other branch descending therefrom and no other leaf is connected to said interior node via the one branch descending therefrom. 12. The method of 13. The method of zero when the leaf representing the component tagged for pair-symmetric placement is connected directly to a node at the lowest level of the tree structure; or the greater of (1) a sum of the width(s) or height(s) of each component placed on the first side of the global symmetry line prior to placement of copies of the component tagged for pair-symmetric placement or (2) a sum of the width(s) or height(s) of each component placed on the second side of the global symmetry line prior to placement of copies of the component tagged for pair-symmetric placement. 14. The method of 15. The method of for each component tagged for self-symmetric placement, the first part of the component is one-half of the component and the second part of the component is the other half of the component; and for each component tagged for asymmetric placement, the first part of the component is a first percentage of said component, the second part of the component is a second percentage of said component, and the sum of the first and second percentages equal one-hundred percent. 16. The method of 17. The method of defining an isolation structure along at least one side of at least one component; and in step (d), placing the one side of said at least one component no closer to another component or the global symmetry line than said isolation structure. 18. The method of amending the tree structure in at least one of the following manners:
(1) changing a direction of at least one slicing line;
(2) re-tagging at least one component from placement on the first side of the global symmetry line to placement on the second side of the global symmetry line, or vice versa;
(3) exchanging the location of two components in the tree structure;
(4) exchanging the location of one leaf and one interior node, and any interior node and/or leaf connected to said one interior node; and
(5) exchanging the width and height of a component associated with at least one leaf; and
repeating steps (c) and (d) for the amended tree structure. 19. The method of the tree structure includes a group which is tagged for placement on the first side, the second side, or both sides of the global symmetry line; the group includes a group tree structure having at least one leaf connected to a local root node that represents a local symmetry line; the component associated with each leaf of the group tree structure is tagged for placement on a first side, a second side, or on both sides of the local symmetry line; and the method further includes:
performing at least one structured search of the group tree structure to determine an initial placement of each component thereof on the first side, the second side or both sides of the local symmetry line based on the tagging thereof; and
performing another structured search of the group tree structure to determine a final placement of each component thereof based on at least one of the widths and the heights of the components.
20. The method of the group tree structure includes at least one local interior node connected between the local root node and the at least one leaf; and the step of performing at least one structured search of the group tree structure includes placing at least two components associated with the group tree structure with respect to each other as a function of a direction of a slicing line represented by the at least one local interior node of the group tree structure. 21. The method of step (c) includes performing the at least one structured search of the tree structure to determine the initial placement of the group on the first side, the second side, or both sides of the global symmetry line based on the tagging thereof; and step (d) includes performing the other structured search of the tree structure to determine the final placement of the group. 22. The method of 23. The method of the local root node is connected directly to either the root node or one of the interior nodes of the tree structure; or the at least one leaf of the group tree structure is connected directly to the local root node. 24. A computer-implemented method for determining component placement in a circuit comprising:
(a) receiving a plurality of components each having one of a symmetric and a non-symmetric placement constraint associated therewith; (b) creating a tree structure that expresses the placement constraints for the plurality of components, the tree structure including a plurality of nodes and a plurality of leaves wherein:
the plurality of nodes includes a global root node that represents a global symmetry line and a local root node connected to the global root node,
the local root node represents a local symmetry line,
a group tree structure including the local root node and at least one leaf connected thereto is tagged for placement on a first side, a second side or on both sides of the global symmetry line, and
each leaf represents one of the components, with the component associated with each leaf of the group tree structure tagged for placement on a first side, a second side or on both sides of the local symmetry line, with the component associated with each leaf of the group tree structure having at least one of a height and a width associated therewith;
(c) performing at least one structured search of the group tree structure to determine the initial placement of components thereof on the first side, the second side or both sides of the local symmetry line based on the tagging of each component; and (d) performing another structured search of the group tree structure to determine the final placement of the components thereof based on at least one of the widths and heights of the components. 25. The method of performing at least one structured search of the tree structure to determine the initial placement of the group tree structure on the first side, the second side or both sides of the global symmetry line based on the tagging of the group tree structure; and performing another structured search of the tree structure to determine the final placement of the group tree structure. 26. The method of 27. A computer-implemented method for determining component placement in a circuit comprising:
(a) forming in the memory of the computer a tree structure that defines the placement of each of a plurality of components associated with the tree structure on a first side, a second side, or symmetrically on both sides of a symmetry line, with at least one component tagged for symmetric placement on both sides of a symmetry line; (b) performing at least one search of the tree structure to determine an initial placement of a subset of the components on the first side, the second side, or on both sides of the symmetry line; and (c) performing another search of the tree structure to determine a final placement of the subset of components, wherein at least a part of each component tagged for symmetric placement is positioned on each side of the symmetry line. 28. The method of 29. The method of the tree structure has a leaf for each component and at least one node connecting the leaves; and the initial placement of the components occurs as a function of a vertical or horizontal line associated with at least one of a root node and an interior node of the tree structure. 30. The method of pair-symmetric placement; self-symmetric placement; and asymmetric placement. 31. The method of (d) forming a new tree structure in at least one of the following manners:
(1) changing a direction of a line associated with at least one of the nodes of the tree structure;
(2) amending the tree structure to re-define the placement of at least one component from one side of the symmetry line to the other side of the symmetry line;
(3) exchanging the location of two leaves in the tree structure;
(4) exchanging the location of two nodes in the tree structure;
(5) exchanging the location of a leaf and a node in the tree structure; and
(6) exchanging the width and height of a component associated with a leaf of the tree structure; and
(e) repeating steps (b) and (c) for the new tree structure. 32. The method of repeating steps (d) and (e) a plurality of times; determining for each tree structure a cost that is related to the goodness of the final placement of the subset of components made utilizing said tree structure; and selecting for implementation the final placement of the subset of components made utilizing the tree structure having the most favorable cost associated therewith. 33. The method of 34. A computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to perform the steps of:
(a) receive data regarding a plurality of components, with the data for each component having associated therewith a width, a height and one of a symmetric and a non-symmetric placement constraint for the component; (b) create a tree structure that expresses the placement constraints for the plurality of components, the tree structure including:
a global root node that represents a global symmetry line,
a leaf representing each component, with the component associated with each leaf tagged for placement on a first side, a second side, or on both sides of the global symmetry line, and
at least one interior node that represents a slicing line that establishes a relative placement of at least two components with respect to each other on the same side of the global symmetry line;
(c) perform at least one structured search of the tree structure to determine the initial placement of components on the first side, the second side or both sides of the global symmetry line based on the tagging of each component; and (d) perform another structured search of the tree structure to determine the final placement of components based on at least one of the widths and heights of the components. 35. A computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to perform the steps of:
(a) receive data regarding a plurality of components, with the data for each component including one of a symmetric and a non-symmetric placement constraint for the component; (b) create a tree structure that expresses the placement constraints for the plurality of components, the tree structure including a plurality of nodes and a plurality of leaves wherein:
the plurality of nodes includes a global root node that represents a global symmetry line and at least one local root node connected to the global root node,
the local root node represents a local symmetry line,
a group tree structure includes the local root node and at least one leaf connected thereto, where the group tree structure is tagged for placement on a first side, a second side or on both sides of the global symmetry line, and
each leaf represents one of the components, with the component associated with each leaf of the group tree structure tagged for placement on a first side, a second side or on both sides of the local symmetry line, with the component associated with each leaf of the group tree structure having at least one of a height and a width associated therewith;
(c) perform at least one structured search of the group tree structure to determine the initial placement of components thereof on the first side, the second side or both sides of the local symmetry line based on the tagging of each component; and (d) perform another structured search of the group tree structure to determine the final placement of the components thereof based on at least one of the widths and heights of the components. 36. A computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to perform the steps of:
(a) form in the memory of the computer a tree structure which defines the placement of each of a plurality of components associated with the tree structure on a first side, a second side or symmetrically on both sides of a symmetry line, with at least one component tagged for symmetric placement on both sides of a symmetry line; (b) perform a search of the tree structure to determine an initial placement of a subset of the components on the first side, the second side or on both sides of the symmetry line; and (c) perform another search of the tree structure to determine a final placement of the subset of components, wherein at least one of a copy of or a part of each component tagged for symmetric placement is positioned on each side of the symmetry line. 37. The method of (d) form a new tree structure in at least one of the following manners:
(1) amend component placement information associated with at least one of the nodes of the tree structure;
(2) amend the tree structure to re-define the placement of at least one component from one side of the symmetry line to the other side of the symmetry line;
(3) exchange the positions of two leaves in the tree structure;
(4) exchange the positions of two nodes in the tree structure;
(5) exchange the positions of a leaf and a node in the tree structure; and
(6) exchange a width and a height of a component associated with a leaf of the tree structure; and
(e) repeat steps (b) and (c) for the new tree structure. 38. The method of repeat steps (d) and (e) a plurality of times; determine for each tree structure a cost that is related to the goodness of the final placement of the subset of components made utilizing said tree structure; and select the final placement of the subset of components made utilizing the tree structure having the most favorable cost associated therewith. Description This application claims priority from U.S. Provisional Patent Application No. 60/415,625, filed Oct. 2, 2002. 1. Field of the Invention The present invention relates to circuit design and, more particularly, to component placement in a circuit design. 2. Description of the Prior Art Integrated circuit and electronic board/package design is subject to complex geometric and electrical rules governing the allowed placement of components. Component placements which fail to abide by these rules may occupy too much area to be economically manufactured, achieve levels of desired performance far below those specified at the outset of the design process, or even fail to perform their desired function correctly. A “component” may be an individual electronic device (for example, a transistor) or a set of pre-placed devices to be treated as a single, atomic placeable object. A “group” may be a hierarchy of placed components, such as several devices of a sub-circuit, or several sub-circuits placed in a circuit to also be treated as single, atomic object. A component is conventionally specified by a rectilinear, typically rectangular, outline which completely encompasses its internal geometry and any extra space that must be included around the exterior of the component to ensure compliance with manufacturing rules that specify allowable distances between components. The result of geometrically arranging a plurality of such components on the surface of an IC chip or a board is called a “placement”, or a “layout”, or a “floorplan”. It is conventional to optimize component placements to minimize some combination of the overall area of a layout, the length of conducting wires (also called “nets”) that connect the components, and the delay to propagate an electrical signal along selected paths of the longest wires in the design. For placement of digital components, strategies of this type often suffice. However, for placements intended to create layouts that incorporate non-digital components, for example, analog components, mixtures of analog and digital components (called “mixed-signal” designs), radio-frequency components (“RF”) and microwave-frequency components, among others, additional geometric constraints are often imposed. These additional geometric constraints maximize the precision with which various electrical quantities (current, voltage, charge, capacitance, inductance, etc.) may be created or manipulated by these placed components, thus enhancing the likelihood of correct electrical function of the final manufactured design. These geometric constraints come in several well-known styles. The geometric placement constraint styles of relevance to the present invention include symmetries, groups and isolation structures. Symmetries: Numerous prior art techniques exist for generating a layout of components when no symmetry, grouping, and/or isolation constraints are present. These conventionally comprise a method to represent the location of each placed component and a method to iteratively perturb or amend this representation to incrementally improve it to a best-quality placement, as measured by a cost function that quantifies the goodness of the placement. The present invention is a new method for placement that supports standard prior art placement goals for digital components, e.g., wirelength, area, etc., and also supports symmetry, grouping and isolation requirements often associated with analog components. With reference to Individual components carry geometric rules that determine the minimum allowed proximity (distance) to each other individual component. In particular, it is normal that placed components may not overlap. The process of “placement” assigns to each rectangular component an absolute (x, y) location, indexed relative to x (horizontal) and y (vertical) coordinate axes suitably defined for the layout surface itself. With reference to In the simplest form of symmetry, a pair-symmetric constraint mandates that a pair of identical components must be placed as “mirror reflections” of each other about the symmetry line. For a vertical symmetry line, this means identical y (vertical) coordinates, but x coordinates that locate each component an identical distance D away from the symmetry line. With reference to With reference to In addition, the pair of components may be required to be in a specific relative orientation with respect to the symmetry line. This can apply for either the vertical or horizontal cases. As shown in Another type of symmetry constraint, shown in With reference to As shown in With reference to With reference to Groups: With reference to With reference to With reference to Isolation Structures: With reference to With reference to All of these three styles of constraints, namely, symmetries, groups and isolation structures, can co-exist in one placement. Individual components may participate in symmetry constraints, be parts of groups, or have individual isolation structures. Likewise, groups themselves can have internal symmetries, participate in group/hierarchical symmetries external to themselves, and have group-level isolation structures. Groups can be nested inside each other to define arbitrary layout hierarchies. Many prior art methods exist for generating a layout of components when symmetry, grouping, and isolation constraints are not needed. These conventionally comprise a method to represent the location of each placed component, and a method to iteratively perturb this representation to incrementally improve it to a best-quality placement, as measured by an auxiliary cost function. These prior art methods, however, do not work when the presence of arbitrary combinations of symmetry, grouping, or isolation constraints exist. While prior art methods exist that partially address some of these constraints, all of the prior art methods for handling symmetries suffer from at least one of the following problems: -
- They cannot guarantee the ultimate geometric legality of the placement, e.g., components may overlap;
- They cannot guarantee that all symmetry constraints are satisfied in the final placement;
- The process of evaluating the feasibility of satisfying all symmetries for each placement solution candidate is inefficient, e.g., quadratic in the number of components;
- They cannot support the full range of required constraints required, namely, self and pair symmetry, asymmetry and non-symmetry, fixed symmetric offsets, groups, group and hierarchical symmetries, isolation structures for components and groups.
The present invention overcomes the above problems and others by providing a method that utilizes a novel data structure called a tree structure that supports all of the foregoing constraints. Every placement solution candidate generated during iterative improvement will satisfy all the constraints. The method of generating these solution candidates, and the method of evaluating the cost function which determines the quality of each solution candidate, are both novel and efficient. The method requires only a single binary tree data structure with suitable annotations. Evaluating the quality of any placement solution requires only searches of this tree structure. In particular, the method does not require the construction of any secondary or auxiliary data structures to check that the constraints can be met, or to evaluate the cost of a placement. The invention is a computer-implemented method for determining component placement in a circuit formed on a substrate, such as a printed circuit board or a semiconductor, i.e., an integrated circuit. The method includes (a) receiving a plurality of components, with each component having associated therewith a width, a height and one of a symmetric and a non-symmetric placement constraint and (b) creating a tree structure that expresses the placement constraints for the plurality of components. The tree structure includes a global root node that represents a global symmetry line, a leaf representing each component, with the component associated with each leaf tagged for placement on a first side, a second side, or on both sides of the global symmetry line, and at least one interior node that represents a slicing line that establishes a relative placement of at least two components with respect to each other on the same side of the global symmetry line. The method further includes (c) performing at least one structured search of the tree structure to determine the initial placement of components on the first side, the second side or both sides of the global symmetry line based on the tagging of each component and the connections of the leaves, the global node and the interior nodes to form the tree structure; and (d) performing another structured search of the tree structure to determine the final placement of components based on at least one of the widths and heights of the components. Each structured search can be a depth-first search. Each slicing line can have a direction that is parallel or perpendicular to the global symmetry line and step (c) can include the placement of said at least two components with respect to each other as a function of the direction of the slicing line. Step (c) can include, for components tagged for placement on the same side of the global symmetry line, placing a component associated with a leaf positioned lower in the tree structure closer to the global symmetry line than a component associated with a leaf positioned higher in the tree structure. Each node can have a pair of branches descending therefrom and each branch can couple the node from which it descends to (1) one of the interior nodes, (2) one of the leaves, or (3) a null. Step (c) can include, for an interior node that represents a slicing line that is parallel to the global symmetry line, placing on one side of the global symmetry line, a first component which is tagged for such placement and which is represented by a leaf which is connected to said interior node via one of its branches and placing on a side of the first component opposite the global symmetry line a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said interior node via the other of its branches. At least one of the leaves representing the first and the second components can be connected directly to said interior node. Step (c) can include, for the global root node, placing a first component which is tagged for placement on one side of the global symmetry line and which is represented by a leaf which is connected to said global root node via one of its branches and placing on a side of the first component opposite the global symmetry line, a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said global root node via the other of its branches. At least one of the leaves representing the first and second components can be connected directly to the global root node. Step (c) can include, for an interior node that represents a slicing line that is perpendicular to the global symmetry line, placing on one side of the global symmetry line, a first component which is tagged for such placement and which is represented by a leaf which is connected to said interior node via one branch descending therefrom and placing above or below the first component, a second component which is tagged for placement on the one side of the global symmetry line and which is represented by a leaf which is connected to said interior node via the other branch descending therefrom. Step (d) can include placing one edge of a component adjacent the global symmetry line when the leaf representing said component is (1) connected to an interior node at the lowest level of the tree structure via one branch descending from said interior node or (2) connected to said interior node via the other branch descending therefrom and no other leaf is connected to said interior node via the one branch descending therefrom. For each component tagged for placement on both sides of the global symmetry line in a pair-symmetric manner, step (c) includes placing first and second copies of said component on the respective first and second sides of the global symmetry line, with each copy of the component having a side closest to the global symmetry line positioned a distance D therefrom. The distance D can be zero when the leaf representing the component tagged for pair-symmetric placement is connected directly to a node at the lowest level of the search tree. Alternatively, the distance D can be the greater of (1) a sum of the width(s) or height(s) of each component placed on the first side of the global symmetry line prior to placement of copies of the component tagged for pair-symmetric placement or (2) a sum of the width(s) or height(s) of each component placed on the second side of the global symmetry line prior to placement of copies of the component tagged for pair-symmetric placement. For each component tagged for placement on both sides of the global symmetry line in a self-symmetric or asymmetric manner, step (c) includes placing a first part of said component on the first side of the global symmetry line and placing a second part of said component on the second side of the global symmetry line. For each component tagged for self-symmetric placement, the first part of the component is one-half of the component and the second part of the component is the other half of the component. For each component tagged for asymmetric placement, the first part of the component is a first percentage of said component, the second part of the component is a second percentage of said component, and the sum of the first and second percentages equal one-hundred percent. For each component tagged for offset symmetric placement on one side of the global symmetry line a distance D from the global symmetry line, step (c) includes placing said component on the one side of the global symmetry line with the side of said component in opposition with the global symmetry line positioned the distance D from the global symmetry line. The method can further include defining an isolation structure along at least one side of at least one component and, in step (d), placing the one side of said at least one component no closer to another component or the global symmetry line than said isolation structure. The method can further include amending the tree structure in at least one of the following manners: (1) changing a direction of at least one slicing line; (2) re-tagging at least one component from placement on the first side of the global symmetry line to placement on the second side of the global symmetry line, or vice versa; (3) exchanging the location of two components in the tree structure; (4) exchanging the position of two nodes in the tree structure; (5) exchanging the location of one leaf and one node, including any node and/or leaf connected to said one node; and/or (6) exchanging the width and height of a component associated with at least one leaf. Once the tree structure is amended, steps (c) and (d) can be repeated for the amended tree structure. The tree structure can include a group which is tagged for placement on the first side, the second side, or both sides of the global symmetry line. The group can include a group tree structure having at least one leaf connected to a local root node that represents a local symmetry line. The component associated with each leaf of the group tree structure can be tagged for placement on a first side, a second side, or on both sides of the local symmetry line. The method can further include performing at least one structured search of the group tree structure to determine an initial placement of each component thereof on the first side, the second side or both sides of the local symmetry line based on the tagging thereof, and performing another structured search of the group tree structure to determine a final placement of each component thereof based on at least one of the widths and the heights of the components. The group tree structure can include at least one local interior node connected between the local root node and the at least one leaf. The step of performing at least one structured search of the group tree structure can include placing at least two components associated with the group tree structure with respect to each other as a function of a direction of a slicing line represented by the at least one local interior node of the group tree structure. Step (c) can include performing the at least one structured search of the tree structure to determine the initial placement of the group on the first side, the second side, or both sides of the global symmetry line based on the tagging thereof, and step (d) can include performing the other structured search of the tree structure to determine the final placement of the group. Step (d) can also include substituting for the final placement of the group the final placement of the components associated therewith. The local root node can be connected directly to either the root node or one of the interior nodes of the tree structure. The at least one leaf of the group tree structure can be connected directly to the local root node. The invention is also a computer-implemented method for determining component placement in an integrated circuit. The method includes (a) receiving a plurality of components each having one of a symmetric and a non-symmetric placement constraint associated therewith and (b) creating a tree structure that expresses the placement constraints for the plurality of components, the tree structure including a plurality of nodes and a plurality of leaves. The plurality of nodes includes a global root node that represents a global symmetry line and a local root node connected to the global root node. The local root node represents a local symmetry line, and the local root node and at least one leaf connected thereto define a group tree structure which is tagged for placement on a first side, a second side or on both sides of the global symmetry line. Each leaf represents one of the components, with the component associated with each leaf of the group tree structure tagged for placement on a first side, a second side or on both sides of the local symmetry line, with the component associated with each leaf of the group tree structure having at least one of a height and a width associated therewith. The method further includes (c) performing at least one structured search of the group tree structure to determine the initial placement of components thereof on the first side, the second side or both sides of the local symmetry line based on the tagging of each component and (d) performing another structured search of the group tree structure to determine the final placement of the components thereof based on at least one of the widths and heights of the components. The method can further include performing at least one structured search of the tree structure to determine the initial placement of the group tree structure on the first side, the second side or both sides of the global symmetry line based on the tagging of the group tree structure, and performing another structured search of the tree structure to determine the final placement of the group tree structure. The method can further include substituting the final placement of the components of a group tree structure for the final placement of the group tree structure. The invention is also a computer-implemented method for determining component placement in an integrated circuit. The method includes (a) forming in the memory of the computer a tree structure that defines the placement of each of a plurality of components associated with the tree structure on a first side, a second side, or symmetrically on both sides of a symmetry line, with at least one component tagged for symmetric placement on both sides of a symmetry line; (b) performing at least one search of the tree structure to determine an initial placement of a subset of the components on the first side, the second side, or on both sides of the symmetry line; and (c) performing another search of the tree structure to determine a final placement of the subset of components, wherein at least a part of each component tagged for symmetric placement is positioned on each side of the symmetry line. Each search can be a depth-first search. The tree structure can have a leaf for each component and at least one node connecting the leaves. The initial placement of the components occurs as a function of placement information, e.g., a vertical or horizontal line, associated with at least one node of the tree structure. The method can further include (d) forming a new tree structure in at least one of the following manners: (1) amending the placement information associated with at least one of the nodes of the tree structure; (2) amending the tree structure to re-define the placement of at least one component from one side of the symmetry line to the other side of the symmetry line; (3) exchanging the location of two leaves in the tree structure; (4) exchanging the location of two nodes in the tree structure; (5) exchanging the location of a leaf and a node in the tree structure; and/or (6) exchanging the width and height of a component associated with a leaf of the tree structure. Steps (b) and (c) can then be repeated for the new tree structure. Steps (d) and (e) can be repeated a plurality of times. For each tree structure, a cost can be determined that is related to the goodness of the final placement of the subset of components made utilizing said tree structure. The tree structure having the most favorable cost associated therewith can be selected for implementation of the final placement of the subset of components. One way to determine the cost for each tree structure includes determining a ratio of (1) a total area of the subset of components in the final placement and (2) a total area of a rectangle that bounds the subset of components in the final placement. The invention is also a computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to (a) receive data regarding a plurality of components, with the data for each component having associated therewith a width, a height and one of a symmetric and a non-symmetric placement constraint for the component and (b) create a tree structure that expresses the placement constraints for the plurality of components. The tree structure can include a global root node that represents a global symmetry line; a leaf representing each component, with the component associated with each leaf tagged for placement on a first side, a second side, or on both sides of the global symmetry line; and at least one interior node that represents a slicing line that establishes a relative placement of at least two components with respect to each other on the same side of the global symmetry line. The instructions can also cause the processor to (c) perform at least one structured search of the tree structure to determine the initial placement of components on the first side, the second side or both sides of the global symmetry line based on the tagging of each component and (d) perform another structured search of the tree structure to determine the final placement of components based on at least one of the widths and heights of the components. The invention is also a computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to (a) receive data regarding a plurality of components, with the data for each component including one of a symmetric and a non-symmetric placement constraint for the component and (b) create a tree structure that expresses the placement constraints for the plurality of components, the tree structure including a plurality of nodes and a plurality of leaves wherein: the plurality of nodes includes a global root node that represents a global symmetry line and at least one local root node connected to the global root node; the local root node represents a local symmetry line; a group tree structure includes the local root node and at least one leaf connected thereto; the group tree structure is tagged for placement on a first side, a second side or on both sides of the global symmetry line; and each leaf represents one of the components, with the component associated with each leaf of the group tree structure tagged for placement on a first side, a second side or on both sides of the local symmetry line, with the component associated with each leaf of the group tree structure having at least one of a height and a width associated therewith. The instructions can also cause the processor to (c) perform at least one structured search of the group tree structure to determine the initial placement of components thereof on the first side, the second side or both sides of the local symmetry line based on the tagging of each component and (d) perform another structured search of the group tree structure to determine the final placement of the components thereof based on at least one of the widths and heights of the components. Lastly, the invention is a computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to (a) form in the memory of the computer a tree structure which defines the placement of each of a plurality of components associated with the tree structure on a first side, a second side, or symmetrically on both sides of a symmetry line, with at least one component tagged for symmetric placement on both sides of a symmetry line; (b) perform a search of the tree structure to determine an initial placement of a subset of the components on the first side, the second side, or on both sides of the symmetry line; and (c) perform another search of the tree structure to determine a final placement of the subset of components, wherein at least one of a copy of or a part of each component tagged for symmetric placement is positioned on each side of the symmetry line. The instructions can further cause the processor to (d) form a new tree structure in at least one of the following manners: (1) amend component placement information associated with at least one of the nodes of the tree structure; (2) amend the tree structure to re-define the placement of at least one component from the one side of the symmetry line to the other side of the symmetry line; (3) exchange the positions of two leaves in the tree structure; (4) exchange the positions of two nodes in the tree structure; (5) exchange the positions of a leaf and a node in the tree structure; and/or (6) exchange the width and height of a component associated with a leaf of the tree structure. Steps (b) and (c) can be repeated for the new tree structure. The instructions can also cause the processor to repeat steps (d) and (e) a plurality of times; determine for each tree structure a cost that is related to the goodness of the final placement of the subset of components made utilizing said tree structure; and select for implementation the final placement of the subset of components made utilizing the tree structure having the most favorable cost associated therewith. The present invention will be described with reference to the accompanying figures where like nomenclature refer to like elements. Moreover, the terms left, right, top, bottom, horizontal, vertical and the like are used with reference to the accompanying figures and are not to be construed as limiting the invention. The present invention is embodied in computer readable program code that executes on a processor of a stand-alone or networked computer or workstation that includes a processor, computer storage, an input/output system, a media drive, such as a disk drive, CD ROM drive, etc., and a computer-useable storage medium capable of storing the computer software that embodies the present invention. Under the control of the computer readable program code, the processor is capable of configuring and operating the computer system in a manner to implement the present invention. Computer systems of the type described above are well known in the art and have not been described herein for purpose of simplicity. With reference to With reference to With reference to The component associated with each leaf Desirably, the computer readable program code causes the processor to randomly create tree structure With reference to From interior node After placing the first instance of component Q, the search algorithm backtracks to interior node Upon determining component A associated with leaf The placement of component A above component Q in Next, search algorithm backtracks to root node The decision to place component B on the sides of components A and Q opposite global symmetry line Next, another structured search of tree structure Next, the search algorithm backtracks to node After placing component Y, the search algorithm backtracks to node In the foregoing description, first and second searches of tree structure With reference to Next, the algorithm backtracks to interior node The algorithm then backtracks to interior node If, however, the width of component A were such that placement of the left side Next, the search algorithm backtracks to root node If desired, subject to maintaining the pair-symmetric placement of components Q and Q′, components A, B, Q, Q′, X and Y can be moved as necessary, either upwardly or downwardly parallel to global symmetry line In the foregoing description, horizontal slicing line With reference to With reference to Once the initial placement of components is complete, another search of tree structure With reference to The initial placement of the remaining components of tree structure With reference to With reference to In the foregoing description, two searches were performed of each search tree to determine the initial layout of components. However, as described above, a single search of the search tree can also be performed to determine the initial layout of components on both sides of global symmetry line With reference to Next, the search algorithm backtracks to interior node Next, since the first and second branches of interior nodes Next, the search algorithm backtracks to node With reference to At a suitable time, the search algorithm performs a search of local tree structure After the search algorithm places a rectangle representing group B, or the component(s) and any local symmetry line(s) associated with group B, above components Z and X, the search algorithm backtracks from leaf At a suitable time, the search algorithm performs a search of local tree structure Thereafter, the search algorithm backtracks to interior node As shown in After the search algorithm places copies of the rectangle representing group C on the left and right sides of local symmetry line Once the initial placement of components associated with tree structure In the foregoing description, the placement of each component with respect to a global or local symmetry line was based on the width of the component for a vertical symmetry line or the height of the component for a horizontal symmetry line. It is often, however, desirable to place an isolation structure on one or more sides of an object or a group in order to isolate it from outside disruptive sources, such as an electrical source, a thermal source, and the like, or to provide additional space to account for variances in manufacturing tolerances. To this end, the component or group associated with each leaf requiring an isolation structure can have associated therewith isolation data (not shown) that the search algorithm can utilize to increase the size of the component or the group to provide the necessary isolation structure on one or more sides thereof. For example, the isolation data can cause the search algorithm to include an isolation structure on the left side, right side, topside and/or bottom side of a component or group as desired. In a similar manner, an isolation structure can be associated with the global root node, a local root node, and/or an internal node. For nodes having isolation data associated therewith, the size associated with each component connected to the node via its branches will be augmented by the isolation structure on one or more sides thereof. With reference to The searches of a tree structure described above may not necessarily result in the most efficient placement of components. In order to automatically generate a new placement of components, the tree structure that resulted in the original placement of components can be amended or perturbed and searches of the thus perturbed tree structure can be performed to determine a new layout of components. For example, Another perturbation can include changing a component tagging whereupon the component placement changes from one side of a symmetry line to the other side of the symmetry line. For example, in Another perturbation of tree structure Another example of a tree perturbation includes swapping a node and a leaf. For example, swapping interior node As can be seen from a comparison of the final layout shown in Moreover, the search algorithm can perform a plurality of tree perturbations, either stochastically and/or heuristically, in order to generate a plurality of different final layouts. More specifically, starting from an initial tree structure, the search algorithm can stochastically or heuristically perturb the original tree structure and then determine therefrom the final layout of components therefor. The search algorithm can then perturb the new tree structure to obtain another new tree structure from which the search algorithm can generate another final layout of components. This process can continue until a desired number of new tree structures and their associated final layouts have been produced. The perturbation of tree structures can occur sequentially, that is, with each new tree structure being derived from the immediately preceding tree structure. However, the search algorithm can be configured to return to a tree structure in the sequence other than the immediately preceding tree structure. Upon returning to this tree structure in the sequence, the search algorithm can perturb the tree structure in a manner differently than the previous perturbation thereof in order to generate another new tree structure that heretofore was not previously generated. From this newly generated tree structure, other new tree structures can then be generated. In this manner, the number of tree structures produced from an original tree structure can be greatly enlarged. A “cost” can be determined for the final layout associated with each tree structure. This “cost” is a numerical value that quantifies the desirability or favorability of the corresponding final layout. The “cost” of each final layout can be determined in any suitable manner. One manner of determining the “cost” of a final layout includes forming a ratio of the total area of the components and, if provided, any isolation structures over the total area of a rectangle that bounds the components, and any isolation structures, associated with the final layout. As would be apparent to one of ordinary skill in the art, a cost determined in this manner having a value closer to 1 means that the components forming the final layout take up more space of the bounding rectangle than a final layout having a cost further away from the value 1. Once a cost has been determined for the final layout associated with each tree structure, the layout having the most favorable cost associated therewith can be selected for implementation. As can be seen, the present invention utilizes a tree structure configured to support all of the constraints necessary for placement of components and/or groups. The tree structure can be easily perturbed to generate new tree structures wherefrom new layouts that satisfy all the placement constraints can be generated. A cost associated with each layout can then be utilized to select an optimal layout for implementation. The invention has been described with reference to the preferred embodiments. Obvious modifications and alterations will occur to others upon reading and understanding the preceding detailed description. It is intended that the invention be construed as including all such modifications and alterations insofar as they come within the scope of the appended claims or the equivalents thereof. Referenced by
Classifications
Legal Events
Rotate |