An integrated circuit wiring method, computer device and storage medium
By improving the combination of the DPSO algorithm and the A* algorithm, the integrated circuit routing method is optimized, solving the problems of slow convergence speed and low efficiency in the existing technology, and achieving faster routing speed and higher design efficiency.
Patent Information
- Application Number
- CN202411374019.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-29
- Publication Date
- 2025-11-28
- Estimated Expiration
- 2044-09-29
AI Technical Summary
Existing integrated circuit wiring technology suffers from slow convergence speed and low efficiency, which slows down circuit design and manufacturing progress and causes economic losses.
By combining the improved DPSO algorithm and the A-Star algorithm, and through iterative optimization of inertia weight and acceleration coefficient, port location information is optimized, thereby improving cabling efficiency.
It speeds up wiring, improves circuit design efficiency, reduces the likelihood of the improved DPSO algorithm getting stuck in local optima, and increases the probability of finding the global optimum.
Smart Images

Figure CN119337811B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present application relates to the field of circuit technology, and in particular to an integrated circuit wiring method, a computer device and a storage medium. BACKGROUND
[0002] With the rapid development of engineering technology, circuit design has entered a new era, and high-speed circuit design has become the mainstream of electronic engineering technology development. Therefore, the requirements for analog integrated circuit design are becoming higher and higher. The quality of analog integrated circuit design greatly affects its anti-interference ability. Therefore, when designing an analog integrated circuit, the basic principles of analog integrated circuit design must be followed, and the requirements of anti-interference design should be met to obtain the best performance of the circuit.
[0003] Routing is an important link in the field of Electronic Design Automation (EDA), especially in the design of analog integrated circuit layout. Different analog integrated circuits have different line arrangement requirements while realizing different functions, but they all need to solve the problem of efficiency. The current integrated circuit wiring technology has the problems of slow convergence speed and low efficiency, which slows down the progress of circuit design and manufacturing, causes economic losses and other problems. SUMMARY
[0004] In view of the technical problems of slow convergence speed and low efficiency of the current integrated circuit wiring technology, the purpose of the present application is to provide an integrated circuit wiring method, a computer device and a storage medium.
[0005] In one aspect, the embodiment of the present application includes an integrated circuit wiring method, which comprises the following steps:
[0006] Obtaining initial port position information of circuit devices;
[0007] Using an improved DPSO algorithm to process each of the initial port position information to obtain first optimized port position information; wherein the inertia weight used by the improved DPSO algorithm is determined by an acceleration coefficient;
[0008] Using an A-star algorithm to process the first optimized port position information to obtain second optimized port position information;
[0009] Wiring according to the second optimized port position information.
[0010] Further, the using an improved DPSO algorithm to process each of the initial port position information comprises:
[0011] Performing a multi-round iteration process;
[0012] determining the first optimized port position information according to the population position obtained in the last iteration process;
[0013] In any iteration process, the following steps are performed:
[0014] obtaining a population position and a population fitness; wherein, when the current iteration process is the first iteration process, the population position is determined by the initial port position information, and the population fitness is determined by initialization, and when the current iteration process is not the first iteration process, the population position and the population fitness are updated from the last iteration process;
[0015] updating an acceleration coefficient and an inertia weight; wherein, when the current iteration process is the first iteration process, the acceleration coefficient and the inertia weight are determined by initialization, and when the current iteration process is not the first iteration process, the acceleration coefficient and the inertia weight are updated from the last iteration process;
[0016] updating the population position and the population fitness according to the updated acceleration coefficient and inertia weight;
[0017] determining whether the iteration stopping condition is met;
[0018] when it is determined that the iteration stopping condition is met, stopping the iteration process, otherwise, performing the next iteration process.
[0019] Further, the acceleration coefficient includes a first acceleration coefficient and a second acceleration coefficient, and the updating of the acceleration coefficient and the inertia weight includes:
[0020] according to the formula
[0021]
[0022]
[0023]
[0024] performing calculation;
[0025] wherein, is the first acceleration coefficient before updating, is the first acceleration coefficient after updating, is the second acceleration coefficient before updating, is the second acceleration coefficient after updating, is the inertia weight after updating, is the final value of the first acceleration coefficient, is the final value of the second acceleration coefficient, is a maximum iteration round number, is determined by the iteration round number corresponding to the current iteration process.
[0026] Further, the updating the population position and the population energy according to the updated acceleration coefficient and the inertia weight comprises:
[0027] updating the inertia velocity, the individual optimal velocity and the population optimal velocity according to the updated acceleration coefficient and the inertia weight;
[0028] updating the population position and the population energy according to the updated inertia velocity, the individual optimal velocity and the population optimal velocity.
[0029] Further, the judging whether the iteration stop condition is met comprises:
[0030] obtaining the iteration round number corresponding to the current iteration process;
[0031] obtaining the size of the updated first acceleration coefficient and the second acceleration coefficient;
[0032] when the iteration round number reaches the maximum iteration round number, the first acceleration coefficient reaches a first terminal value or the second acceleration coefficient reaches a second terminal value, it is determined that the iteration stop condition is met.
[0033] Further, the processing the first optimized port position information by using the A-star algorithm to obtain second optimized port position information comprises:
[0034] determining at least one start point position information and at least one end point position information according to the first optimized port position information;
[0035] determining at least one to-be-processed path according to each start point position information and each end point position information;
[0036] obtaining at least one intersection point between each to-be-processed path;
[0037] traversing each intersection point, for any traversed intersection point, when it is detected that the Manhattan distance between the intersection point and an adjacent intersection point on the same to-be-processed path is greater than a distance threshold, obtaining a middle point between the intersection point and the adjacent intersection point, and setting the middle point as a new intersection point;
[0038] obtaining the respective directions of each intersection point;
[0039] taking the positions and directions of each intersection point as the second optimized port position information.
[0040] Further, the obtaining of the respective direction corresponding to each of the intersections comprises:
[0041] For any of the intersections, when the intersection is not the intermediate point, the start point distance and the end point distance corresponding to the intersection are obtained, the maximum value between the start point distance and the end point distance is determined as a target end point, and the direction formed by the intersection and the target end point is determined as the respective direction corresponding to the intersection; wherein the start point distance is the Manhattan distance between the intersection and the start point position information of the to-be-processed path where the intersection is located, and the end point distance is the Manhattan distance between the intersection and the end point position information of the to-be-processed path where the intersection is located.
[0042] When the intersection is the intermediate point, the direction of the intersection and the to-be-processed path where the intersection is located is determined as the respective direction corresponding to the intersection.
[0043] Further, the wiring according to the second optimized port position information comprises:
[0044] For any of the to-be-processed paths, a corresponding wiring path is generated; the wiring path starts from the start point position information corresponding to the to-be-processed path, passes through each of the intersections corresponding to the to-be-processed path in turn, and reaches the end point position information corresponding to the to-be-processed path, and the direction of the wiring path passing through the intersection is the same as the direction corresponding to the intersection.
[0045] Wiring is performed according to the wiring path.
[0046] In another aspect, the embodiments of the present application also include a computer device comprising a memory and a processor, the memory is used to store at least one program, and the processor is used to load the at least one program to execute the integrated circuit wiring method in the embodiments.
[0047] In another aspect, the embodiments of the present application also include a computer readable storage medium, wherein the computer readable storage medium stores a program executable by a processor, and the program executable by the processor is used to execute the integrated circuit wiring method in the embodiments when executed by the processor.
[0048] The beneficial effects of the present application are: the integrated circuit wiring method in the embodiment uses the inertia weight in the improved DPSO algorithm, which is determined by the acceleration coefficient used by the improved DPSO algorithm, so that more target and constraint conditions are introduced, and the inertia weight can converge with the acceleration coefficient in common iteration, and the convergence speed of the inertia weight itself and the overall convergence speed of the improved DPSO algorithm can be strengthened, so as to improve the efficiency of the algorithm, speed up the wiring speed, improve the circuit design efficiency, reduce the possibility of the improved DPSO algorithm falling into a local optimal solution, and help the improved DPSO algorithm to find a global optimal solution. BRIEF DESCRIPTION OF DRAWINGS
[0049] Figure 1 A schematic diagram of the steps of the integrated circuit wiring method in the embodiment;
[0050] Figure 2 A schematic diagram of the port position in the coordinate form in the embodiment;
[0051] Figure 3 A schematic diagram of the port position in the graphical form in the embodiment;
[0052] Figure 4 A schematic diagram of the horizontal path and the vertical path in the embodiment;
[0053] Figure 5 A schematic diagram of the wiring result in the embodiment. DETAILED DESCRIPTION
[0054] In the embodiment, referring to Figure 1 , the integrated circuit wiring method comprises the following steps:
[0055] S1. Obtain initial port position information of the circuit device;
[0056] S2. Process each initial port position information using the improved DPSO algorithm to obtain first optimized port position information;
[0057] S3. Process the first optimized port position information using the A-star algorithm to obtain second optimized port position information;
[0058] S4. Perform wiring according to the second optimized port position information.
[0059] The steps S1-S4 can be executed by a computer, specifically, by EDA software run by the computer.
[0060] In step S1, after the EDA process completes the selection of circuit components and topology connections, at least one circuit component (specifically, a resistor, capacitor, inductor, diode, and transistor, etc.) and multiple ports (also called pins) will be formed. The positions of these ports need to be further arranged in steps S2-S4, and each has a corresponding initial position before executing steps S2-S4. For example, as... Figure 2 As shown, it contains multiple coordinates, each describing the initial position of a port of a circuit device, thereby obtaining the initial port position information in step S1. That is, each initial port position information represents the initial state (before steps S2-S4 have been executed). Figure 2 The coordinates in the diagram describe the location of the ports of the circuit devices.
[0061] For example, it can be Figure 2 The coordinates in the graph are graphically represented as Figure 3 The multiple squares shown correspond to a port of a circuit device. The position of the square represents the geometric position of the port in the circuit. In the initial state, the position of each square is represented by the corresponding initial port position information.
[0062] In step S2, the improved DPSO (Discrete Particle Swarm Optimization) algorithm is used to process the initial port position information.
[0063] In this embodiment, the improved DPSO algorithm used in step S2 uses inertial weights determined by the acceleration coefficients it employs. For example, in the improved DPSO algorithm, when iterating the inertial weights, new inertial weights are calculated based on the acceleration coefficients used in the improved DPSO algorithm.
[0064] In step S2, the improved DPSO algorithm is used to process the initial port location information, thereby optimizing the initial port location information. Specifically, the content of each initial port location information (the corresponding port location coordinates) may change, thus corresponding to a new location (coordinates), which is the first optimized port location information in step S2.
[0065] In this embodiment, each initial port location information is optimized by the improved DPSO algorithm to obtain a corresponding first optimized port location information. Specifically, for each initial port location information, the position coordinates represented by its corresponding first optimized port location information may or may not have changed from the position coordinates it represents. However, the combination of position coordinates described by all the first optimized port location information is likely to have changed relative to the combination of position coordinates described by all the initial port location information. This is the optimization result of the improved DPSO algorithm.
[0066] Similarly, in step S3, each first optimized port position information is processed using the A-star algorithm, and each first optimized port position information is optimized. In this embodiment, each first optimized port position information is optimized by the A-star algorithm to obtain a corresponding second optimized port position information. Each second optimized port position information obtained through optimization forms a new combination of position coordinates.
[0067] In step S4, each second optimized port position information obtained in step S3 is used as the position coordinates of the ports (pins) in the circuit device in the circuit, and each port (pin) is connected according to the topological connection relationship between the ports (pins) in the circuit device, thereby realizing the wiring of the circuit.
[0068] In this embodiment, the principles of steps S1-S4 are as follows: if the inertia weight unrelated to the acceleration coefficient is used in the improved DPSO algorithm, for example, by the formula
[0069]
[0070] iterating the inertia weight (wherein represents the updated inertia weight, represents the inertia weight before updating, represents the final value of the inertia weight, represents the maximum number of iteration rounds, and the number of iteration rounds), the convergence speed of the inertia weight is relatively fixed and cannot converge with the acceleration coefficient through common iteration, so the efficiency of the algorithm is relatively low; when performing steps S1-S4 for integrated circuit wiring, the inertia weight in the improved DPSO algorithm is determined by the acceleration coefficient used in the same algorithm (i.e., the improved DPSO algorithm), which is equivalent to setting the coupling relationship between the inertia weight and the acceleration coefficient in the improved DPSO algorithm, thereby introducing more objectives and constraints, so the inertia weight can converge with the acceleration coefficient through common iteration, the convergence speed of the inertia weight itself and the overall convergence speed of the improved DPSO algorithm can be improved, thereby improving the efficiency of the algorithm, which is conducive to speeding up the wiring and improving the efficiency of circuit design, and the introduction of more objectives and constraints is also conducive to reducing the possibility of the improved DPSO algorithm falling into a local optimal solution and finding a global optimal solution.
[0071] In this embodiment, when performing step S2, that is, processing each initial port position information using the improved DPSO algorithm, the following steps can be performed:
[0072] S201. Perform a plurality of rounds of iteration processes;
[0073] S202. Determine the first optimized port position information according to the population position obtained in the last iteration process.
[0074] In step S201, the principle of each iteration process is similar, and one iteration process is taken as an example for description. In any iteration process, the following steps are executed:
[0075] S20101. Obtain the population position and the population energy;
[0076] S20102. Update the acceleration coefficient and the inertia weight;
[0077] S20103. Update the population position and the population energy according to the updated acceleration coefficient and the inertia weight;
[0078] S20104. Determine whether the iteration stopping condition is met;
[0079] S20105. When it is determined that the iteration stopping condition is met, stop executing the iteration process, otherwise, execute the next iteration process.
[0080] The steps S20101-S20105 above are the steps executed in a specific iteration process, which is referred to as the “current iteration process” in this embodiment.
[0081] The idea of improving the DPSO algorithm is to regard each port (pin) as a discrete particle, and to optimize the position of the discrete particle through iteration.
[0082] In step S20101, if the current iteration process is the first iteration process, the population position can be determined according to the initial port position information , and the population energy is initialized ; if the current iteration process is not the first iteration process, that is, the iteration process after the first iteration process, the population position and the population energy updated in the last iteration process are used in step S20101 of the current iteration process.
[0083] In step S20102, if the current iteration process is the first iteration process, the acceleration coefficient and the inertia weight are initialized ; in this embodiment, two acceleration coefficients, i.e., the first acceleration coefficient and the second acceleration coefficient are used; if the current iteration process is not the first iteration process, that is, the iteration process after the first iteration process, the first acceleration coefficient Second acceleration coefficient and inertia weight .
[0084] For example, if this iteration process is the first iteration process, then when executing step S20102, the first acceleration coefficient can be initialized and generated. The value is =0.9, initialize and generate the second acceleration coefficient. The value is =0.4, then according to the formula
[0085]
[0086] The first acceleration coefficient was calculated. With the second acceleration coefficient sum Then according to the formula
[0087]
[0088] The inertia weight is calculated. Due to the aforementioned first acceleration coefficient Second acceleration coefficient All are generated through initialization, therefore the calculated inertia weights It is essentially generated during initialization.
[0089] If this iteration is not the first iteration, then when executing step S20102, the first acceleration coefficient obtained after the update (or initialization) of the previous iteration is retrieved (becoming the acceleration coefficient in this iteration). ) and the second acceleration coefficient (which becomes the acceleration coefficient in this iteration process) ), and then according to the formula
[0090]
[0091] The first acceleration coefficient obtained from the current iteration process is calculated. Then according to the formula
[0092]
[0093] The second acceleration coefficient obtained from the current iteration process is calculated. According to the formula
[0094]
[0095] The updated first acceleration coefficient was calculated. With the updated second acceleration coefficient sum , and the updated inertia weight is calculated according to the formula
[0096]
[0097] The updated inertia weight is calculated according to the formula .
[0098] In the above formula, is the final value of the first acceleration coefficient, is the final value of the second acceleration coefficient, is the maximum number of iterations, , and are fixed values, which can be taken as = 0.2, = 0.9, = 500. is determined by the number of iterations corresponding to the current iteration process, specifically, the number of iterations plus 1, for example, the current iteration process is the 5th iteration process, then the number of iterations is 4, that is, used in the current iteration process is 5.
[0099] After step S20102 is executed, step S20103 is executed. In step S20103, the population position and the population energy are updated according to the updated first acceleration coefficient , the second acceleration coefficient and the inertia weight of the current iteration process.
[0100] Specifically, in step S20103, the inertia velocity , the individual optimal velocity and the group optimal velocity can be updated in a random disturbance manner according to the updated first acceleration coefficient , the second acceleration coefficient and the inertia weight , and the population position and the population energy are updated according to the updated inertia velocity , the individual optimal velocity and the group optimal velocity .
[0101] The inertia velocity represents the inertia direction of the discrete particle, which is determined by 0 or 1, and the inertia velocity is 0, which means connecting vertically first and then connecting horizontally, and the inertia velocity 1 means horizontal connection first and then vertical connection. Therefore, when step S20103 is executed, the inertia velocity is updated as follows: comparing the random number generated by python with the inertia weight , if the random number is less than the inertia weight , the direction of the inertia velocity is kept unchanged; otherwise, if the random number is greater than or equal to the inertia weight , the inertia velocity is changed to the other direction, i.e. from 0 to 1 or from 1 to 0.
[0102] When step S20103 is executed, the individual optimal velocity is updated as follows: comparing the random number with the first acceleration coefficient , if the random number is greater than the first acceleration coefficient , the direction of the inertia velocity is selected as the direction of the individual optimal velocity ; otherwise, if the random number is less than or equal to the first acceleration coefficient , the newly generated random number is compared with the first acceleration coefficient again, if the newly generated random number is greater than the first acceleration coefficient , the direction of the group position [i][j][2] is selected as the direction of the individual optimal velocity ; otherwise, if the random number is less than or equal to the first acceleration coefficient , the direction of the inertia velocity is selected as the direction of the individual optimal velocity .
[0103] When step S20103 is executed, the group optimal velocity is updated as follows: if the group position is None, the group optimal velocity is assigned according to the individual optimal velocity ; if the group position is not empty, the iteration is performed in the same way as the individual optimal velocity , for example, the value of the first acceleration coefficient is changed to be the same as the value of the second acceleration coefficient , and the individual position [i][j][2] is changed to be the same as the group position [i][j][2], i.e. the individual optimal velocity is absorbed as the group optimal velocity with a certain probability, otherwise the original group optimal velocity is kept unchanged.
[0104] During step S20103, the group location... and group physical fitness The update process is as follows:
[0105] For multiple discrete particles, obtain their individual positions. The minimum spanning tree method (Prim's algorithm) is used to connect the nodes, and the connection order of each node is obtained. ;according to To obtain the Manhattan distance between any two discrete particles, iterate through all particles and sum the Manhattan distances between each particle and its neighboring particles. Multiply this sum by a coefficient α to obtain the particle's volume energy. In this embodiment, α = 0.02; according to Obtain the current position of any discrete particle. Specifically, the current position of any discrete particle It can be calculated as follows: According to Obtain the connection relationships between this discrete particle and other discrete particles (if another discrete particle is first vertically connected to this discrete particle and then horizontally connected, the connection relationship between the other discrete particle and this discrete particle is 0; if another discrete particle is first horizontally connected to this discrete particle and then vertically connected, the connection relationship between the other discrete particle and this discrete particle is 1). Then, sum up all the connection relationships corresponding to this discrete particle to obtain the current position of this discrete particle. ;
[0106] The particle energy was calculated. and current location Afterwards, if the group's physical fitness Greater than particle energy This will improve the group's physical fitness. Updated to particle energy and group location Updated to the particle's current position Conversely, maintaining group physical fitness and group position Unchanged; for any discrete particle, if its individual physical energy Greater than particle energy Then their individual physical fitness Updated to particle energy And its individual location Updated to the particle's current position Conversely, maintaining individual physical fitness and individual location constant.
[0107] After S20103 is executed, itself is increased by 1, i.e. +1.
[0108] In step S20104, it is determined whether an iteration stop condition of the current iteration process is met. Specifically, the iteration stop condition can be set as "at least one of the following three conditions is met: (1) the number of iterations reaches a maximum number of iterations ; (2) the updated first acceleration coefficient reaches a first terminal value ; (3) the second acceleration coefficient reaches a second terminal value ".
[0109] When it is detected that the iteration stop condition is met, then in step S20105, the iteration process is stopped, i.e. the next iteration process is not executed, and the current iteration process is the last iteration process. If the iteration stop condition is not met, then the current iteration process is ended, and the next iteration process is started, i.e. steps S20101-S20105 are executed again.
[0110] After the last iteration process S20101-S20105 is executed, the obtained population position is a distribution of position coordinates, which represents the new position of each port (pin) after optimization of the position coordinates. Therefore, in step S202, the first optimized port position information is determined according to the population position obtained in the last iteration process.
[0111] In this embodiment, when step S3 is executed, i.e. the first optimized port position information is processed using the A* algorithm to obtain the second optimized port position information, the following steps can be executed:
[0112] S301. The at least one start point position information and the at least one end point position information are determined according to the first optimized port position information.
[0113] S302. The at least one path to be processed is determined according to the start point position information and the end point position information.
[0114] S303. At least one intersection point between the paths to be processed is obtained.
[0115] S304. Each intersection point is traversed. For any traversed intersection point, when it is detected that the Manhattan distance between the intersection point and another intersection point on the same path to be processed is greater than a distance threshold, an intermediate point between the intersection point and the other intersection point is obtained, and the intermediate point is set as a new intersection point.
[0116] S305. Obtain the direction of each intersection point respectively;
[0117] S306. Take the position and direction of each intersection point as the second optimization port position information.
[0118] In step S301, at least one first optimization port position information is determined as the start point position information and at least one first optimization port position information is determined as the end point position information from the coordinates of each port represented by the first optimization port position information. The start point position information represents the start point of the wiring and the end point position information represents the end point of the wiring. The start point position information and the end point position information can be determined by the EDA task.
[0119] When step S302 is performed, the following steps can be performed:
[0120] S30201. Add each start point position information and end point position information to the open list.
[0121] S30202. Repeat the following process:
[0122] (1) Start point: traverse the open list to find the start point position information with the smallest F value (F=G+H, G is the actual moving distance and H is the estimated moving distance), and take it as the node to be processed currently;
[0123] (2) Path finding: divide the path area (the area to be routed) into multiple squares, so that each second optimization port position information is divided into a corresponding square; take the square where the node to be processed currently is located as the central square, find the square with the smallest F value in the 8 adjacent squares of the central square, and take the found square as the new node;
[0124] (3) Storage: store the new node to the close list;
[0125] (4) Termination: if the new node stored to the close list is not the end point position information, then jump back to step (2) to continue to find the new node; if the new node stored to the close list is the end point position information, then a path is established, which starts from the start point position information determined in step (1) in the same round of steps (1)-(4), passes through at least one "new node" determined in step (2), and reaches the end point position information;
[0126] (5) Save the path obtained in step (4) as the to-be-processed path.
[0127] Before executing step S303, the path to be processed can be classified into horizontal or vertical paths, and then optimized according to the classification.
[0128] Specifically, refer to Figure 4 For each path to be processed, the following process can be performed: obtain the starting point and ending point information of the path to be processed. If the x-coordinate of the starting point information and the x-coordinate of the ending point information are equal, then the path to be processed is classified as a horizontal path. If the y-coordinate of the starting point information and the y-coordinate of the ending point information are equal, then the path to be processed is classified as a vertical path. If the above conditions are not met, then the path to be processed is neither a horizontal path nor a vertical path.
[0129] For paths to be processed that are either horizontal or vertical, obstacles in the path can be corrected by increasing the filtering distance between the starting and ending points of the path.
[0130] In step S303, all paths to be processed are compared pairwise to determine the intersection point formed by any two paths. In this embodiment, it is assumed that there are paths to be processed. (The corresponding starting position information is) and destination location information ), Path to be processed (The corresponding starting position information is) and destination location information ) and the path to be processed (The corresponding starting position information is) and destination location information ), where the path to be processed With the path to be processed Forming an intersection Path to be processed With the path to be processed Forming an intersection .
[0131] In step S304, each intersection point is traversed. For example, the intersection points are obtained through step S303. and traverse to the intersection point Due to the intersection Intersections with other intersections Belonging to the same pending path (pending path) Therefore, the intersection point is detected. Intersection Manhattan distance between them, if the intersection point Intersection If the Manhattan distance between the points is less than or equal to a distance threshold, then the operation of finding a new intersection point is not performed; in this embodiment, it is assumed that the intersection point... Intersection If the Manhattan distance between them is greater than a distance threshold, then obtain the intersection point. Intersection midpoint (Specifically, it could be the path to be processed) The upper part is located at the intersection. Intersection The point that is exactly in the middle (or a point that is not exactly in the middle) is the midpoint. Mark it as the new intersection.
[0132] In step S305, the direction corresponding to each intersection point is obtained. Specifically, for and For intersections that are not intermediate points, obtain the starting and ending distances corresponding to the intersection points; specifically, based on the intersection points... For example, due to the intersection Located in the path to be processed The above is located in the path to be processed. Above, therefore the intersection The corresponding starting point distance, including the intersection point. With the path to be processed The starting position information is Manhattan distance between them, and the path to be processed The starting position information is Manhattan distance between them; intersection The corresponding destination distance, including the intersection. With the path to be processed The endpoint location information is Manhattan distance between them, and the path to be processed The endpoint location information is Manhattan distance between them; assuming the intersection point With the path to be processed The starting position information is The Manhattan distance between them is the maximum value among the aforementioned Manhattan distances, then the path to be processed... The starting position information is It is the intersection point The target endpoint will be the intersection point. With the target endpoint The direction of formation (specifically, the path to be processed) The direction determined above, that is, from the target endpoint Point to the intersection ), determined as the intersection point The corresponding direction.
[0133] In step S305, for For intersections that are intermediate points, the direction of the intersection and the path to be processed is determined as the direction corresponding to the intersection. For example, intersection... In the path to be processed Above, then the intersection point The corresponding direction is from the path to be processed. The starting position information is Pointing to the destination location information The direction.
[0134] Step S305 is performed for each intersection to obtain the direction of each intersection. In step S306, the position and direction of an intersection constitute the second optimized port position information of that intersection.
[0135] In this embodiment, when performing step S4, which is the step of wiring based on the second optimized port location information, the following steps can be performed:
[0136] S401. For any path to be processed, generate the corresponding routing path;
[0137] S402. Perform wiring according to the wiring path.
[0138] In step S401, the path to be processed is... For example, the path to be processed This includes the starting point location information. Intersection Intersection Intersection and destination location information Key points, starting from the starting point location information Begin, along the intersection The corresponding direction passes through the intersection point Then along the intersection The corresponding direction passes through the intersection point Then along the intersection The corresponding direction passes through the intersection point Finally, the destination location information The above trajectory forms a wiring path.
[0139] In step S402, the routing path generated in step S401 is used to determine the direction of the wires connecting the two corresponding ports (pins), thereby completing the wiring. In this embodiment, a schematic diagram of the wiring result obtained by executing steps S401-S402 is shown.
[0140] In this embodiment, by performing steps S301-S306, the intersection points in each to-be-processed path can be determined and optimized, so that when steps S401-S402 are performed, in addition to being able to determine the starting portion and ending portion of the to-be-processed path according to the starting point position information and the ending point position information of the to-be-processed path, the intermediate portion of the to-be-processed path can also be determined according to the intersection points of the to-be-processed path, thereby facilitating the standardization of the to-be-processed path, and reducing the possibility of obstacles caused by conflicts between different paths.
[0141] The integrated circuit routing method in the embodiment can be implemented by writing a computer program for executing the integrated circuit routing method in the embodiment, writing the computer program into a computer device or a storage medium, and reading out and running the computer program to execute the integrated circuit routing method in the embodiment, thereby achieving the same technical effects as the integrated circuit routing method in the embodiment.
[0142] It should be noted that, unless otherwise specified, when a feature is said to be “fixed” or “connected” to another feature, it can be directly fixed or connected to the other feature, or indirectly fixed or connected to the other feature. In addition, the up, down, left, right and other descriptions used in the disclosure are only relative to the relative positional relationship of the components of the disclosure in the drawings. The singular forms “a”, “an” and “the” used in the disclosure are also intended to include the plural forms, unless the context clearly indicates otherwise. In addition, unless otherwise defined, all technical and scientific terms used in the embodiments have the same meanings as generally understood by those skilled in the art. The terms used in the embodiments are only for the purpose of describing the specific embodiments, and are not intended to limit the present application. The term “and / or” used in the embodiments includes any combination of one or more related listed items.
[0143] It should be understood that although the terms first, second, third, etc. can be used in the disclosure to describe various elements, these elements should not be limited to these terms. These terms are only used to distinguish one type of element from another. For example, without departing from the scope of the disclosure, a first element can also be referred to as a second element, and similarly, a second element can also be referred to as a first element. The use of any and all examples or exemplary language (“for example”, “for example”, etc.) provided in the embodiments is only intended to better illustrate the embodiments of the present application, and unless otherwise required, does not impose any limitation on the scope of the present application.
[0144] It should be appreciated that embodiments of the present application can be implemented or realized in a computing hardware, a combination of hardware and software, or by computer instructions stored on a non-transitory computer readable storage medium. The methods can be implemented using standard programming techniques - including the configuration of a non-transitory computer readable storage medium with computer program instructions stored thereon, wherein the storage medium is configured such that it causes a computer to operate in a specific and predefined manner as described in the various embodiments and figures according to the methods described in the various embodiments. Each program can be implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language, if desired. In any case, the language can be a compiled or interpreted language. Furthermore, the programs can be able to operate with a specific dedicated integrated circuit that is programmed to perform the methods described in the various embodiments.
[0145] Further, the operations of the processes described in the various embodiments can be performed in any suitable order, unless otherwise indicated herein or otherwise clearly contradicted by context. The processes described in the various embodiments (or variations and / or combinations thereof) can be implemented under the control of one or more computer systems configured with executable instructions (e.g., computer programs, one or more computer programs, or one or more applications) to perform the processes of the various embodiments, and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) running on a computer system (e.g., one or more processors), by hardware or combinations thereof. The computer programs include program instructions that can be executed by one or more processors.
[0146] Further, the methods can be implemented in any suitable type of computing platform operably connected to any suitable type of computing platform, including but not limited to a personal computer, a mini-computer, a mainframe, a workstation, a network or distributed computing environment, a stand-alone or integrated computer platform, or in communication with a charged particle tool or other imaging device, and the like. Aspects of the present application can be implemented in machine readable code stored on a non-transitory storage medium or device, whether removable or integrated into a computing platform, such as a hard disk, an optical read and / or write storage medium, RAM, ROM, and the like, such that it can be read by a programmable computer and used to configure and operate the computer to perform the processes described herein when the storage medium or device is read by the computer. Further, the machine readable code, or portions thereof, can be transmitted over a wired or wireless network. The present application includes these and other different types of non-transitory computer readable storage media when the instructions or programs implementing the above steps are included in conjunction with a microprocessor or other data processor. The present application also includes the computer itself when programmed according to the methods and techniques of the present application.
[0147] A computer program can be applied to input data to perform the functions of the present embodiments to transform the input data to generate output data that is stored to non-volatile memory. The output information can also be applied to one or more output devices such as a display. In a preferred embodiment of the present application, the transformed data represents a physical and tangible object, including a particular visual depiction of a physical and tangible object produced on a display.
[0148] The above merely preferred embodiments of the present application and are not intended to limit the present application thereto. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application shall be included in the scope of the present application. The technical solutions and / or embodiments of the present application can have various modifications and changes within the scope of the present application.
Claims
1. An integrated circuit wiring method, characterized by, The integrated circuit wiring method comprises: obtaining initial port position information of a circuit device; processing each of the initial port position information using an improved DPSO algorithm to obtain first optimized port position information; wherein an inertia weight used by the improved DPSO algorithm is determined by an acceleration coefficient; a formula for updating the inertia weight is ; ; ; ; wherein, is the first acceleration coefficient before update, is the first acceleration coefficient after update, is the second acceleration coefficient before update, is the second acceleration coefficient after update, is the inertia weight after update, is the final value of the first acceleration coefficient, is the final value of the second acceleration coefficient, is the maximum number of iteration rounds, is determined by the number of iteration rounds corresponding to the current iteration process; processing the first optimized port position information using an A-star algorithm to obtain second optimized port position information; wiring according to the second optimized port position information; the processing of the first optimized port position information using the A-star algorithm to obtain the second optimized port position information comprises: determining at least one start point position information and at least one end point position information according to the first optimized port position information; determining at least one path to be processed according to each of the start point position information and each of the end point position information; obtaining at least one intersection point between each of the paths to be processed; traversing each of the intersection points, and for any traversed intersection point, when a Manhattan distance between the intersection point and a neighboring intersection point on the same path to be processed is greater than a distance threshold, obtaining a middle point between the intersection point and the neighboring intersection point, and setting the middle point as a new intersection point; obtaining a respective direction of each of the intersection points; using the position and direction of each of the intersection points as the second optimized port position information.
2. The integrated circuit wiring method according to claim 1, wherein the processing of each of the initial port position information using the improved DPSO algorithm comprises: performing a plurality of rounds of iteration processes; determining the first optimized port position information according to a population position obtained by a last round of iteration processes; in any round of iteration process, the following steps are performed: obtaining a population position and a population fitness; wherein when the current round of iteration process is a first round of iteration process, the population position is determined by each of the initial port position information, and the population fitness is determined by initialization, and when the current round of iteration process is not the first round of iteration process, the population position and the population fitness are updated by a last round of iteration process; updating an acceleration coefficient and an inertia weight; wherein when the current round of iteration process is the first round of iteration process, the acceleration coefficient and the inertia weight are determined by initialization, and when the current round of iteration process is not the first round of iteration process, the acceleration coefficient and the inertia weight are updated by a last round of iteration process; updating the population position and the population fitness according to the updated acceleration coefficient and inertia weight; judging whether an iteration stop condition is met; when it is judged that the iteration stop condition is met, stopping the iteration process, otherwise, performing a next round of iteration process.
3. The integrated circuit wiring method according to claim 2, wherein the updating of the population position and the population fitness according to the updated acceleration coefficient and inertia weight comprises: updating an inertia velocity, an individual optimal velocity and a population optimal velocity according to the updated acceleration coefficient and inertia weight; updating the population position and the population fitness according to the updated inertia velocity, individual optimal velocity and population optimal velocity.
4. The integrated circuit wiring method according to claim 2, wherein the judging of whether the iteration stop condition is met comprises: obtaining a number of iterations corresponding to the current round of iteration process; acquiring sizes of the updated first acceleration coefficient and the second acceleration coefficient; when the number of iterations reaches a maximum number of iterations, the first acceleration coefficient reaches a first terminal value, or the second acceleration coefficient reaches a second terminal value, determining that the iteration stop condition is satisfied.
5. The integrated circuit wiring method according to claim 1, wherein The acquiring of the respective direction corresponding to each of the intersections comprises: For any intersection, when the intersection is not the intermediate point, acquiring a start point distance and an end point distance corresponding to the intersection, determining a target end point according to a maximum value between the start point distance and the end point distance, and determining a direction formed by the intersection and the target end point as the respective direction corresponding to the intersection; wherein the start point distance is a Manhattan distance between the intersection and the start point position information of the to-be-processed path, and the end point distance is a Manhattan distance between the intersection and the end point position information of the to-be-processed path. When the intersection is the intermediate point, determining a direction of the intersection and the to-be-processed path as the respective direction corresponding to the intersection.
6. The integrated circuit wiring method according to claim 1, wherein The wiring according to the second optimized port position information comprises: For any to-be-processed path, generating a corresponding wiring path; the wiring path starts from the start point position information corresponding to the to-be-processed path, sequentially passes through each intersection corresponding to the to-be-processed path, and reaches the end point position information corresponding to the to-be-processed path, and a direction of the wiring path passing through the intersection is the same as the direction corresponding to the intersection; Wiring according to the wiring path.
7. A computer apparatus, comprising: The integrated circuit wiring method comprises a memory and a processor, the memory is used to store at least one program, and the processor is used to load the at least one program to execute the integrated circuit wiring method.
8. A computer readable storage medium having stored therein a program which is executable by a processor, characterized in that, The program executable by the processor when executed by the processor is used to execute the integrated circuit wiring method.
Citation Information
Patent Citations
X structure Steiner minimum tree construction method based on dynamic particle swarm optimization
CN116108795A
Method of physical design for integrated circuit
US20010018758A1