Method, device and storage medium for processing orthogonal polygons in chip circuit layout
By identifying and using the smallest edges of orthogonal polygons in the chip circuit layout for segmentation, the problem that the prior art cannot effectively retain larger rectangles is solved, and the efficiency and accuracy of parasitic parameter extraction are improved.
Patent Information
- Application Number
- CN202411356348.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-27
- Publication Date
- 2025-06-10
- Estimated Expiration
- 2044-09-27
AI Technical Summary
The existing chip circuit layout rectangularization method cannot effectively retain larger rectangles, resulting in lower efficiency and correctness of the parasitic parameter extraction.
By determining the smallest edge of the orthogonal polygon in the chip circuit layout and determining the vertex of the rectangle to be generated based on the connection edges of the smallest edges, the orthogonal polygons are segmented to obtain the corresponding rectangle.
This method can better retain the larger rectangular layout in the chip circuit layout, improving the efficiency of parasitic parameter extraction and the correctness of the results.
Smart Images

Figure CN118862809B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of chip technology, and particularly to a method for processing orthogonal polygons in a chip circuit layout, a computing device, and a computer-readable storage medium. Background Art
[0002] Most chip circuit layout designs use orthogonal polygons as the main graphics. Therefore, RC parasitic parameter extraction tools often use matrices as the basic units for carrying layout information. The regularity of the rectified graphics set will directly affect the efficiency and correctness of RC parasitic parameter extraction.
[0003] However, the existing chip circuit layout rectification methods cannot retain the large rectangles in the chip circuit layout, resulting in low efficiency of parasitic parameter extraction and low correctness of the results. Summary of the Invention
[0004] The purpose of this application is to provide a method for processing orthogonal polygons in a chip circuit layout, a computing device, and a computer-readable storage medium to at least solve the problems in the related art.
[0005] To achieve the above objective:
[0006] In a first aspect, an embodiment of this application provides a method for processing orthogonal polygons in a chip circuit layout. The method includes:
[0007] Obtain the orthogonal polygon to be processed in the chip circuit layout;
[0008] Determine the set of sides of the orthogonal polygon;
[0009] Determine the shortest side in the set of sides;
[0010] Cut the orthogonal polygon with the vertex pairs of the rectangle to be generated determined by the connecting sides of the shortest side to obtain the corresponding rectangle.
[0011] In an embodiment, the determining the set of sides of the orthogonal polygon includes:
[0012] Determine a first set of points; the first set of points is the set of vertices arranged in order in the orthogonal polygon;
[0013] Obtain the set of sides composed of the sides formed by every two adjacent vertices in the first set of points.
[0014] In an embodiment, the determining the first set of points includes:
[0015] Determine a second set of points of the orthogonal polygon; the second set of points is the set of all vertices of the orthogonal polygon;
[0016] Determine the minimum point in the second point set as the starting point of the first point set;
[0017] Sort the vertices of the orthogonal polygon in a preset direction from the starting point to determine the first point set.
[0018] In one embodiment, the determining the minimum edge in the edge set includes:
[0019] Determine the edge with the shortest length from the edge set;
[0020] If the concavity-convex attribute of the endpoints corresponding to the edge is a preset attribute, then determine the edge as the minimum edge in the edge set.
[0021] In one embodiment, the if the concavity-convex attribute of the endpoints corresponding to the edge is a preset attribute, then determine the edge as the minimum edge in the edge set, includes:
[0022] If the concavity-convex attribute of the endpoints corresponding to the edge is a preset attribute and the splitting attribute of the edge is splittable, then determine the edge as the minimum edge in the edge set.
[0023] In one embodiment, the splitting the orthogonal polygon with the vertices of the to-be-generated rectangle determined according to the connecting edge of the minimum edge to obtain the corresponding rectangle, includes:
[0024] Determine the vertices of the to-be-generated rectangle according to the minimum edge and the lengths of the previous edge and the next edge of the minimum edge with the same direction in the edge set;
[0025] Connect the vertices of the to-be-generated rectangle to obtain the corresponding rectangle.
[0026] In one embodiment, the determining the vertices of the to-be-generated rectangle according to the minimum edge and the lengths of the previous edge and the next edge of the minimum edge with the same direction in the edge set, includes:
[0027] Determine the rectangle splitting type according to the lengths of the previous edge and the next edge of the minimum edge with the same direction in the edge set; the rectangle splitting type includes auxiliary point splitting and non-auxiliary point splitting;
[0028] Determine the vertices of the to-be-generated rectangle according to the minimum edge and the rectangle splitting type.
[0029] In one embodiment, the determining the vertices of the to-be-generated rectangle according to the minimum edge and the rectangle splitting type, includes:
[0030] If the rectangular segmentation type is non-assisted point segmentation, the endpoints of the minimum side, the side above the minimum side, and the side below the minimum side are determined as the vertices of the rectangle to be generated;
[0031] If the rectangular segmentation type is assisted point segmentation, an auxiliary point is determined on the longer side among the side above the minimum side and the side below the minimum side, and the auxiliary point, the endpoints of the minimum side, and the endpoints of the shorter side among the side above the minimum side and the side below the minimum side are determined as the vertices of the rectangle to be generated; the auxiliary point is used to divide a line segment equal in length to the shorter side from the longer side, and one endpoint of the line segment is the endpoint of the minimum side.
[0032] In one embodiment, when the vertices of the rectangle to be generated satisfy the segmentation condition, the vertices of the rectangle to be generated are connected;
[0033] The satisfaction of the segmentation condition includes: the connection lines of the vertices of the rectangle to be generated do not intersect with the figures other than the rectangle to be generated in the orthogonal polygon.
[0034] In one embodiment, it further includes:
[0035] When the vertices of the rectangle to be generated do not satisfy the segmentation condition, the segmentation attribute of the minimum side is marked as non-segmentable, otherwise it is marked as segmentable.
[0036] In a second aspect, an embodiment of the present application provides a computing device, including: a processor and a memory storing a computer program. When the processor runs the computer program, the method for processing an orthogonal polygon in the chip circuit layout described in the first aspect above is implemented.
[0037] In a third aspect, an embodiment of the present application provides a computer-readable storage medium, in which a computer program is stored. When the computer program is executed by a processor, the method for processing an orthogonal polygon in the chip circuit layout described in the first aspect above is implemented.
[0038] In the method for processing an orthogonal polygon in the chip circuit layout, the computing device, and the computer-readable storage medium provided by the embodiments of the present application, the chip circuit layout is rectangularly segmented by the minimum side, which can better retain the larger rectangular layout in the chip circuit layout, and effectively improves the efficiency of parasitic parameter extraction and the correctness of the results. Description of the Drawings
[0039] Figure 1 It is a flowchart of the method for processing an orthogonal polygon in the chip circuit layout provided by an embodiment of the present application Figure 1 。
[0040] Figure 2Schematic diagram of an orthogonal polygon in an embodiment of the present application.
[0041] Figure 3 Flow schematic of the method for processing orthogonal polygons in the chip circuit layout provided by an embodiment of the present application Figure 2 。
[0042] Figure 4 Schematic diagram of the segmentation of an orthogonal polygon in an embodiment of the present application Figure 1 。
[0043] Figure 5 Schematic diagram of the segmentation of an orthogonal polygon in an embodiment of the present application Figure 2 。
[0044] Figure 6 Schematic diagram of the segmentation of an orthogonal polygon in an embodiment of the present application Figure 3 。
[0045] Figure 7 Schematic diagram of the structure of a computing device provided by an embodiment of the present application. Detailed implementation mode
[0046] Here, exemplary embodiments will be described in detail, and the examples are shown in the drawings. When the following description refers to the drawings, unless otherwise indicated, the same numbers in different drawings represent the same or similar elements. The implementation manners described in the following exemplary embodiments do not represent all implementation manners consistent with the present application. On the contrary, they are only examples of devices and methods consistent with some aspects of the present application as detailed in the appended claims.
[0047] It should be noted that in this article, the term "including", "comprising" or any other variant thereof is intended to cover non-exclusive inclusion, so that a process, method, article or device including a series of elements not only includes those elements, but also includes other elements not explicitly listed, or elements inherent to such process, method, article or device. Without further limitation, an element defined by the statement "including one..." does not exclude the existence of another identical element in the process, method, article or device including that element. In addition, components, features, and elements with the same name in different embodiments of the present application may have the same meaning or different meanings, and their specific meanings need to be determined by their explanations in the specific embodiment or further combined with the context in the specific embodiment.
[0048] It should be understood that although the terms first, second, third, etc. may be used herein to describe various information, such information should not be limited to these terms. These terms are only used to distinguish information of the same type from each other. For example, without departing from the scope of this document, the first information may also be referred to as the second information, and similarly, the second information may also be referred to as the first information. Depending on the context, the word "if" as used herein may be interpreted as "when" or "while" or "in response to determining". Furthermore, as used herein, the singular forms "a", "an", and "the" are also intended to include the plural forms unless the context indicates otherwise. It should be further understood that the terms "comprising", "including" indicate the presence of the stated features, steps, operations, elements, components, items, kinds, and / or groups, but do not exclude the presence, occurrence, or addition of one or more other features, steps, operations, elements, components, items, kinds, and / or groups. The terms "or" and "and / or" as used herein are interpreted as inclusive, or meaning any one or any combination. Thus, "A, B, or C" or "A, B, and / or C" means "any one of the following: A; B; C; A and B; A and C; B and C; A, B, and C". An exception to this definition occurs only when the combination of elements, functions, steps, or operations are mutually exclusive in some way.
[0049] It should be understood that although the steps in the flowcharts in the embodiments of this application are shown sequentially according to the indication of the arrows, these steps are not necessarily executed sequentially according to the order indicated by the arrows. Unless there is a clear indication in this document, the execution of these steps has no strict order restriction and can be executed in other orders. Moreover, at least some of the steps in the figure may include multiple sub-steps or multiple stages, and these sub-steps or stages are not necessarily executed at the same time, but can be executed at different times, and their execution order is not necessarily sequential, but can be executed alternately or in turn with at least some of the sub-steps or stages of other steps or other steps.
[0050] It should be noted that in this document, step codes such as S101, S102, etc. are used. The purpose is to more clearly and briefly express the corresponding content and do not constitute a substantial limitation in order. Those skilled in the art may execute S102 first and then S101, etc. during specific implementation, but these should all be within the protection scope of this application.
[0051] It should be understood that the specific embodiments described herein are only used to explain this application and are not used to limit this application.
[0052] In the following description, suffixes such as "module", "component", or "unit" used to denote elements are only for the convenience of describing the present application and have no specific meaning in themselves. Therefore, "module", "component", or "unit" can be used interchangeably.
[0053] Refer to Figure 1 , a method for processing orthogonal polygons in a chip circuit layout provided by an embodiment of the present application. The method for processing orthogonal polygons in the chip circuit layout can be executed by a device for processing orthogonal polygons in a chip circuit layout provided by an embodiment of the present application. The device for processing orthogonal polygons in the chip circuit layout can be implemented in a software and / or hardware manner, such as specifically a computing device such as a computer or a server. The method for processing orthogonal polygons in the chip circuit layout provided by this embodiment includes:
[0054] Step S101: Obtain the orthogonal polygons to be processed in the chip circuit layout.
[0055] Among them, there may be many orthogonal polygons in the chip circuit layout. An orthogonal polygon refers to a polygon in which adjacent sides are perpendicular to each other. In order to extract parasitic parameters, it is necessary to perform rectangularization processing on the orthogonal polygons. Therefore, it is necessary to first determine the orthogonal polygons to be processed in the chip circuit layout.
[0056] Step S102: Determine the edge set of the orthogonal polygon.
[0057] Among them, the edge set of the orthogonal polygon not only includes each side of the orthogonal polygon (which can be represented by the endpoints of the side), but may also include information such as the length of each side and the edge identifier (such as the edge number) used to distinguish different sides. In some embodiments, the edge set of the orthogonal polygon includes the sides of the orthogonal polygon to be divided into rectangles currently. In addition, the edge set of the orthogonal polygon may also include the concave and convex attributes of the endpoints forming the sides and the splittable attribute of the sides, etc. The concave and convex attributes of the endpoints can be concave points or convex points, and can be specifically determined by algorithms such as the cross multiplication method, the angle method, and the area method. The corresponding calculation process can refer to the prior art and will not be elaborated here. For example, as Figure 2 shown, vertices n1, n2, n3, n4, n6, n7 are convex points, and vertices n5, n8 are concave points. The splittable attribute of the side is used to indicate whether the side can be split as a side of a rectangle. Before the orthogonal polygon is split, the splittable attribute of each side is defaulted to splittable.
[0058] In an embodiment, determining the edge set of the orthogonal polygon includes:
[0059] Determine the first point set; the first point set is a set of vertices arranged in order in the orthogonal polygon;
[0060] Obtain an edge set composed of the edges formed by every two adjacent vertices in the first point set.
[0061] Among them, by arranging the vertices of the orthogonal polygon in a certain order, the first point set can be obtained. For example, starting from a certain vertex, arranging the vertices of the orthogonal polygon in a clockwise or counterclockwise direction to form a set, etc. After determining the first point set, every two adjacent vertices in the first point set can be used as a combination to form an edge, and the combinations of all adjacent vertices are formed into a set, that is, the set composed of edges is determined as the edge set of the orthogonal polygon. It can be understood that since the adjacent vertices of the orthogonal polygon form an edge, the endpoints of the edge are recorded as the vertices of the orthogonal polygon. In this way, the edge set of the orthogonal polygon can be quickly determined, improving the processing efficiency.
[0062] In one embodiment, determining the first point set includes:
[0063] Determine the second point set of the orthogonal polygon; the second point set is the set of all vertices of the orthogonal polygon;
[0064] Determine the minimum point in the second point set as the starting point of the first point set;
[0065] Sort the vertices of the orthogonal polygon in a preset direction from the starting point to determine the first point set.
[0066] Specifically, first, a vertex can be selected from the vertices of the orthogonal polygon as the starting point of the second point set, and the vertices of the orthogonal polygon are sorted in a preset direction from the starting point of the second point set to obtain the second point set of the orthogonal polygon. Then, the minimum point is determined from the second point set, and this minimum point is used as the starting point of the first point set. Then, the vertices of the orthogonal polygon are sorted in a preset direction from the starting point of the first point set to obtain the first point set. Or the minimum point among the vertices can be directly found, and this minimum point is used as the starting point of the first point set. Then, the vertices of the orthogonal polygon are sorted in a preset direction to obtain the first point set.
[0067] Among them, the second point set may include the coordinate values of the vertices of the orthogonal polygon on the two-dimensional plane, such as the coordinate values of each vertex in the first direction and the coordinate values in the second direction perpendicular to the first direction. The minimum point refers to the point with the relatively smallest coordinate position in the two-dimensional plane. Here, to determine the minimum point in the second point set, it is possible to compare the coordinate values of all points in the second point set on the two-dimensional plane. First, determine the point set composed of the points with the smallest coordinate values in the first direction, and then determine the point with the smallest coordinate value in the second direction in this point set as the minimum point in the second point set, or first determine the point set composed of the points with the smallest coordinate values in the second direction, and then determine the point with the smallest coordinate value in the first direction in this point set as the minimum point in the second point set.
[0068] Among them, the preset direction can be set according to actual needs, such as it can be set to the clockwise direction or the counterclockwise direction, etc.
[0069] Step S103: Determine the minimum edge in the edge set.
[0070] It can be understood that when the edge set includes information such as the lengths of each edge, the minimum edge in the edge set can be determined based on information such as the lengths of each edge. It should be noted that the minimum edge in the edge set refers to the edge with the smallest length that can be used to divide the orthogonal polygon.
[0071] In one embodiment, determining the minimum edge in the edge set includes:
[0072] Determine the edge with the shortest length from the edge set;
[0073] If the concavity and convexity attribute of the endpoints corresponding to the edge is the preset attribute, then determine the edge as the minimum edge in the edge set.
[0074] Specifically, first, compare the lengths of each edge in the edge set to determine the edge with the shortest length from the edge set; then, detect whether the concavity and convexity attribute of the endpoints corresponding to this edge is the preset attribute. If the concavity and convexity attribute of the endpoints corresponding to this edge is the preset attribute, then determine this edge as the minimum edge in the edge set. If the concavity and convexity attribute of the endpoints corresponding to this edge is not the preset attribute, then determine that this edge is not the minimum edge in the edge set. Among them, the lengths of each edge can be calculated based on the coordinate positions of the endpoints of each edge. In addition, when the lengths of each edge are already recorded in the edge set, the lengths of each edge can also be directly obtained from the edge set. The preset attribute can be set according to actual needs. In this embodiment, the preset attribute is taken as a convex point. It should be noted that when there are multiple edges with the shortest length in the edge set, the first edge with the shortest length in the edge set is determined as the edge with the shortest length in the edge set in the order from front to back. In this way, by quickly and accurately determining the minimum edge in the edge set, the processing efficiency is improved.
[0075] In one embodiment, if the concavity and convexity attribute of the endpoints corresponding to an edge is a preset attribute, determining the edge as the minimum edge in the edge set includes:
[0076] If the concavity and convexity attribute of the endpoints corresponding to the edge is a preset attribute and the splitting attribute of the edge is splittable, then determine the edge as the minimum edge in the edge set.
[0077] Among them, when the splitting attribute of the edge is splittable, it means that the orthogonal polygon can be split based on this edge, while when the splitting attribute of the edge is non - splittable, it means that the orthogonal polygon cannot be split based on this edge. To improve the efficiency and accuracy of determining the minimum edge in the edge set and avoid problems such as reduced efficiency caused by splitting an edge that cannot split the orthogonal polygon, when the concavity and convexity attribute of the endpoints corresponding to the edge is a preset attribute, the splitting attribute of this edge also needs to be splittable before determining this edge as the minimum edge in the edge set.
[0078] Step S104: Split the orthogonal polygon according to the vertices of the rectangle to be generated determined by the connecting edges of the minimum edge to obtain the corresponding rectangle.
[0079] Among them, the connecting edges of the minimum edge refer to the previous edge and the next edge adjacent to the minimum edge in the edge set, that is, the edges adjacent in the clockwise or counter - clockwise direction, and can also be understood as the two edges in the edge set that respectively have the same endpoint as the minimum edge. After determining the minimum edge and its connecting edges, the vertices of the rectangle to be generated can be determined according to the endpoints of each edge, and then the orthogonal polygon can be split according to the vertices of the rectangle to be generated to obtain the corresponding rectangle.
[0080] In one embodiment, splitting the orthogonal polygon according to the vertices of the rectangle to be generated determined by the connecting edges of the minimum edge to obtain the corresponding rectangle includes:
[0081] Determine the vertices of the rectangle to be generated according to the length of the minimum edge and the previous edge and the next edge of the minimum edge with the same direction in the edge set;
[0082] When the vertices of the rectangle to be generated meet the splitting conditions, connect the vertices of the rectangle to be generated to obtain the corresponding rectangle.
[0083] Specifically, first, after determining the previous edge and the next edge of the minimum edge in the edge set, detect whether the directions of the previous edge and the next edge of the minimum edge are the same. If they are the same, then determine the vertices of the rectangle to be generated according to the length of the minimum edge and the previous edge and the next edge of the minimum edge with the same direction in the edge set; then, connect the vertices of the rectangle to be generated in sequence to obtain the corresponding rectangle.
[0084] Among them, since the edge set is composed of the edges formed by every two adjacent points in the first point set generated by the vertices arranged in order in the orthogonal polygon, the upper edge of the minimum edge and the minimum edge have the same end point, and the lower edge of the minimum edge and the minimum edge also have the same end point. The direction of the upper edge of the minimum edge refers to the direction starting from the common end point of the minimum edge and the upper edge of the minimum edge and pointing towards the other end point of the upper edge of the minimum edge. Similarly, the direction of the lower edge of the minimum edge refers to the direction starting from the common end point of the minimum edge and the lower edge of the minimum edge and pointing towards the other end point of the lower edge of the minimum edge. Here, in the two-dimensional plane, the direction of the upper edge of the minimum edge and the direction of the lower edge of the minimum edge can be any one of the following: from east to west, from west to east, from south to north, from north to south.
[0085] In one embodiment, when the vertices of the rectangle to be generated satisfy the splitting condition, the vertices of the rectangle to be generated are connected. Among them, the satisfaction of the splitting condition can be set according to actual needs. In this embodiment, it can be set that the satisfaction of the splitting condition includes: the connection line of the vertices of the rectangle to be generated does not intersect with the figure in the orthogonal polygon other than the rectangle to be generated. Here, the connection line of the vertices of the rectangle to be generated does not intersect with the figure in the orthogonal polygon other than the rectangle to be generated can be understood as that the rectangle to be generated does not intersect with the edges in the orthogonal polygon other than the minimum edge, the upper edge of the minimum edge, and the lower edge of the minimum edge. After determining the vertices of the rectangle to be generated, by sequentially connecting the vertices of the rectangle to be generated, the corresponding rectangle can be obtained, thereby realizing the splitting of the orthogonal polygon. In this way, according to the length of the minimum edge and the upper edge of the minimum edge and the lower edge of the minimum edge with the same direction in the edge set, the vertices of the rectangle to be generated can be quickly determined, further improving the processing efficiency.
[0086] In one embodiment, determining the vertices of the rectangle to be generated according to the length of the minimum edge and the upper edge of the minimum edge and the lower edge of the minimum edge with the same direction in the edge set includes:
[0087] Determining the rectangle splitting type according to the length of the upper edge of the minimum edge and the lower edge of the minimum edge with the same direction in the edge set; the rectangle splitting type includes auxiliary point splitting and non-auxiliary point splitting;
[0088] Determining the vertices of the rectangle to be generated according to the minimum edge and the rectangle splitting type.
[0089] Among them, when the lengths of the previous edge and the next edge of the smallest edge with the same direction in the edge set are the same, since the endpoints of the previous edge and the next edge of the smallest edge are symmetric about the perpendicular bisector of the smallest edge, the vertices of the rectangle to be generated can be determined through the endpoints of the previous edge and the next edge of the smallest edge, that is, there is no need to use auxiliary points for segmentation, so the rectangle segmentation type is determined as non-auxiliary point segmentation. When the lengths of the previous edge and the next edge of the smallest edge with the same direction in the edge set are different, since the endpoints of the previous edge and the next edge of the smallest edge are not symmetric about the perpendicular bisector of the smallest edge, all vertices of the rectangle to be generated cannot be determined through the endpoints of the previous edge and the next edge of the smallest edge, that is, auxiliary points need to be used for segmentation, so the rectangle segmentation type is determined as auxiliary point segmentation. After determining the rectangle segmentation type, the vertices of the rectangle to be generated can be determined in combination with the smallest edge and the rectangle segmentation type. Among them, the perpendicular bisector of the smallest edge refers to the perpendicular line passing through the midpoint of the smallest edge. It should be noted that the rectangle segmentation type being auxiliary point segmentation means that an auxiliary point needs to be determined and used as a vertex of the rectangle to be generated to segment the orthogonal polygon. The rectangle segmentation type being non-auxiliary point segmentation means that there is no need to determine an auxiliary point and use it as a vertex of the rectangle to be generated.
[0090] In one embodiment, determining the vertices of the rectangle to be generated according to the smallest edge and the rectangle segmentation type includes:
[0091] If the rectangle segmentation type is non-auxiliary point segmentation, then determine the endpoints of the smallest edge, the previous edge of the smallest edge, and the next edge of the smallest edge as the vertices of the rectangle to be generated;
[0092] If the rectangle segmentation type is auxiliary point segmentation, then determine an auxiliary point on the longer side among the previous edge and the next edge of the smallest edge, and determine the auxiliary point, the endpoints of the smallest edge, and the endpoints of the shorter side among the previous edge and the next edge of the smallest edge as the vertices of the rectangle to be generated; the auxiliary point is used to divide a line segment equal in length to the shorter side from the longer side.
[0093] Among them, the long side refers to the side with a longer length among the side adjacent to the smallest side and the side adjacent to the smallest side on the other side, and the short side refers to the side with a shorter length among the side adjacent to the smallest side and the side adjacent to the smallest side on the other side. Here, when the rectangle splitting type is splitting without auxiliary points, first determine the endpoints of the smallest side, the side adjacent to the smallest side, and the side adjacent to the smallest side on the other side, and then determine the endpoints of the smallest side, the side adjacent to the smallest side, and the side adjacent to the smallest side on the other side as the vertices of the rectangle to be generated. When the rectangle splitting type is splitting with auxiliary points, first determine the long side and the short side among the side adjacent to the smallest side and the side adjacent to the smallest side on the other side, and then, according to the length of the short side, determine an auxiliary point on the long side to divide a line segment equal to the length of the short side from the long side (one endpoint of the line segment is the auxiliary point, and the other endpoint is the same endpoint of the long side and the smallest side), and then determine the auxiliary point, the endpoints of the smallest side, and the endpoints of the short side among the side adjacent to the smallest side and the side adjacent to the smallest side on the other side as the vertices of the rectangle to be generated.
[0094] In one embodiment, it further includes:
[0095] When the vertices of the rectangle to be generated do not meet the splitting conditions, mark the splitting attribute of the smallest side as non-splittable, otherwise mark it as splittable.
[0096] Here, when it is determined that the vertices of the rectangle to be generated do not meet the splitting conditions, it means that the orthogonal polygon cannot be split based on the smallest side, so mark the splitting attribute of the smallest side as non-splittable, so as not to use the smallest side as the side of the rectangle to be generated in the subsequent process. When it is determined that the vertices of the rectangle to be generated meet the splitting conditions, it means that the orthogonal polygon can be split based on the smallest side, so mark the splitting attribute of the smallest side as splittable.
[0097] In one embodiment, it further includes:
[0098] Update the edge set of the orthogonal polygon according to the rectangles obtained by splitting, and return to the step of determining the smallest side of the edge set, and split the orthogonal polygon according to the vertices of the rectangle to be generated determined by the connecting edges of the smallest side to obtain the corresponding rectangles.
[0099] Specifically, when the rectangular segmentation type is non-assisted point segmentation, the vertices of the rectangle to be generated in the first point set are deleted to obtain the updated first point set. The edge set formed by the edges formed by every two adjacent points in the updated first point set is obtained, that is, the edge set of the updated orthogonal polygon is obtained, and the minimum edge of the edge set is continuously determined. The orthogonal polygon is segmented by the vertex pairs of the rectangles to be generated determined by the connecting edges of the minimum edge to obtain the corresponding rectangles until the number of remaining points in the updated first point set is the preset number. When the rectangular segmentation type is assisted point segmentation, the endpoints of the minimum edge in the first point set and the endpoints of the shorter edge among the previous edge and the next edge of the minimum edge are deleted, and the auxiliary points are added to the corresponding positions in the first point set to obtain the updated first point set. The edge set formed by the edges formed by every two adjacent points in the updated first point set is obtained, that is, the edge set of the updated orthogonal polygon is obtained, and the minimum edge of the edge set is continuously determined. The orthogonal polygon is segmented by the vertex pairs of the rectangles to be generated determined by the connecting edges of the minimum edge to obtain the corresponding rectangles until the number of remaining points in the updated first point set is the preset number. Among them, the preset number can be set to 4, etc. In this way, by segmenting the orthogonal polygon multiple times, the efficiency of parasitic parameter extraction and the correctness of the results are further improved.
[0100] In summary, in the method for processing orthogonal polygons in the chip circuit layout provided by the above embodiments, the chip circuit layout is rectangularly segmented by the minimum edge, which can better retain the larger rectangular layout in the chip circuit layout and effectively improve the efficiency of parasitic parameter extraction and the correctness of the results.
[0101] Based on the same inventive concept as the foregoing embodiments, the method provided by the foregoing embodiments will be specifically described below through a specific example.
[0102] Refer to Figure 3 , the method for processing orthogonal polygons in the chip circuit layout provided in this embodiment includes the following steps:
[0103] Step S201: Preprocess the chip circuit layout data to obtain a point set.
[0104] Specifically, preprocess the chip circuit layout data (i.e., the orthogonal polygon data in the chip circuit layout), remove duplicates from the set of input point information (containing two-dimensional coordinate information), and obtain the point data set originInputNodeV. In originInputNodeV, select the point with the smallest X coordinate to form the point set NXmin, select the point with the smallest Y coordinate from NXmin to obtain beginIndex, and then use the point of beginIndex as the first element to generate a new point set tempInputNodeV. That is to say, tempInputNodeV is originInputNodeV after re-finding the starting point, and NXmin is a part of the points in it. Traverse tempInputNodeV and use the cross multiplication method to sort the point (node) objects in the set in a clockwise order to obtain inputNodeV. Traverse inputNodeV, form edge objects in pairs, record the length length of the edge in the edge object, and at the same time save the edge object in segmentV and record the edge identifier (index) in the corresponding node object of the edge.
[0105] Exemplarily, for Figure 2 the orthogonal polygon shown, it can be known through analysis that the information of this orthogonal polygon is originInputNodeV = {n1, n2, n3, n4, n5, n6, n7, n8}, NXmin = {n6, n7}, beginIndex = n7, tempInputNodeV = {n7, n8, n1, n2, n3, n4, n5, n6}, inputNodeV = {n7, n6, n5, n4, n3, n2, n1, n8}, segmentV = {seg(n7, n6), seg(n6, n5), seg(n5, n4), seg(n4, n3), seg(n3, n2), seg(n2, n1), seg(n1, n8), seg(n8, n7)}.
[0106] Step S202: Judge and record the concave and convex attributes of each point in the point set.
[0107] Specifically, the cross multiplication method, angle method, area method, etc. can be used to judge the concave and convex attributes of each point in the point set and record them in the node object.
[0108] Step S203: Perform rectangular segmentation on the orthogonal polygon in the chip circuit layout according to the minimum side principle to obtain a new rectangle.
[0109] Among them, the rectangular segmentation according to the minimum side principle is specifically as follows:
[0110] (1)Starting from the node at beginIndex, find the first minimum edge (the one with the minimum length and both vertices being convex points) in segementV. Define this minimum edge as pSegment, the previous edge of pSegment as iSegment, and the next edge as jSegment. As shown in Figure 4 below, use p to represent pSegment, i to represent iSegment, and j to represent jSegment. Here, the previous edge refers to the edge adjacent to the current edge in the counterclockwise direction of the figure, and the next edge refers to the edge adjacent to the current edge in the clockwise direction.
[0111] (2)Starting from the two vertices of pSegment, determine the directions of iSegment and jSegment. There are four directions in total (EW / WE / SN / NS, where EW means from east to west; WE means from west to east; SN means from south to north; NS means from north to south). The directions of iSegment and jSegment must be the same, otherwise an error is reported.
[0112] As shown in Figure 4 below, starting from the two vertices of pSegment, iSegment is represented as {pNode1->iNode1}, with the direction from west to east, denoted as WE. jSegment is represented as {pNode2->jNode2}, with the direction from west to east, denoted as WE.
[0113] (3)Based on the length conditions of the surrounding edges of pSegment, judge two cases: T-shaped or L-shaped. The judgment basis is as follows:
[0114] If iSegment and jSegment are of equal length, it is a T-shaped case, that is, the splitting type of the rectangle is splitting without auxiliary points; if iSegment and jSegment are of unequal length, it is an L-shaped case, that is, the splitting type of the rectangle is splitting with auxiliary points.
[0115] Among them, in the clockwise direction, define the first point of edge pSegment as pNode1, the second point as pNode2, the first vertex of iSegment as iNode1, and the second vertex of jSegment as jNode2; define the previous edge of edge iSegment as aSegment, the next edge of edge jSegment as bSegment, the first point of edge aSegment as aNode1, and the second point of edge bSegment as bNode2. As shown in Figure 4 below, use a to represent aSegment and b to represent bSegment.
[0116] (4) In the T-shaped case, put the rectangle formed by points iNode1, pNode1, pNode2, and jNode2 into the set of rectangles for the final output. At the same time, delete points iNode1, pNode1, pNode2, and jNode2 from the set of points inputNodeV. Repeat the above step (3) until only 4 points remain in inputNodeV.
[0117] (5) In the L-shaped case, compare the lengths of edge iSegment and edge jSegment. Taking Length(iSegment)>Length(jSegment) as an example, refer to Figure 5 , add a new point nNode on the longer edge iSegment such that the length of the edge formed by point nNode and pNode1 is equal to the length of edge jSegment. Put the rectangle formed by points nNode, pNode1, pNode2, and jNode2 into the set of rectangles for the final output. At the same time, add nNode to the set of points inputNodeV in order, set the concavity and convexity of nNode, and delete points pNode1, pNode2, and jNode2 from the set of points inputNodeV. Repeat step (3) until only 4 points remain in inputNodeV.
[0118] (6) In the above steps (4) and (5), it is necessary to judge the correctness of the segmentation. When the cut rectangle intersects with the remaining part of the overall orthogonal polygon, as Figure 6 shown, then the current pSegment cannot be used for cutting. Set the current pSegment to the non-cuttable attribute and enter the next pSegment selection, that is, return to execute the above step (3).
[0119] Step S204: Output the obtained set of rectangles.
[0120] Here, when only 4 points remain in the set inputNodeV, put the rectangle formed by the remaining 4 points into the set of rectangles for the final output and output this set of rectangles.
[0121] In summary, in the method for processing orthogonal polygons in the chip circuit layout provided by the above-mentioned embodiment, in order to address the problems that the existing method cannot retain larger rectangles in the chip circuit layout, the segmentation results have rectangles with misaligned aspect ratios, and cannot process complex polygons, the present application performs rectangular segmentation based on the minimum side principle, and the rectangles obtained by each segmentation are edge rectangles in the current remaining orthogonal polygons, which can better retain larger rectangles. At the same time, the segmentation scenarios are summarized into two types: L-type and T-type, which can cover all orthogonal polygon scenarios. Secondly, after each segmentation, the remaining orthogonal polygons are updated, which is beneficial to improving the performance of the method. Therefore, the method for processing orthogonal polygons in the chip circuit layout provided by this embodiment can effectively improve the efficiency of parasitic parameter extraction and the correctness of the results.
[0122] Based on the same inventive concept as the above embodiments, an embodiment of the present invention provides a computing device, such as Figure 7 As shown, the computing device includes: a processor 310 and a memory 311 storing a computer program; wherein, Figure 7 The processor 310 shown in the figure is not used to indicate that the number of the processor 310 is one, but is only used to indicate the positional relationship of the processor 310 relative to other devices. In actual applications, the number of the processor 310 may be one or more; similarly, Figure 7 The memory 311 shown in the figure has the same meaning, that is, it is only used to refer to the position relationship of the memory 311 relative to other devices. In practical applications, the number of memories 311 can be one or more. When the processor 310 runs the computer program, the processing method of orthogonal polygons in the chip circuit layout applied to the above computing device is implemented.
[0123] The computing device may also include: at least one network interface 312. The various components in the electronic device are coupled together via a bus system 313. It is understood that the bus system 313 is used to achieve connection and communication between these components. In addition to the data bus, the bus system 313 also includes a power bus, a control bus, and a status signal bus. However, for the sake of clarity, the bus system 313 is not used in the following examples. Figure 7 Various buses are labeled as bus system 313.
[0124] Among them, the memory 311 can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM, Read Only Memory), a programmable read-only memory (PROM, Programmable Read-Only Memory), an erasable programmable read-only memory (EPROM, Erasable Programmable Read-Only Memory), an electrically erasable programmable read-only memory (EEPROM, Electrically Erasable Programmable Read-Only Memory), a ferromagnetic random access memory (FRAM, ferromagnetic random access memory), a flash memory (Flash Memory), a magnetic surface memory, an optical disc, or a compact disc read-only memory (CD-ROM, Compact Disc Read-Only Memory); the magnetic surface memory can be a disk memory or a tape memory. The volatile memory can be a random access memory (RAM, Random Access Memory), which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as a static random access memory (SRAM, Static Random Access Memory), a synchronous static random access memory (SSRAM, Synchronous Static Random Access Memory), a dynamic random access memory (DRAM, Dynamic Random Access Memory), a synchronous dynamic random access memory (SDRAM, Synchronous Dynamic Random Access Memory), a double data rate synchronous dynamic random access memory (DDR SDRAM, Double Data Rate Synchronous Dynamic Random Access Memory), an enhanced synchronous dynamic random access memory (ESDRAM, Enhanced Synchronous Dynamic Random Access Memory), a sync link dynamic random access memory (SLDRAM, SyncLink Dynamic Random Access Memory), and a direct rambus random access memory (DRRAM, Direct Rambus Random Access Memory).The memory 311 described in the embodiments of the present invention is intended to include, but is not limited to, these and any other suitable types of memory.
[0125] The memory 311 in the embodiments of the present invention is used to store various types of data to support the operation of the computing device. Examples of such data include: any computer programs for operating on the computing device, such as an operating system and application programs; contact data; phone book data; messages; pictures; videos, etc. Among them, the operating system contains various system programs, such as a framework layer, a core library layer, a driver layer, etc., for implementing various basic services and processing hardware-based tasks. The application programs can include various application programs, such as a Media Player, a Browser, etc., for implementing various application services. Here, the program for implementing the method of the embodiments of the present invention can be included in the application programs.
[0126] Based on the same inventive concept as the foregoing embodiments, this embodiment also provides a computer-readable storage medium. The computer-readable storage medium stores a computer program. The computer-readable storage medium can be a ferromagnetic random access memory (FRAM), a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a flash memory, a magnetic surface memory, an optical disc, or a compact disc read-only memory (CD-ROM), etc.; it can also be various devices including one or any combination of the above memories, such as a mobile phone, a computer, a tablet device, a personal digital assistant, etc. When the computer program stored in the computer-readable storage medium is run by a processor, the method for processing orthogonal polygons in the above chip circuit layout is implemented. For the specific step flow implemented when the computer program is executed by the processor, please refer to Figure 1 the description of the illustrated embodiments, which will not be repeated here.
[0127] The technical features of the above-described embodiments may be combined arbitrarily. For the sake of brevity of description, not all possible combinations of the technical features in the above embodiments are described. However, as long as there is no contradiction in the combination of these technical features, it should be considered as falling within the scope described in this specification.
[0128] In this document, the term "comprising", "including" or any other variant thereof is intended to cover a non-exclusive inclusion, in addition to the listed elements, and may also include other elements not specifically listed.
[0129] As described above, the above are only specific embodiments of the present invention, but the protection scope of the present invention is not limited thereto. Any person skilled in the art within the technical scope disclosed by the present invention can easily think of changes or substitutions, which should be covered within the protection scope of the present invention. Therefore, the protection scope of the present invention should be subject to the protection scope of the claims.
Claims
1. A method for processing orthogonal polygons in a chip circuit layout, characterized in that: The method comprises: Obtain the orthogonal polygons to be processed in the chip circuit layout; Determining a set of edges of the orthogonal polygon; Determining a minimum edge in the edge set; Determine a rectangular segmentation type according to the length of the previous side of the minimum side and the next side of the minimum side with the same direction in the side set; the rectangular segmentation type includes auxiliary point segmentation and non-auxiliary point segmentation; If the rectangle segmentation type is segmentation without auxiliary points, the endpoints of the minimum side, the previous side of the minimum side, and the next side of the minimum side are determined as vertices of the rectangle to be generated; If the rectangle segmentation type is auxiliary point segmentation, an auxiliary point is determined on the long side of the previous side of the minimum side and the next side of the minimum side, and the auxiliary point, the endpoint of the minimum side, and the endpoint of the short side of the previous side of the minimum side and the next side of the minimum side are determined as vertices of the rectangle to be generated; the auxiliary point is used to divide a line segment of the same length as the short side from the long side, and one endpoint of the line segment is the endpoint of the minimum side; Connect the vertices of the rectangle to be generated to obtain a corresponding rectangle.
2. The method according to claim 1, characterized in that The step of determining the edge set of the orthogonal polygon comprises: Determine a first point set; the first point set is a set of vertices arranged in order in the orthogonal polygon; Get an edge set consisting of edges formed by every two adjacent vertices in the first point set.
3. The method according to claim 2, characterized in that The determining of the first point set comprises: Determine a second point set of the orthogonal polygon; the second point set is a set of vertices of the orthogonal polygon; Determine a minimum point in the second point set as a starting point of the first point set; The vertices of the orthogonal polygon are sorted from a starting point according to a preset direction to determine the first point set.
4. The method according to claim 1, characterized in that: The determining the minimum edge in the edge set includes: Determine the shortest edge from the edge set; If the concave-convex property of the endpoint corresponding to the edge is a preset property, the edge is determined as a minimum edge in the edge set.
5. The method according to claim 4, characterized in that If the concave-convex property of the endpoint corresponding to the edge is a preset property, determining the edge as a minimum edge in the edge set includes: If the concave-convex property of the endpoint corresponding to the edge is a preset property and the segmentation property of the edge is segmentable, the edge is determined as the minimum edge in the edge set.
6. The method according to claim 1, characterized in that When the vertices of the rectangle to be generated meet the segmentation condition, connecting the vertices of the rectangle to be generated; The segmentation condition is satisfied including: the line connecting the vertices of the to-be-generated rectangle does not intersect with the figures in the orthogonal polygon other than the to-be-generated rectangle.
7. The method according to claim 6, characterized in that Also includes: When the vertices of the to-be-generated rectangle do not satisfy the segmentation condition, the segmentation attribute of the minimum side is marked as unsegmentable, otherwise it is segmentable.
8. A computing device, characterized in that It comprises a memory, a processor and a computer program stored in the memory and executable on the processor, wherein when the processor executes the computer program, it implements the method for processing orthogonal polygons in a chip circuit layout as claimed in any one of claims 1 to 7.
9. A computer-readable storage medium, wherein a computer program is stored in the computer-readable storage medium, and when the computer program is executed by a processor, the method for processing orthogonal polygons in a chip circuit layout according to any one of claims 1 to 7 is implemented.
Citation Information
Patent Citations
FPGA-based maskless lithography PCB correction system and FPGA-based maskless lithography PCB correction method
CN106327491A
Layout boundary extraction method and device
CN107633524A