Nothing Special   »   [go: up one dir, main page]

CN110941940B - 3D winding method, storage device and system based on collision detection - Google Patents

3D winding method, storage device and system based on collision detection Download PDF

Info

Publication number
CN110941940B
CN110941940B CN201911228136.7A CN201911228136A CN110941940B CN 110941940 B CN110941940 B CN 110941940B CN 201911228136 A CN201911228136 A CN 201911228136A CN 110941940 B CN110941940 B CN 110941940B
Authority
CN
China
Prior art keywords
node
winding
width
adj
wound
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911228136.7A
Other languages
Chinese (zh)
Other versions
CN110941940A (en
Inventor
邵康鹏
彭焱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Guangli Microelectronics Co ltd
Original Assignee
Hangzhou Guangli Microelectronics Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Guangli Microelectronics Co ltd filed Critical Hangzhou Guangli Microelectronics Co ltd
Priority to CN201911228136.7A priority Critical patent/CN110941940B/en
Publication of CN110941940A publication Critical patent/CN110941940A/en
Application granted granted Critical
Publication of CN110941940B publication Critical patent/CN110941940B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Coil Winding Methods And Apparatuses (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

The invention relates to a 3D winding method, storage equipment and a system based on collision detection, which specifically comprise the following steps: step (1): initializing winding information; step (2): creating a winding track and a node; step (3): wiring; step (4): judging the winding end; judging whether an unprocessed network to be wound exists, if so, taking one network to be wound and executing the step (2), otherwise, completing winding to obtain a winding result. The invention adopts multi-directional exploration in the winding process, including interlayer exploration, thereby avoiding the situation that winding failure occurs in single-layer winding.

Description

3D winding method, storage device and system based on collision detection
Technical Field
The invention relates to the technical field of integrated circuits, in particular to a 3D winding method and system based on collision detection.
Background
With the rapid development of integrated circuit technology, integrated circuits enter into ultra-deep submicron age, so that the feature size of electronic devices is smaller and smaller, the scale of chips is larger and larger, more and more components can be integrated on a single chip, the complexity is rapidly increased, the wiring method in a layout can not meet the requirement of integrated circuit design by a manual design wiring method, and computer automatic wiring has occupied a larger proportion in layout design wiring. The algorithm of wiring has extremely important influence on the speed and efficiency of wiring, and how to design the algorithm with less time and space, lower complexity and higher efficiency becomes a huge problem faced by the semiconductor computer aided design. For detailed routing, the conventional planar routing algorithm is more common:
1. lee's Maze Routing Algorithm) maze winding algorithm: the winding algorithm is a single-network winding algorithm; firstly, dividing a winding plane into uniform grids with consistent sizes, starting from an initial grid, setting cost values of 4 grids which are horizontal and vertical and are not occupied, iterating the step, increasing the cost values according to ascending order, finally searching a target grid, and backtracking from the target grid to the initial grid, thereby obtaining the shortest path. The algorithm has good winding effect on a single network, but has the problems of low efficiency and large storage requirement.
2. Sequential winding algorithm (Sequential Routing): the algorithm is a multi-network winding algorithm; firstly, setting a winding sequence of a network to be wound, winding the network to be wound according to the sequence, and updating the congestion degree of the global winding resource when one network finishes winding, so that the network to be wound subsequently is forced to use the congested winding resource. The winding algorithm is extremely sensitive to the sequence of windings, which typically results in the network where the winding is completed first affecting the network where the winding is completed later.
As can be seen from the above, the conventional winding method is mainly aimed at single plane winding, and has no better solution to the problem of winding conflict generated in the winding process, which generally causes that the firstly generated winding blocks the subsequently generated winding, and finally causes winding failure; in addition, the conventional winding method generally generates dense winding nodes, and more memory is required to be consumed during winding. Therefore, in the field of three-dimensional winding of integrated circuits, there is no mature multilayer winding method.
Disclosure of Invention
The invention aims to overcome the defects in the prior art and provides a multi-layer winding method and a multi-layer winding system which are used for solving the winding collision problem in three-dimensional winding of an integrated circuit. In order to solve the technical problems, the invention adopts the following solutions:
the 3D winding method based on collision detection specifically comprises the following steps:
step (1): initializing winding information;
the information acquisition comprises information of a network to be wound, a winding plane, components and barriers; the network to be wound comprises information of two components to be wound (including the position of the components to be wound, the information of pins to be wound and the like); the number of the winding planes is N, N is a natural number greater than 0, and the N winding planes are parallel to each other;
taking a network to be wound to carry out subsequent steps;
step (2): creating a winding track and a node;
creating a winding track in a winding area of each winding plane respectively, wherein the winding track comprises a horizontal winding track and a vertical winding track, and in each winding plane, the intersection point of the horizontal winding track and the vertical winding track is a node;
the nodes in all winding planes form a 3D node matrix and set the adjacent nodes: nodes adjacent in the horizontal or vertical direction in the same winding plane, or nodes in adjacent winding planes along a direction perpendicular to the winding plane (i.e., nodes having the same plane coordinates but belonging to adjacent winding planes);
step (3): wiring;
acquiring an initial pin and a target pin of a network to be wound, determining an initial node and a target node, and exploring a path from the initial node to the target node by utilizing collision detection; the collision detection means that for the searched node, whether the node can be wound or not is judged according to the position information of the node and adjacent nodes;
if the wiring exploration of the network to be wound is successful, winding is carried out to generate a winding topological structure, namely the network to be wound is successfully wound; otherwise, the network to be wound fails to be wound;
step (4): judging the winding end;
judging whether an unprocessed network to be wound exists, if so, taking one network to be wound and executing the step (2), otherwise, completing winding to obtain a winding result.
As a further improvement, in the step (2), in each winding plane, a winding track is created according to a winding area, a component, a pin to be wound, an obstacle and a winding topological structure, wherein the winding track comprises a horizontal winding track and a vertical winding track, and sparse grids with different sizes can be formed; the creation mode is specifically as follows:
creating a winding track for the winding area: the winding area at least comprises 2 horizontal winding tracks and 2 vertical winding tracks, the winding area is a rectangular area, the lower left corner coordinate and the upper right corner coordinate of the edge of the winding area are respectively (mLLX, mLLY) and (mlux, mlry), and the abscissa of the 2 vertical winding tracks is X 1 ,X 2 The ordinate of the 2 horizontal winding tracks is Y respectively 1 ,Y 2 Then the following is satisfied:
X 1 =mLLX+width/2
X 2 =mURX-width/2
Y 1 =mLLY+width/2
Y 2 =nURY-width/2
creating a winding track for a component or an obstacle: firstly, obtaining the smallest rectangle capable of containing the component or the obstacle, setting the left lower corner coordinate and the right upper corner coordinate of the rectangle as (mLLX, mLLY) and (mURX, mURY) respectively, wherein each component or the obstacle at least comprises 6 horizontal winding tracks and 6 vertical winding tracks, and setting the abscissa of the 6 vertical winding tracks as X respectively 1 ,X 2 ,X 3 ,X 4 ,X 5 ,X 6 The ordinate of the 6 horizontal winding tracks is Y respectively 1 ,Y 2 ,Y 3 ,Y 4 ,Y 5 ,Y 6 Then the following is satisfied:
X 1 =mLLX-width/2-space
X 2 =mLLX-space
X 3 =mLLX
X 4 =mURX
X 5 =mURX+space
X 6 =mURX+width/2+space
Y 1 =mLLY-width/2-space
Y 2 =mLLY-space
Y 3 =mLLY
Y 4 =mURY
Y 5 =mURY+space
Y 6 =mURY+width2+space
creating a winding track for the pin: the pins at least comprise 3 winding tracks, the pins are rectangular pins, and the pins are respectively created according to different leading-out directions of the pins:
if the lead-out direction of the pins is the horizontal direction, the ordinate of the lower and upper edges of the pins is py 1 ,py 2 The 3 winding tracks are all horizontal winding tracks, and the ordinate is Y respectively 1 ,Y 2 ,Y 3 Then the following is satisfied:
Y 1 =py1-width/2-space
Y 2 =(py1+py2)/2
Y 3 =py2+width2+space
if the lead-out direction of the pins is vertical, the abscissa of the left and right edges of the pins is px 1 ,px 2 The 3 winding tracks are all vertical winding tracks, and the abscissa is X respectively 1 ,X 2 ,X 3 Then the following is satisfied:
X 1 =px1-width/2-space
X 2 =(px1+px2)/2
X 3 =px2+width2+space
creating a winding track for a winding topology: firstly, dividing a winding topological structure into a plurality of rectangular topological structures, wherein the rectangular topological structures comprise a rectangular topological structure along a horizontal direction and a rectangular topological structure along a vertical direction; each segmented rectangular topological structure at least comprises 4 winding tracks, and the building is carried out according to different directions of the rectangular topological structure:
if the rectangular topological structure is a topological structure along the horizontal direction, the ordinate of the lower edge and the upper edge of the rectangular topological structure are respectively sy 1 ,sy 2 The 4 winding tracks are all horizontal winding tracks, and the ordinate is Y respectively 1 ,Y 2 ,Y 3 ,Y 4 Then the following is satisfied:
Y 1 =sy 1 -width/2-space
Y 2 =sy 1
Y 3 =sy 2
Y 4 =sy 2 +width/2+space
if the rectangular topological structure is a topological structure along the vertical direction, the abscissa of the left and right edges of the rectangular topological structure is respectively set as sx 1 ,sx 2 The 4 winding tracks are all vertical winding tracks, and the abscissa is X respectively 1 ,X 2 ,X 3 ,X 4 Then the following is satisfied:
X 1 =sx 1 -width/2-space
X 2 =sx 1
X 3 =sx 2
X 4 =sx 2 +width/2+space。
wherein, width refers to a preset winding width; the space refers to a preset winding distance.
As a further improvement, in the step (2), the state of each node is set according to the positional relationship between the node and the winding area, the components, the obstacle and the winding topology: invalid nodes, blocking nodes or common nodes; setting the width occupied by each node in the horizontal direction and the vertical direction according to the preset winding width and the position information of the node;
wherein, the invalid node refers to a node which is not in the winding area and a node which is in the influence range of the component or the obstacle; the specific judging method comprises the following steps: setting the coordinate of a certain node in the winding plane as (x, y), and when the node meets any one of the following conditions, the node is an invalid node;
condition 1) the coordinates of the lower left corner and the upper right corner of the winding area are (mLLX, mLLY) and (mLLX, mlry), respectively, and the node satisfies: x is less than or equal to mLLX+width/2, or x is more than or equal to mURX-width/2, or y is less than or equal to mLLY+width/2, or y is more than or equal to mURY-width/2;
condition 2) the coordinates of the lower left and upper right corners of a component or obstacle in the winding plane are (X) 1 ,Y 1 ) And (X) 2 ,Y 2 ) The node satisfies: x is X 1 -space≤x≤X 2 +space and Y 1 -space≤y≤Y 2 +space;
The shielding node is a node in the influence range of a winding topological structure, and the specific judging method comprises the following steps: the winding topology is divided into a plurality of rectangular topologies, and the coordinates of the lower left corner and the upper right corner of a certain rectangular topology are respectively set as (X) 1 ,Y 1 ),(X 2 ,Y 2 ) Let a certain node coordinate in the winding plane be (x, y), if the following condition is satisfied, the node is a shielding node: x is X 1 ≤x≤X 2 And Y is 1 ≤y≤Y 2
The normal nodes refer to the remaining nodes except for the invalid node and the blocking node.
As a further improvement, the width occupied by each node in the horizontal direction and in the vertical direction is set according to the preset winding width and the position information of the node (the width occupied by the shielding node and the common node can be set, and the invalid node is not set), and the method is specifically as follows:
the width occupied by each node is initialized:
x_occupied_width=width
y_occupied_width=width
wherein, the x_occupied_width refers to the width occupied by the node in the horizontal direction, and the y_occupied_width refers to the width occupied by the node in the vertical direction; the width refers to a preset winding width;
judging whether each node is on a pin lead-out wire in turn, wherein the lead-out wire of the pin refers to a ray generated by taking a lead-out point of the pin as an endpoint and taking the lead-out direction of the pin as a direction; if a node is on the horizontal lead-out line, the vertical coordinate values of the upper and lower edges of the pin are set to be py 1 ,py 2 The width occupied by the node in the vertical direction is set as: y_buffered_width=py 1 -py 2 The method comprises the steps of carrying out a first treatment on the surface of the If a node is on a vertical pin lead, the horizontal coordinate values of the left and right edges of the pin are respectively px 1 ,px 2 The width occupied by the node in the horizontal direction is set as: x_buffered_width=px 2 -px 1
As a further improvement, in the step (3), after the starting pin and the destination pin of the network to be wound are obtained, determining a starting node and a destination node according to the leading-out point and the leading-out direction of the pin;
the specific determination method comprises the following steps: creating a straight line along the lead-out direction perpendicular to the pin at the distance from the lead-out point space on the lead-out line of the pin in the winding plane, wherein the intersection point of the straight line and the lead-out line of the pin is used as the initial node of the initial pin or the target node of the target pin; the pin outgoing line refers to rays generated by taking an outgoing point of the pin as an end point and taking an outgoing direction of the pin as a direction; the space refers to a preset winding distance.
As a further improvement, in the step (3), in the process of wiring exploration, traversing and exploring adjacent nodes (the initial node is the first current node and the initial node has no parent node) of the current node cur_grid except the parent node thereof, acquiring adjacent nodes adj in a common node state, respectively judging whether each adj can be wound or not by utilizing collision detection, and taking the adj capable of winding as a candidate node for determining a new current node from the candidate nodes;
whether each adj can be wound or not is judged by utilizing collision detection, and the method is concretely as follows:
traversing the exploration directions of the adj, and exploring adjacent nodes check_node (not including parent nodes cur_grid) of the adj in each exploration direction; if the adj acquires adjacent nodes check_node, each check_node is used for judging whether the adj is windable in sequence, when all check_nodes are used for respectively obtaining that the adj is windable, the adj is judged to be windable, and when any check_node is used for obtaining that the adj is not windable, the adj is judged to be windable and collision detection is finished;
any check_node is taken, and whether adj can be wound or not is judged: firstly, calculating a distance dist between the check_node and the adj, and judging whether the adj can be wound according to different conditions:
case 1) if check_node is the destination node, judging that adj is windable;
case 2) if check_node is an invalid node, judging that adj is windable when dist is not smaller than a preset threshold A, otherwise judging that adj is not windable;
3) if check_node is an occlusion node, judging that adj is windable when dist is not smaller than a preset threshold B, otherwise judging that adj is not windable;
case 4) if check_node is a normal node, determining whether adj is windable according to the position information of dist and check_node.
As a further improvement, selecting one node with the smallest cost from the candidate nodes as a new current node;
the cost new_cost of the candidate node is calculated in the following manner:
if the abscissa of the candidate node is the same as the abscissa of the current node, then new_cost=dist_width/y_isolated_width+cost;
if the ordinate of the candidate node is the same as the ordinate of the current node, then new_cost=dist;
if the candidate node and the current node are respectively positioned on different winding planes, and the horizontal coordinates and the vertical coordinates are the same, new_cost=0;
wherein dist refers to the distance between the candidate node and the current node; the width refers to a preset winding width; the x_occupied_width refers to the width occupied by the candidate node in the horizontal direction; the y_occupied_width refers to the width occupied by the candidate node in the vertical direction; the cost is the cost of the current node.
As a further improvement, when more than one node with the minimum cost is selected from the candidate nodes, selecting the node with the minimum cost and the minimum turning value from the candidate nodes as a new current node;
the calculation mode of the turning value turn_cnt of the candidate node is as follows:
if the direction from the parent node of the current node cur_grid to the current node cur_grid is different from the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count+1;
if the direction from the parent node of the current node cur_grid to the current node cur_grid is the same as the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count;
the turn_count is a turning value of the current node cur_grid.
As a further improvement, when more than one node with the minimum cost and turning value is selected from the candidate nodes, the node with the minimum cost, turning value and using layer number is selected as a new current node;
the number of layers used by the candidate node refers to the number of layers of the winding plane through which the current node passes to the candidate node.
As a further improvement, in the step (3), for the network to be wound, which is successfully explored by the wiring, winding is performed according to the winding width of each node in the path so as to generate a winding topological structure;
the winding width of the node is as follows: when a winding topology in the horizontal direction is generated, the width occupied by the node in the vertical direction is used as the winding width, and when a winding topology in the vertical direction is generated, the width occupied by the node in the horizontal direction is used as the winding width.
There is provided a storage device having stored therein a plurality of instructions adapted to be loaded and executed by a processor: the 3D winding method based on collision detection.
There is provided a 3D spooling system based on collision detection comprising a processor adapted to implement instructions and a memory device adapted to store instructions adapted to be loaded and executed by the processor to: the 3D winding method based on collision detection.
Compared with the prior art, the invention has the beneficial effects that:
1. the invention adopts multi-directional exploration in the winding process, including interlayer exploration, thereby avoiding the situation that winding failure occurs in single-layer winding.
2. According to the invention, collision detection is carried out on surrounding nodes of the exploration node in the exploration process, so that whether the node can be used for winding or not can be timely judged.
3. The invention is not limited to the interval of the fixed winding track any more, and the width of the winding connected with the pin in a straight line can be set according to the width of the pin.
Drawings
Fig. 1 is a schematic diagram of a winding track creation of a winding area.
Fig. 2 is a schematic diagram of a wire trace creation of a component or an obstacle.
Fig. 3 is a schematic diagram of the creation of a winding trace for a horizontally led pin.
Fig. 4 is a schematic diagram of the creation of a winding trace for a vertically led pin.
Fig. 5 is a schematic diagram of a winding track creation of a topology in the horizontal direction.
Fig. 6 is a schematic diagram of winding trace creation of a topology in a vertical direction.
Fig. 7 is a schematic diagram of a node matrix.
Fig. 8 is a schematic diagram of an invalid node.
FIG. 9 is a schematic diagram of an occlusion node.
Fig. 10 is a schematic diagram of a start node of a pin defining a horizontal lead-out direction and a winding width of the node.
Fig. 11 is a schematic diagram of an adjacent node that is explored to a normal state by a current node cur_grid in an embodiment.
Detailed Description
The invention is described in further detail below with reference to the attached drawings and detailed description:
A3D winding method based on collision detection can realize winding in a three-dimensional multi-layer winding plane environment; the number of the winding planes is N, N is a natural number greater than 0, the N winding planes are parallel to each other, in this embodiment, the winding areas on each winding plane are the same in size and can be completely overlapped after being translated along the direction perpendicular to the winding planes, and the 3D winding method based on collision detection specifically comprises the following steps:
step (1): initializing winding information;
acquiring information of all networks to be wound, winding planes, components and barriers, and setting a winding width and a winding interval; the network to be wound comprises two pieces of information of components to be wound, including positions of the components to be wound, information of pins to be wound and the like.
Setting the state of each network to be wound to be waiting, and taking any network to be wound in the waiting state to carry out subsequent steps.
Step (2): creating a winding track and a node;
in each winding plane, winding tracks of winding areas, components, pins to be wound, obstacles and winding topologies are respectively created, including horizontal winding tracks and vertical winding tracks. The specific creation mode is as follows:
for the winding region: as shown in fig. 1, the winding area is rectangular, and the lower left and upper right coordinates of the edge of the winding area are respectively (mLLX, mLLY) and (mlux, mlry), and the winding track of the winding area comprises 2X-axis lines 1 ,X 2 And 2 vertical winding tracks with Y respectively 1 ,Y 2 The horizontal winding track of (2) satisfies the following conditions:
X 1 =mLLX+width/2
X 2 =mURX-width/2
Y 1 =mLLY+width/2
Y 2 =mURY-width/2。
for components or obstructions: as shown in fig. 2, a minimum rectangle capable of containing the component or the obstacle is first obtained, and the lower left corner coordinate and the upper right corner coordinate of the rectangle are respectively (mLLX, mLLY) and (mlux, mlry), and each component or the obstacle comprises 6 pieces of coordinates with X as the abscissa 1 ,X 2 ,X 3 ,X 4 ,X 5 ,X 6 Is characterized by that 6 vertical winding tracks with Y-axis respectively 1 ,Y 2 ,Y 3 ,Y 4 ,Y 5 ,Y 6 The horizontal winding track of (2) satisfies the following conditions:
X 1 =mLLX-width/2-space
X 2 =mLLX-space
X 3 =mLLX
X 4 =mURX
X 5 =mURX+space
X 6 =mURX+width/2+space
Y 1 =mLLY-width/2-space
Y 2 =mLLY-space
Y 3 =mLLY
Y 4 =mURY
Y 5 =mURY+space
Y 6 =mURY+width/2+space。
for pins: the pins are rectangular, and 3 winding tracks of the pins are respectively established according to different leading directions of the pins.
If the lead-out direction of the pins is horizontal, as shown in FIG. 3, the vertical coordinates of the lower and upper edges of the pins are given by py 1 ,py 2 The 3 winding tracks are all horizontal winding tracks, and the ordinate is Y respectively 1 ,Y 2 ,Y 3 Then the following is satisfied:
Y 1 =py1-width/2-space
Y 2 =(py1+py2)/2
Y 3 =py2+width/2+space
if the lead-out direction of the leads is vertical, as shown in FIG. 4, the lateral coordinates of the left and right edges of the leads are given by px 1 ,px 2 The 3 winding tracks are all vertical winding tracks, and the abscissa is X respectively 1 ,X 2 ,X 3 Then the following is satisfied:
X 1 =px1-width/2-space
X 2 =(px1+px2)/2
X 3 =px2+width/2+space
winding topological structure: firstly, dividing a winding topological structure into a plurality of rectangular topological structures, wherein the rectangular topological structures comprise a rectangular topological structure along a horizontal direction and a rectangular topological structure along a vertical direction; each segmented rectangular topological structure comprises 4 winding tracks, and the four winding tracks are respectively created according to different directions of the rectangular topological structure.
If the rectangular topology is a topology along the horizontal direction, as shown in FIG. 5, let the ordinate of the lower and upper edges of the rectangular topology be sy 1 ,sy 2 The 4 winding tracks are Y-shaped 1 ,Y 2 ,Y 3 ,Y 4 The horizontal winding track of (2) satisfies the following conditions:
Y 1 =sy 1 -width/2-space
Y 2 =sy 1
Y 3 =sy 2
Y 4 =sy 2 +width/2+space
if the rectangular topology is a topology along the vertical direction, as shown in FIG. 6, let the abscissa of the left and right edges of the rectangular topology be sx 1 ,sx 2 The 4 winding tracks are respectively X-shaped 1 ,X 2 ,X 3 ,X 4 The perpendicular winding track of (2) satisfies the following conditions:
X 1 =sx 1 -width/2-space
X 2 =sx 1
X 3 =sx 2
X 4 =sx 2 +width/2+space。
after the winding track is established, in each winding plane, the intersection point of the horizontal winding track and the vertical winding track is a node. As shown in fig. 7, the nodes in all the winding planes form a 3D node matrix, and adjacent nodes are set: nodes that are horizontally or vertically adjacent in the same winding plane, or nodes that have the same plane coordinates but belong to adjacent winding planes.
Step (3): initializing node information;
updating the state of the node according to the position relation of each node, a winding area, a component, an obstacle and a winding topological structure, wherein the updating comprises the following steps: invalid nodes, blocking nodes, and normal nodes. The specific judgment mode is as follows:
the invalid node is a node which is not in the winding area and is in the influence range of the component or the obstacle, namely, as shown in fig. 8, a certain node coordinate in the winding plane is set as (x, y), and when the node meets any one of the following conditions, the node is the invalid node;
condition 1) the coordinates of the lower left corner and the upper right corner of the winding area are (mLLX, mLLY) and (mLLX, mlry), respectively, and the node satisfies: x is less than or equal to mLLX+width/2, or x is more than or equal to mURX-width/2, or y is less than or equal to mLLY+width/2, or y is more than or equal to mURY-width/2;
condition 2) the coordinates of the lower left and upper right corners of a component or obstacle in the winding plane are (X) 1 ,Y 1 ) And (X) 2 ,Y 2 ) The node satisfies:
X 1 -space≤x≤X 2 +space
Y 1 -space≤y≤Y 2 +space。
the shielding node is a node within the influence range of the winding topology, the winding topology is divided into a plurality of rectangular topologies, and as shown in fig. 9, coordinates of a lower left corner and an upper right corner of a certain rectangular topology are set as (X 1 ,Y 1 ),(X 2 ,Y 2 ) Let a certain node coordinate in the winding plane be (x, y), if the following condition is satisfied, the node is a shielding node:
X 1 ≤x≤X 2
Y 1 ≤y≤Y 2
after judging the invalid node and the shielding node, the rest nodes are ordinary nodes.
Then, the width occupied by each shielding node and the common node is set, and the specific setting mode is as follows:
the width occupied by each node is initialized:
x_occupied_width=width
y_occupied_width=width
wherein, the x_occupied_width refers to the width occupied by the node in the horizontal direction, and the y_occupied_width refers to the width occupied by the node in the vertical direction;
judging whether each node is on a pin lead-out wire in turn, wherein the lead-out wire of the pin refers to a ray generated by taking a lead-out point of the pin as an endpoint and taking the lead-out direction of the pin as a direction; if a node is on the horizontal lead-out line, the vertical coordinate values of the upper and lower edges of the pin are set to be py 1 ,py 2 The width occupied by the node in the vertical direction is set as: y_buffered_width=py 1 -py 2 Reference may be made to fig. 10; if a node is on a vertical pin lead, the horizontal coordinate values of the left and right edges of the pin are respectively px 1 ,px 2 The width occupied by the node in the horizontal direction is set as: x_buffered_width=px 2 -px 1
Step (4): wiring;
acquiring an initial pin and a target pin of a network to be wound, and determining an initial node and a target node according to the leading-out points and the leading-out directions of the pins: in the winding plane, a straight line is created along the direction perpendicular to the lead-out direction of the lead at the distance from the lead-out point space on the lead-out line of the lead, and the intersection point of the straight line and the lead-out line of the lead is used as the starting node of the starting lead or the destination node of the destination lead, as can be seen from fig. 10.
Exploring paths from an originating node to a destination node using collision detection: if wiring exploration is successful, winding is carried out according to the winding width of each node in the path to generate a winding topological structure, the topological structure is added into a winding area as a new winding topological structure, and the state of the network to be wound is updated to pass; if the wiring exploration fails, updating the state of the network to be wound as failure. The winding width of the node is as follows: when a winding topology in the horizontal direction is generated, the width occupied by the node in the vertical direction is used as the winding width, and when a winding topology in the vertical direction is generated, the width occupied by the node in the horizontal direction is used as the winding width.
In the wiring exploration process, traversing and exploring adjacent nodes (the initial node is the first current node and the initial node is not the father node) of the current node cur_grid except the father node, acquiring adjacent nodes adj in a common node state, respectively judging whether each adj can be wound or not by utilizing collision detection, taking the adj which can be wound as a candidate node, and determining a new current node from the candidate nodes. For example, as shown in fig. 11, when the current node cur_grid searches in the horizontal right direction and the upper winding plane direction in the winding plane where the current node cur_grid is located, two adjacent nodes adj in the common node state are respectively obtained, and then collision detection needs to be performed on the two adjacent nodes respectively to determine whether the current node cur_grid can be wound.
The method for judging whether each adj can be wound or not by utilizing collision detection is specifically as follows: traversing the exploration directions of the adj, and exploring adjacent nodes check_node (not including parent nodes cur_grid) of the adj in each exploration direction; if the adj acquires adjacent nodes check_node, each check_node is used for judging whether the adj is windable in sequence, when all check_nodes are used for respectively obtaining that the adj is windable, the adj is judged to be applicable to winding, when any check_node is used for obtaining that the adj is not windable, the adj is judged to be not applicable to winding, and collision detection is finished;
any check_node is taken, and whether the adj can be wound or not is judged, and the specific method is as follows: firstly, calculating a distance dist between the check_node and the adj, and judging whether the adj can be wound according to different conditions:
case 1) if check_node is the destination node, judging that adj is windable;
case 2) if check_node is an invalid node, judging that adj is windable when dist is not smaller than a preset threshold A, otherwise judging that adj is not windable;
3) if check_node is an occlusion node, judging that adj is windable when dist is not smaller than a preset threshold B, otherwise judging that adj is not windable;
case 4) if check_node is a normal node, determining whether adj is windable according to the position information of dist and check_node.
After the candidate nodes are determined by utilizing collision detection, one node needs to be selected from the candidate nodes as a new current node, and the selection criteria are as follows:
(1) cost of: selecting one node with the minimum cost from the candidate nodes as a new current node;
the cost new_cost of the candidate node is calculated in the following manner:
if the abscissa of the candidate node is the same as the abscissa of the current node, then new_cost=dist_width/y_isolated_width+cost;
if the ordinate of the candidate node is the same as the ordinate of the current node, then new_cost=dist;
if the candidate node and the current node are respectively positioned on different winding planes, and the horizontal coordinates and the vertical coordinates are the same, new_cost=0;
wherein dist refers to the distance between the candidate node and the current node; the width refers to a preset winding width; the x_occupied_width refers to the width occupied by the candidate node in the horizontal direction; the y_occupied_width refers to the width occupied by the candidate node in the vertical direction; the cost is the cost of the current node.
(2) Cost + turn value: when more than one node with the minimum cost is selected from the candidate nodes, selecting the node with the minimum cost and the minimum turning value from the candidate nodes as a new current node;
the calculation mode of the turning value turn_cnt of the candidate node is as follows:
if the direction from the parent node of the current node cur_grid to the current node cur_grid is different from the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count+1;
if the direction from the parent node of the current node cur_grid to the current node cur_grid is the same as the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count;
the turn_count is a turning value of the current node cur_grid.
(3) Cost + turn value + number of layers used: when the nodes with the minimum cost and turning value are not more than one of the candidate nodes, selecting the node with the minimum cost, turning value and using layer number from the candidate nodes as a new current node;
the number of layers used by the candidate node refers to the number of layers of the winding plane through which the current node passes to the candidate node.
Step (5): judging the winding end;
judging whether a network to be wound exists in a waiting state, if so, acquiring a network to be wound in the waiting state and continuing to execute the step (2), otherwise, completing all winding to obtain a winding result.
According to the 3D winding method based on collision detection, when the winding track is created, only the winding track is required to be created around the components, the barriers, the pins and the wound topology structure, so that dense winding nodes are avoided, and the distance between the winding tracks is not required to be at least width+space; in addition, the winding width can be changed along with the width of the pin, and whether the node can be wound or not is determined by utilizing collision detection, so that the winding process is effectively optimized.
Finally, it should be noted that the above list is only specific embodiments of the present invention. Obviously, the invention is not limited to the above embodiments, but many variations are possible. All modifications directly derived or suggested to one skilled in the art from the present disclosure should be considered as being within the scope of the present invention.

Claims (12)

1. The 3D winding method based on collision detection is characterized by comprising the following steps of:
step (1): initializing winding information;
the information acquisition comprises information of a network to be wound, a winding plane, components and barriers; the network to be wound comprises information of two components to be wound; the number of the winding planes is N, N is a natural number greater than 0, and the N winding planes are parallel to each other;
taking a network to be wound to carry out subsequent steps;
step (2): creating a winding track and a node;
creating a winding track in a winding area of each winding plane respectively, wherein the winding track comprises a horizontal winding track and a vertical winding track, and in each winding plane, the intersection point of the horizontal winding track and the vertical winding track is a node;
the nodes in all winding planes form a 3D node matrix and set the adjacent nodes: nodes adjacent in the horizontal or vertical direction in the same winding plane or nodes in adjacent winding planes along the direction perpendicular to the winding plane;
step (3): wiring;
acquiring an initial pin and a target pin of a network to be wound, determining an initial node and a target node, and exploring a path from the initial node to the target node by utilizing collision detection; the collision detection means that for the searched node, whether the node can be wound or not is judged according to the position information of the node and adjacent nodes;
if the wiring exploration of the network to be wound is successful, winding is carried out to generate a winding topological structure, namely the network to be wound is successfully wound; otherwise, the network to be wound fails to be wound;
step (4): judging the winding end;
judging whether an unprocessed network to be wound exists, if so, taking one network to be wound and executing the step (2), otherwise, completing winding to obtain a winding result.
2. The 3D winding method based on collision detection according to claim 1, wherein in the step (2), in each winding plane, a winding track is created according to a winding area, a component, a pin to be wound, an obstacle and a winding topology structure, including a horizontal winding track and a vertical winding track, so that sparse grids with different sizes can be formed.
3. The 3D winding method based on collision detection according to claim 1, wherein in the step (2), the state of each node is set according to the positional relationship between the node and the winding area, the component, the obstacle, and the winding topology: invalid nodes, blocking nodes or common nodes; setting the width occupied by each node in the horizontal direction and the vertical direction according to the preset winding width and the position information of the node;
wherein, the invalid node refers to a node which is not in the winding area and a node which is in the influence range of the component or the obstacle; the shielding node is a node in the influence range of the winding topological structure; the normal nodes refer to the remaining nodes except for the invalid node and the blocking node.
4. The 3D winding method based on collision detection according to claim 1, wherein in the step (3), after the start pin and the destination pin of the network to be wound are obtained, the start node and the destination node are determined according to the lead-out point and the lead-out direction of the pin.
5. The 3D winding method based on collision detection according to claim 3, wherein in the step (3), in the process of wire exploration, traversing and exploring adjacent nodes except for a parent node of the current node cur_grid, acquiring adjacent nodes adj in a common node state, respectively judging whether each adj can be wound or not by using collision detection, and using the adj capable of being wound as a candidate node for determining a new current node from the candidate nodes;
whether each adj can be wound or not is judged by utilizing collision detection, and the method is concretely as follows:
traversing the exploration directions of the adj, and exploring adjacent nodes check_node of the adj in each exploration direction; if the adj acquires adjacent nodes check_node, each check_node is used for judging whether the adj is windable in sequence, when all check_nodes are used for respectively obtaining that the adj is windable, the adj is judged to be windable, and when any check_node is used for obtaining that the adj is not windable, the adj is judged to be windable and collision detection is finished;
any check_node is taken, and whether adj can be wound or not is judged: firstly, calculating a distance dist between the check_node and the adj, and judging whether the adj can be wound according to different conditions:
case 1) if check_node is the destination node, judging that adj is windable;
case 2) if check_node is an invalid node, judging that adj is windable when dist is not smaller than a preset threshold A, otherwise judging that adj is not windable;
3) if check_node is an occlusion node, judging that adj is windable when dist is not smaller than a preset threshold B, otherwise judging that adj is not windable;
case 4) if check_node is a normal node, determining whether adj is windable according to the position information of dist and check_node.
6. The 3D winding method based on collision detection according to claim 5, wherein when there is more than one node with the smallest cost among the candidate nodes, the node with the smallest cost and the smallest turning value is selected as a new current node from the candidate nodes;
the calculation mode of the turning value turn_cnt of the candidate node is as follows:
if the direction from the parent node of the current node cur_grid to the current node cur_grid is different from the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count+1;
if the direction from the parent node of the current node cur_grid to the current node cur_grid is the same as the direction from the current node cur_grid to the candidate node adj, turn_cnt=turn_count;
the turn_count is a turning value of the current node cur_grid.
7. The 3D winding method based on collision detection according to claim 6, wherein when there is more than one node with the smallest cost and turning value among the candidate nodes, the node with the smallest cost, turning value and number of used layers is selected as a new current node from the candidate nodes;
the number of layers used by the candidate node refers to the number of layers of the winding plane through which the current node passes to the candidate node.
8. The 3D winding method based on collision detection according to claim 1, wherein in the step (3), for the network to be wound, which is successfully explored by the wiring, winding is performed according to the winding width of each node in the path to generate a winding topology;
the winding width of the node is as follows: when a winding topology in the horizontal direction is generated, the width occupied by the node in the vertical direction is used as the winding width, and when a winding topology in the vertical direction is generated, the width occupied by the node in the horizontal direction is used as the winding width.
9. A 3D winding method based on collision detection according to claim 3, wherein the width occupied by each node in the horizontal direction and in the vertical direction is set according to the preset winding width and the position information of the node, and the method specifically comprises the following steps:
the width occupied by each node is initialized:
x_occupied_width=width
y_occupied_width=width
wherein, the x_occupied_width refers to the width occupied by the node in the horizontal direction, and the y_occupied_width refers to the width occupied by the node in the vertical direction; the width refers to a preset winding width;
judging whether each node is on a pin lead-out wire in turn, wherein the lead-out wire of the pin refers to a ray generated by taking a lead-out point of the pin as an endpoint and taking the lead-out direction of the pin as a direction; if a node is on the horizontal lead-out line, the vertical coordinate values of the upper and lower edges of the pin are set to be py 1 ,py 2 The width occupied by the node in the vertical direction is set as: y_buffered_width=py 1 -py 2 The method comprises the steps of carrying out a first treatment on the surface of the If a node is on a vertical pin lead, the horizontal coordinate values of the left and right edges of the pin are respectively px 1 ,px 2 The width occupied by the node in the horizontal direction is set as: x_buffered_width=px 2 -px 1
10. The 3D winding method based on collision detection according to claim 5, wherein one node with the smallest cost is selected from candidate nodes as a new current node;
the cost new_cost of the candidate node is calculated in the following manner:
if the abscissa of the candidate node is the same as the abscissa of the current node, then new_cost=dist_width/y_isolated_width+cost;
if the ordinate of the candidate node is the same as the ordinate of the current node, then new_cost=dist;
if the candidate node and the current node are respectively positioned on different winding planes, and the horizontal coordinates and the vertical coordinates are the same, new_cost=0;
wherein dist refers to the distance between the candidate node and the current node; the width refers to a preset winding width; the x_occupied_width refers to the width occupied by the candidate node in the horizontal direction; the y_occupied_width refers to the width occupied by the candidate node in the vertical direction; the cost is the cost of the current node.
11. A storage device having stored therein a plurality of instructions adapted for loading and execution by a processor: the collision detection-based 3D winding method of any one of claims 1 to 8.
12. A 3D winding system based on collision detection, comprising a processor adapted to implement instructions and a memory device adapted to store instructions adapted to be loaded and executed by the processor to: the collision detection-based 3D winding method of any one of claims 1 to 8.
CN201911228136.7A 2019-12-04 2019-12-04 3D winding method, storage device and system based on collision detection Active CN110941940B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911228136.7A CN110941940B (en) 2019-12-04 2019-12-04 3D winding method, storage device and system based on collision detection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911228136.7A CN110941940B (en) 2019-12-04 2019-12-04 3D winding method, storage device and system based on collision detection

Publications (2)

Publication Number Publication Date
CN110941940A CN110941940A (en) 2020-03-31
CN110941940B true CN110941940B (en) 2023-06-13

Family

ID=69910184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911228136.7A Active CN110941940B (en) 2019-12-04 2019-12-04 3D winding method, storage device and system based on collision detection

Country Status (1)

Country Link
CN (1) CN110941940B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116911246B (en) * 2023-09-14 2023-12-08 芯行纪科技有限公司 Wiring planning method for chip design and related equipment

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520565A (en) * 2000-12-07 2004-08-11 凯登斯设计系统有限公司 Wiring method and apparatus
CN1963827A (en) * 2006-12-08 2007-05-16 清华大学 Automatic wiring method of analog integrated circuit based on multiple step length labyrinth algorithm
CN102222124A (en) * 2011-03-22 2011-10-19 北京航空航天大学 Platform and method for automatically generating design schematic diagram of automatic test system
CN102346795A (en) * 2011-09-16 2012-02-08 华中科技大学 Automatic quick wiring method for electric and electronic virtual experiments
CN103488816A (en) * 2013-09-02 2014-01-01 清华大学 Multi-layer precise matching wiring method for simulation circuit
CN103984789A (en) * 2014-01-26 2014-08-13 福州大学 Obstacle bypassing wiring method based on optimization of shortest wire length in large-sized integrated circuit design
CN108714303A (en) * 2018-05-16 2018-10-30 深圳市腾讯网络信息技术有限公司 Collision checking method, equipment and computer readable storage medium
CN108959753A (en) * 2018-06-26 2018-12-07 广州视源电子科技股份有限公司 Collision detection method, system, readable storage medium and computer equipment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5884424B2 (en) * 2011-11-15 2016-03-15 富士通株式会社 Wiring design support device, wiring design support program, and wiring design support method

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1520565A (en) * 2000-12-07 2004-08-11 凯登斯设计系统有限公司 Wiring method and apparatus
CN1963827A (en) * 2006-12-08 2007-05-16 清华大学 Automatic wiring method of analog integrated circuit based on multiple step length labyrinth algorithm
CN102222124A (en) * 2011-03-22 2011-10-19 北京航空航天大学 Platform and method for automatically generating design schematic diagram of automatic test system
CN102346795A (en) * 2011-09-16 2012-02-08 华中科技大学 Automatic quick wiring method for electric and electronic virtual experiments
CN103488816A (en) * 2013-09-02 2014-01-01 清华大学 Multi-layer precise matching wiring method for simulation circuit
CN103984789A (en) * 2014-01-26 2014-08-13 福州大学 Obstacle bypassing wiring method based on optimization of shortest wire length in large-sized integrated circuit design
CN108714303A (en) * 2018-05-16 2018-10-30 深圳市腾讯网络信息技术有限公司 Collision checking method, equipment and computer readable storage medium
CN108959753A (en) * 2018-06-26 2018-12-07 广州视源电子科技股份有限公司 Collision detection method, system, readable storage medium and computer equipment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邵康鹏等.高效率集成电路测试芯片设计方法.计算机工程与应用.2013,第49卷(第11期),第54-57页. *

Also Published As

Publication number Publication date
CN110941940A (en) 2020-03-31

Similar Documents

Publication Publication Date Title
CN111368493B (en) Automatic layout wiring generation method based on sparse grid
US20210034807A1 (en) Method of designing a device
US7340711B2 (en) Method and apparatus for local preferred direction routing
US8527930B2 (en) Generating and using route fix guidance
US9064082B2 (en) Updating pin locations in a graphical user interface of an electronic design automation tool
JPH05205011A (en) Circuit board and its wiring pattern deciding method
US10831972B2 (en) Capacity model for global routing
CN110968983B (en) Interactive wiring method
CN113591430B (en) Method for detecting layout wiring net violation
US9372952B1 (en) Methods, systems, and articles of manufacture for enhancing metrics of electronic designs using design rule driven physical design implementation techniques
CN110941940B (en) 3D winding method, storage device and system based on collision detection
JP2010198466A (en) Wiring design method for wiring board
CN111291528B (en) 3D winding method and system for different winding layers
CN111027273A (en) Layout automatic winding method, storage device and system based on pre-winding
US8352890B2 (en) Method for reading polygon data into an integrated circuit router
JP4086816B2 (en) Layer number estimation apparatus and method for BGA component mounting board, and layer number estimation program
US8171444B2 (en) Layout design method, apparatus and storage medium
JP5309835B2 (en) Wiring information generation apparatus, method, and program
US20240037311A1 (en) Multi-layer integrated circuit routing tool
JP5900540B2 (en) Layout design method and layout design support program
US8843869B1 (en) Via insertion in integrated circuit (IC) designs
JPH1065007A (en) Apparatus and method for designing semiconductor integrated circuit
CN116894418B (en) Method, device, equipment and medium for correcting macro unit pin through hole position deviation
US11544438B2 (en) Superconductive circuit splitter placement
US20240265187A1 (en) Circuit layout routing method and apparatus, device, storage medium, and product

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room A407, Neusoft venture building, 99 Huaxing Road, Xihu District, Hangzhou City, Zhejiang Province, 310012

Applicant after: Hangzhou Guangli Microelectronics Co.,Ltd.

Address before: Room A407, Neusoft venture building, 99 Huaxing Road, Xihu District, Hangzhou City, Zhejiang Province, 310012

Applicant before: Semitronix Corp.

GR01 Patent grant
GR01 Patent grant