Automatic parallel simulation method and simulation device for integrated circuits
The automatic parallel simulation method optimizes integrated circuit simulation by using a control server for intelligent queuing and resource allocation, addressing inefficiencies in computing power and data transfer, thereby enhancing simulation efficiency.
Patent Information
- Application Number
- JP2024530014
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2022-01-06
- Filing Date
- 2023-01-03
- Publication Date
- 2025-07-31
- Estimated Expiration
- 2043-01-03
AI Technical Summary
Existing integrated circuit simulation methods face inefficiencies due to limited computing power of local computers, manual intervention in simulation order adjustment, and large data file transfers, leading to delayed resource allocation and network bandwidth issues.
An automatic parallel simulation method and device that utilize a control server to manage simulation requests through intelligent queuing based on remaining simulation time and acceleration parameters, prioritizing simulation processing across multiple servers to optimize resource allocation and minimize data transfer.
The method ensures timely and efficient simulation resource allocation, reduces network bandwidth usage, and maintains smooth operation of the simulation server network, resulting in improved integrated circuit simulation efficiency.
Smart Images

Figure 0007716151000001 
Figure 0007716151000002 
Figure 0007716151000003
Abstract
Description
[Technical Field]
[0001] This application claims priority to a Chinese patent application bearing application number 202210007453.1 and entitled "Automated Integrated Circuit Parallel Simulation Method" filed with the China Patent Office on January 6, 2022, the entire contents of which are incorporated herein by reference.
[0002] This application relates to the field of electrical digital data processing, and in particular to a method and apparatus for automatic parallel simulation of integrated circuits. [Background technology]
[0003] In the prior art, after an engineer completes the design of the circuit structure of an integrated circuit using EDA software, the engineer usually needs to simulate the circuit using EDA software to verify the accuracy of the circuit.
[0004] To solve the problem of limited computing power of local computers, multiple simulation servers can be set up, and after engineers complete the circuit structure design using EDA software, they can submit simulation requests to the simulation servers and use the simulation servers to simulate the circuit. This method solves the problem of low computing power of local computers, and the multiple simulation servers can sort the simulations according to the order in which engineers submit circuit simulation requests, with manual intervention assisted temporary adjustment of the simulation order.
[0005] In the above-mentioned manner, manual intervention involves a certain degree of subjectivity, and it is not possible to timely determine the priority order that needs to be adjusted, so that an excellent circuit design obtained through long-term consideration cannot obtain simulation resources in a timely manner, resulting in low efficiency of integrated circuit simulation.
[0006] In addition, the data files obtained by simulation calculations are generally very large files, often occupying hundreds of gigabytes of storage space. Therefore, directly transferring the data files obtained by simulation calculations between simulation servers requires occupying a large network bandwidth, which further affects the efficiency of integrated circuit simulation. Summary of the Invention [Problem to be solved by the invention]
[0007] The present application provides an automatic parallel simulation method and simulation device for integrated circuits, which can improve the efficiency of integrated circuit simulation, and its technical solutions are as follows: [Means for solving the problem]
[0008] In one aspect, the present invention is used in a control server in a simulation system further including each simulation server, obtaining a circuit simulation request to request a simulation resource to simulate an integrated circuit structure; adding the circuit simulation request to a first queuing queue as a simulation request candidate; performing a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue to obtain a second queuing queue; performing a second sorting process on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to obtain a target queuing queue; and performing simulation processing for each of the simulation request candidates by each of the simulation servers within a target processing period according to the priority indicated by the target queuing queue.
[0009] In another aspect, a simulation request acquisition module acquires a circuit simulation request for requesting a simulation resource to simulate an integrated circuit structure; a first queue acquisition module that adds the circuit simulation request to a first queuing queue as a simulation request candidate; a second queue acquisition module that performs a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue to acquire a second queuing queue; a target queue acquisition module that performs a second sorting process on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to acquire a target queuing queue; a simulation processing module that performs simulation processing for each of the simulation request candidates by each of the simulation servers within a target processing period in accordance with the priority indicated by the target queuing queue.
[0010] In one possible embodiment, the remaining simulation time is used to indicate the remaining processing progress of candidate simulation requests whose simulations have started before the target processing period; The apparatus further includes a remaining time determination module that determines a remaining simulation time of a newly started simulation request candidate obtained within a target processing period to be zero.
[0011] In one possible embodiment, the simulation processing module further comprises: A step of extracting a designated number of simulation request candidates according to the priority indicated by the target queuing queue, and performing acceleration point detection for the designated number of simulation request candidates one by one in order of priority, wherein the acceleration points are cumulative points, and the control server stores attribute information of each user including the cumulative points of each user; skipping a first simulation request when detecting that the acceleration points of a first user corresponding to a first simulation request among the specified number of simulation request candidates are smaller than an acceleration parameter of the first simulation request, wherein the acceleration parameter of the first simulation request is a point consumption rate set in the first simulation request; or This step is used in a step of sending the second simulation request to a simulation server for simulation processing when it is detected that the acceleration points of the second user corresponding to a second simulation request among the specified number of simulation request candidates are greater than the acceleration parameter of the second simulation request, wherein the acceleration parameter of the second simulation request is the point consumption rate set in the second simulation request.
[0012] In one possible embodiment, the simulation processing module further comprises: obtaining a target simulation server having the highest priority in an idle state from among the simulation servers, the priority of the simulation server being used to indicate the simulation processing performance of the simulation server; and sending the second simulation request to the target simulation server for processing.
[0013] In one possible embodiment, the simulation processing module further comprises: When detecting that the simulation process for the second simulation request has ended, the step of updating the acceleration point of the second user by the difference between the acceleration point of the second user and the acceleration parameter of the second simulation request is used.
[0014] In one possible embodiment, the device comprises: a simulation data acquisition module that, when detecting that a simulation process for a target simulation request candidate has been completed, acquires target simulation data corresponding to the target simulation request candidate in each target simulation server that has simulated the target simulation request candidate, wherein the target simulation data includes at least one of front server data and back server data, the front server data indicating a server that will simulate the target simulation request candidate before acquiring the target simulation data, and the back server data indicating a server that will simulate the target simulation request candidate after acquiring the target simulation data; The system further includes a simulation result transmission module that splices each of the target simulation data into the target simulation result and transmits the target simulation result to a target computer device that is a device that transmits the target simulation request candidate.
[0015] In one possible embodiment, the target simulation data further includes a circuit state of the target simulation server before performing a simulation operation on the target simulation request candidate, and a circuit state of the target simulation server after performing the simulation operation.
[0016] In yet another aspect, there is provided a computing device including a processor and a memory storing at least one instruction, at least one program, code set or instruction set that is loaded and executed by the processor to implement the above-described method for automated parallel simulation of an integrated circuit.
[0017] In another aspect, there is provided a computer readable storage medium having stored thereon at least one instruction that, when loaded and executed by a processor, implements the above-described method for automated parallel simulation of an integrated circuit.
[0018] In yet another aspect, a computer program product is provided, as is a computer program product or computer program comprising computer instructions stored on a computer-readable storage medium, the computer instructions being read by a processor of a computing device from the computer-readable storage medium and executed by the processor to cause the computing device to perform the method for automated parallel simulation of an integrated circuit described above. [Effects of the Invention]
[0019] The technical solution according to the present application may include the following beneficial effects:
[0020] When a simulation needs to be performed on an integrated circuit, the computer device can send the integrated circuit structure to the simulation system via a circuit simulation request, at which time the control server in the simulation system adds the circuit simulation request to a first queuing queue as a simulation request candidate, and the control server further sorts the simulation request candidates in the queuing queue based on the remaining simulation time to obtain a second queuing queue, and the control server further performs a second sorting process on the simulation request candidates in the second queuing queue according to the magnitude of a preset acceleration parameter to obtain a target queuing queue, and the simulation server simulates each simulation request candidate according to the priority indicated in the order.
[0021] When the control server detects that the simulation process for the circuit simulation request has been completed, it acquires the simulation data from each simulation server on which the simulation process for the circuit simulation request has been executed, splices the simulation data, and obtains a final simulation result. Each simulation data also indicates the simulation server that executed before or after each simulation data and the circuit state before or after each simulation data was obtained. Even if some simulation data is lost in each simulation data, the control server can acquire the lost simulation initial conditions and circuit state at the end of the current simulation based on the circuit state at the end of the simulation stored in the data file of the previous simulation and the simulation initial conditions stored in the data file of the next simulation, and then relocate the simulation server to perform simulation calculations based on the lost simulation initial conditions and circuit state at the end of the current simulation to obtain the currently lost part. This allows a complete simulation result to be obtained without recalculating the entire simulation request from start to finish.
[0022] In the above embodiment, intelligent queuing simulation is performed for each simulation request based on the performance of the simulation server, the demand of the target user, and the simulation execution time, and the resources of the simulation server are appropriately allocated and utilized. In addition, the simulation server is used to store and read simulation data files in a distributed manner, so that the data files obtained by the simulation calculation do not need to be transferred between different simulation servers. This ensures smooth operation of the entire simulation server network, ensures the execution speed of the simulation, and improves the efficiency of integrated circuit simulation. In order to more clearly describe the specific embodiments of the present application or the technical solutions in the prior art, the following will briefly describe the drawings that need to be used to describe the specific embodiments or the prior art. However, the drawings in the following description are only some embodiments of the present application, and it is obvious that those skilled in the art can obtain other drawings based on these drawings without any creative efforts. [Brief explanation of the drawings]
[0023] [Figure 1] FIG. 1 is a schematic diagram of a simulation system according to one exemplary embodiment. [Figure 2] 1 is a flowchart of a method for automated parallel simulation of an integrated circuit according to one exemplary embodiment. [Figure 3] 1 is a flowchart of a method for automated parallel simulation of an integrated circuit according to one exemplary embodiment. [Figure 4] 1 is a block diagram of an automatic parallel simulation device for integrated circuits according to one exemplary embodiment; [Figure 5] FIG. 1 is a schematic diagram of a computing device according to one exemplary embodiment of the present application. DETAILED DESCRIPTION OF THE INVENTION
[0024] The following clearly and completely describes the technical solutions of the present application with reference to the drawings, but it is clear that the described embodiments are only some of the embodiments of the present application, and not all of the embodiments. Based on the embodiments of the present application, all other embodiments that a person skilled in the art can obtain without any creative efforts fall within the scope of protection of the present application.
[0025] It should be understood that the term "show" in the examples of the present application may mean directly showing, indirectly showing, or showing that there is an association relationship. For example, when A shows B, A may directly show B, e.g., B may be obtained via A, or A may indirectly show B, e.g., A shows C, and B may be obtained via C, and it can also represent that there is an association relationship between A and B.
[0026] In describing the embodiments of the present application, the term "corresponding" can mean that there is a direct or indirect corresponding relationship between two things, or that there is an associated relationship between two things, such as a relationship between showing and being shown, or a relationship between making up and being made up.
[0027] In the embodiments of the present application, "predefined" can be realized by pre-storing in a device (including, for example, a terminal device and a network device) a corresponding code, table, or other form that can be used to indicate related information, and the present application is not limited to the specific embodiment.
[0028] 1 is a schematic diagram of a simulation system according to an exemplary embodiment. The simulation system includes a control server 110 and simulation servers 120. Data communication is performed between the simulation servers 120 and the control server 110 via a communication network, which may be a wired network or a wireless network.
[0029] Optionally, the simulation system further includes a terminal 130, which may be a computer device used by an engineer to design an integrated circuit, and after the engineer designs the integrated circuit using the terminal 130, an application program installed on the terminal may generate a circuit simulation request from structural data corresponding to the integrated circuit, and send the circuit simulation request to a control server 110 of the simulation system, so that the control server 110 controls each simulation server to perform simulation processing for the circuit simulation request.
[0030] Optionally, an application program having a circuit design function is installed on the terminal 130, and the terminal 130 can execute the application program having the circuit design function to generate corresponding integrated circuit data when receiving a user-specified operation, but the embodiment of the present application is not limited thereto.
[0031] The terminal 130 may be a terminal device having a data transmission interface for receiving integrated circuit data generated by another computing device and constructing a circuit simulation request.
[0032] Optionally, the terminal 130 may be a mobile terminal such as a smartphone, tablet, or laptop, or may be a terminal such as a desktop computer or a projection computer, or may be a smart terminal having a data processing component, and the embodiments of the present application are not limited thereto.
[0033] The control server 110 or the simulation server 120 may be implemented as a single server, which may be a physical server or a cloud server. In one possible embodiment, the control server 110 is a background server of an application program on the terminal 130.
[0034] In one possible embodiment, after the simulation server completes the simulation operation corresponding to the (circuit) simulation request, the control server that allocates the simulation request retrieves the simulation results corresponding to the simulation request and sends them to the local computer of the engineer that issues the simulation request, specifically: The server (control server) that allocates simulation requests creates a database that records the segment information of the simulation results corresponding to the simulation requests. For example, Simulation request A is executed multiple times by server 1 that executes the simulation (i.e., simulation server) 1, server 2 that executes the simulation, and server 3 that executes the simulation, and the data file executed the first time by server 1 that executes the simulation is represented as A-1-1, the data file executed the second time by server 1 that executes the simulation is represented as A-1-2, the data file executed the first time by server 2 that executes the simulation is represented as A-2-1, the data file executed the first time by server 3 that executes the simulation is represented as A-3-1, the data file executed the second time by server 3 that executes the simulation is represented as A-3-2, etc. The server that allocates the simulation requests records the order in which all the simulation requests were executed on the corresponding servers that execute the simulations, and the order in which the simulations were executed, and each data file is stored on each server that executes the simulations; The server that allocates the simulation request reads each data file from the server that executes the simulation in the order in which they were recorded, integrates them into the final simulation result, and sends it to the local computer of the engineer who issues the simulation request.
[0035] Optionally, the server may be an independent physical server, a server cluster or a distributed system consisting of multiple physical servers, or a cloud server based on cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communications, middleware services, domain name services, security services, big data and artificial intelligence platforms.
[0036] Optionally, the system may further include a management device connected to the server via a communication network for managing the system (e.g., managing a connection state between each module and the server). Optionally, the communication network is a wired network or a wireless network.
[0037] Optionally, the wireless or wired network uses standard communication technologies and / or protocols. The network is typically the Internet, but may be any other network, including, but not limited to, any combination of local area networks, metropolitan networks, wide area networks, mobile, wired or wireless networks, private networks, or virtual private networks. In some embodiments, technologies and / or formats including Hypertext Markup Language, Extensible Markup Language, etc. are used to represent data exchanged over the network. Additionally, all or some links may be encrypted using conventional encryption technologies such as Secure Sockets Layer, Transport Layer Security, Virtual Private Networks, Internet Protocol Security, etc. In other embodiments, customized and / or proprietary data communication technologies may be used to replace or supplement the above data communication technologies.
[0038] Fig. 2 is a flowchart of a method for automatic parallel simulation of an integrated circuit according to one exemplary embodiment. The method is executed by a computer device that may be a control server in the simulation system shown in Fig. 1. As shown in Fig. 2, the method for automatic parallel simulation of an integrated circuit may include the following steps 201 to 205.
[0039] Step 201: Obtain a circuit simulation request.
[0040] This circuit simulation request is used to request a simulation resource to simulate an integrated circuit structure.
[0041] In one possible embodiment, the circuit simulation request includes structural data for an integrated circuit.
[0042] That is, after obtaining the structure data of the integrated circuit, the terminal may generate a corresponding circuit simulation request based on the structure data of the integrated circuit and send it to the control server in the simulation system.
[0043] Step 202: Add this circuit simulation request to the first queuing queue as a simulation request candidate.
[0044] When the control server receives a circuit simulation request, it does not first simulate the integrated circuit structure therein, but adds it to a first queuing queue, thereby determining the simulation priority relationship between this circuit simulation request and other circuit simulation requests.
[0045] In one possible embodiment, the computing device adds each circuit simulation request to the first queuing queue as a simulation request candidate according to the acquisition time of each circuit simulation request, i.e., the circuit simulation request acquired first is earlier in the first queuing queue, and the circuit simulation request acquired later is later in the first queuing queue.
[0046] Step 203: Based on the remaining simulation time of each simulation request candidate in the first queuing queue, a first sorting process is performed on each simulation request candidate in the queuing queue to obtain a second queuing queue.
[0047] The computer device, i.e., the control server in FIG. 1, needs to select simulation request candidates to push to the simulation server for simulation in the next simulation period. At this time, the control server calculates the remaining simulation time of each simulation request candidate in the obtained first queuing queue, and performs a first sorting process on each simulation request candidate according to the remaining simulation time of the simulation request candidate to obtain a second queuing queue.
[0048] In one possible embodiment of the present application, the computer device adjusts the order of each simulation request candidate in the first queuing queue according to the amount of remaining simulation time to obtain a second queuing queue.
[0049] Here, the process of adjusting the order may be to compare the relationship in the magnitude of the remaining simulation time between two adjacent simulation request candidates one by one until the remaining simulation time of the earlier simulation request candidate among the two adjacent simulation request candidates becomes equal to or less than the remaining simulation time of the later simulation request candidate.
[0050] In one possible embodiment, the remaining simulation time for each simulation request candidate in this first queuing queue may be simulated by the computing device based on the circuit structure and number of parameter values of each simulation request candidate.
[0051] For example, if the circuit structure in the simulation request candidate is complex and the number of parameter values is large, the functions that the simulation server needs to fit when simulating this circuit structure will also be complex, and the time required for the simulation request will be long.
[0052] At this time, the remaining simulation time of each simulation request candidate represents the estimated time required to process that simulation request candidate. By processing the simulation request candidate with the shortest remaining simulation time first, the simulation server can process more simulation requests within the specified time, and it is possible to avoid delaying the processing of other circuit simulation requests due to one or more complex circuit simulation requests with many parameters as much as possible.
[0053] In another possible embodiment, the remaining simulation time is used to indicate the remaining processing progress of candidate simulation requests whose simulations have started before the target processing period.
[0054] In the simulation system shown in FIG. 1, each simulation server processes each simulation request candidate for each cycle, and after completing the calculation for one cycle, each simulation server reallocates computational resources to process simulation request candidates that remain in the queuing queue, have not been processed, or have not started processing.
[0055] At this time, after the execution of a simulation task for a certain cycle is completed and before the simulation task for the next cycle is started (i.e., before the target processing cycle), the computer device collects statistics on the simulation request candidates in the queuing queue at that time for which processing has not been completed or processing has not been started, obtains the simulation request candidates for which processing has already been started but processing has not been completed, and calculates the remaining simulation time required to process the remaining progress from the processing progress and processing time in the previous cycle.
[0056] At this time, when sorting the simulation request candidates for which the simulation process has started but not been completed according to the remaining simulation time, the computer device places the candidate with the longest remaining simulation time at the end.
[0057] A long remaining simulation time means that even if a simulation request has been through at least one cycle of candidate simulation requests, it needs to be moved to a later position because it requires a lot of simulation resources for simulation processing and may delay the progress of processing other simulation requests.
[0058] In one possible embodiment, the computing device determines the remaining simulation time of a newly started simulation request candidate obtained within the target processing period to be zero.
[0059] At this time, when sorting the first queuing queue, the computer device moves the unprocessed simulation request candidates to the front so that the unprocessed simulation request candidates as a whole are preferentially processed.
[0060] In one possible embodiment, the computing device halves the remaining simulation time of simulation request candidates that have not undergone simulation processing within the previous period.
[0061] A simulation request candidate that was not simulated during the previous cycle can have the following two forms. One form is that there is no time to perform simulation processing for this simulation request candidate, or this simulation request candidate was added to the queuing queue during the previous cycle but was not processed. In this case, the remaining simulation time must be set to 0 during the processing cycle in which the control server acquired this simulation request candidate, so even if this remaining simulation time is halved, it remains 0.
[0062] In the other case, if this simulation request candidate was sent to the simulation server for simulation processing two cycles ago, but the processing was not completed and it was not added to the queuing queue within the previous cycle, so it was not processed. In this case, the remaining simulation time of this simulation request candidate is halved.
[0063] In other words, if a simulation request candidate is not processed for one or more cycles, the remaining simulation time is halved to avoid the simulation request candidate being left unattended for a long time due to the predicted processing time being too long, and the priority of the simulation request candidate is increased so that the control server can send even the simulation request candidate with a long processing time to the simulation server for processing.
[0064] Step 204: A second sorting process is performed on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue, to obtain a target queuing queue.
[0065] The computer device performs a first sorting process on each simulation request candidate in the first queuing queue to obtain a second queuing queue. At this time, each simulation request candidate in the second queuing queue is sorted taking into account the simulation time required for processing the simulation request candidate. In actual applications, each simulation request candidate will theoretically have a priority. That is, some integrated circuit structures in the simulation request candidates may require a lot of resources but are very important and the simulation results are urgently needed. In this case, the computer device can simply set a larger acceleration parameter when generating the simulation request candidates, so that the simulation server can prioritize the simulation processing of these simulation request candidates.
[0066] In one possible embodiment, the authority value of the target user corresponding to each of the simulation request candidates is obtained, and the authority value of the target user is set as the acceleration parameter of each of the simulation request candidates.
[0067] In order to further determine the importance of each simulation request candidate, a corresponding authority value may be preset in the control server for each user who is permitted to submit a simulation request candidate, and a higher authority value indicates that the user has higher authority.When a target user requests acceleration processing for a simulation request candidate, the control server determines the authority value of each target user as an acceleration parameter for this simulation request candidate, and compares the execution priority of each simulation request candidate with the acceleration parameter of each simulation request candidate, thereby realizing the order adjustment of each simulation request candidate in the queuing queue.
[0068] In one possible embodiment, a second sorting process is performed on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to obtain a third queuing queue, and the acceleration points of each target user corresponding to each simulation request candidate are obtained.Of the simulation request candidates in the third queuing queue, those whose corresponding target user acceleration points are greater than the acceleration parameter are constructed as the target queuing queue according to the magnitude of the acceleration parameter.
[0069] In this case, the acceleration parameters in the simulation request candidate can be set by the user via the computing device during generation of the simulation request candidate.
[0070] After obtaining the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue, the control server needs to compare it with the acceleration point of each target user stored in the control server, i.e., compare whether the magnitude of the acceleration parameter set by the target user exceeds the allowable range of that target user.
[0071] When it is detected that the acceleration parameter of the simulation request candidate is larger than the acceleration point of the target user of this simulation request candidate, it is indicated that the acceleration parameter of this simulation request candidate exceeds the allowable range of the target user, in which case this simulation request candidate is ignored and no simulation processing is performed within the current processing period of the simulation server.
[0072] Therefore, the control server can construct a target queuing queue of simulation request candidates whose corresponding target user's acceleration points are greater than this acceleration parameter, indicating the priority of the simulation processing of each simulation request candidate within the current processing cycle.
[0073] Step 205: According to the priority indicated by the target queuing queue, each simulation server performs simulation processing for each of the simulation request candidates within the target processing period.
[0074] In one possible embodiment, each simulation server in the present example is prioritized according to performance, with the more highly performing simulation server having a higher priority.
[0075] At this time, after acquiring the target queuing queue, the control server extracts the simulation request candidates one by one according to the priority indicated by the target queuing queue, assigns them to an idle simulation server according to the simulation server priority, performs simulation processing, and obtains simulation results corresponding to these simulation request candidates.
[0076] For example, when a simulation request candidate is retrieved from the target queuing queue, the control server detects the status of each simulation server, and selects the simulation server with the highest priority (i.e., the highest performance) among the simulation servers that are idle at that time as the server that will process the simulation request candidate.
[0077] Therefore, each simulation request candidate is read from the target queuing queue according to priority, and for a simulation request candidate, the lower the priority and the later it is retrieved, the lower the processing performance of the assigned simulation server will theoretically be. Therefore, each simulation request candidate can be assigned to a simulation server with different performance according to priority, and the simulation operation can be executed in the target processing cycle (i.e., the current processing cycle), thereby enabling rational use of resources.
[0078] The control server sorts each simulation request candidate in the queuing queue based on the remaining simulation time and the magnitude of the acceleration parameter, forms a target queuing queue, and then, when processing the simulation request candidates in the target queuing queue, performs intelligent queuing simulation for each simulation request based on the performance of the simulation server, the demand of the target user, the simulation execution time, etc., and appropriately allocates and utilizes the resources of the simulation server.
[0079] As described above, when a simulation of an integrated circuit is required, a computer device can send the integrated circuit structure to the simulation system via a circuit simulation request, and at this time, a control server in the simulation system adds the circuit simulation request to a first queuing queue as a simulation request candidate. The control server then sorts the initiated simulation request candidates in the queuing queue based on the remaining simulation time to obtain a second queuing queue. The control server then performs a second sorting process on the simulation request candidates in the second queuing queue according to the magnitude of a preset acceleration parameter to obtain a target queuing queue, and the simulation server then simulates each simulation request candidate according to the priority indicated in the order. In the above embodiment, intelligent queuing simulation is performed for each simulation request based on the performance of the simulation server, the demand of the target user, and the simulation execution time, thereby improving the efficiency of integrated circuit simulation by appropriately allocating and utilizing the simulation server resources.
[0080] 3 is a flowchart of a method for automatic parallel simulation of an integrated circuit according to one exemplary embodiment. The method is executed by a computer device that may be a control server in the simulation system shown in FIG. 3. As shown in FIG. 3, the method for automatic parallel simulation of an integrated circuit may include the following steps 301 to 304.
[0081] Step 301: Obtain a circuit simulation request.
[0082] In the embodiment of the present application, after an engineer completes the design of the circuit structure of an integrated circuit, he submits a simulation request generated by this circuit structure to a control server in the simulation system.
[0083] In one possible embodiment of the present invention, the simulation system includes one server (the control server in FIG. 1) for allocating simulation requests and multiple servers (the simulation servers in FIG. 1) for executing simulations. The multiple servers for executing simulations are sorted in descending order of performance, i.e., the first server at the head of the queue of the multiple servers for executing simulations has the highest performance, and the last server at the end has the lowest performance.
[0084] Step 302: Add this circuit simulation request to the first queuing queue as a simulation request candidate.
[0085] In one possible embodiment, the control server may also perform a duplicate check analysis process on the circuit simulation request before adding the circuit simulation request to the first queuing queue as a candidate simulation request.
[0086] The control server performs a duplication check analysis on this circuit structure by analyzing the netlist file of this circuit structure to determine whether this circuit structure or a circuit structure similar to this circuit structure has submitted a simulation request.
[0087] The netlist file is mainly divided into four parts: component types, component parameter values, connection relationships between components, and simulation conditions. By comparing each part of the netlist file of a circuit structure that has previously submitted a simulation request with each part of the netlist file of this circuit structure, it is possible to determine whether this circuit structure or a circuit structure similar to this circuit structure has submitted a simulation request. When a circuit structure submits a simulation request, search for the simulation result of this circuit structure in the cache of completed simulations; if the simulation result is found in the cache of completed simulations, directly obtain the simulation result and send it to the engineer's computing device; if the simulation result is not found in the cache of completed simulations, mark the number of simulation iterations as indicating that this cache of simulation results has been cleaned up, and add the simulation request of this circuit structure to the queuing queue; if a previously submitted circuit structure is currently being simulated, ignore the request and inform the engineer that the previously submitted circuit structure is currently being simulated.
[0088] Step 303: Based on the remaining simulation time of each simulation request candidate in the first queuing queue, a first sorting process is performed on each simulation request candidate in the queuing queue to obtain a second queuing queue.
[0089] In one possible embodiment of the present invention, the computer device calculates the average simulation speed in the previous period for each executed simulation request (a simulation request already executed on the simulation server), and estimates the remaining simulation time from the simulation speed and the current progress; Sets the estimated remaining simulation time of a newly started simulation request (a simulation request that has just been added to the queuing queue to be simulated on the simulation server) to 0.
[0090] Note that the estimated remaining simulation time may not match the actual remaining simulation time, and the actual simulation speed varies greatly depending on the circuit state. Therefore, it is not possible to obtain an accurate actual remaining simulation time. Therefore, in this application, the simulation queue is sorted based on the estimated simulation time.
[0091] In one possible embodiment, the computing device performs an up-calculation of the estimated remaining simulation time of the simulation request that was not executed in the previous period (this estimated remaining simulation time may be the estimated remaining simulation time calculated in a previous executed period), i.e., the up-calculation reduces the estimated remaining simulation time of the simulation request that was not executed in the previous period, thereby ensuring that the execution order of the simulation request that was not executed in the previous period is advanced in the current period.
[0092] The raising operation can be any algorithm that can be implemented, and one of the algorithms is to halve the estimated remaining simulation time of a simulation request that was not executed in the previous cycle, and set the halved estimated remaining simulation time as the estimated remaining time of this simulation request in the current cycle.
[0093] The computing device sorts all simulation requests in the queuing queue in ascending order based on the estimated remaining time.
[0094] Step 304: A second sorting process is performed on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue, to obtain a target queuing queue.
[0095] In the present embodiment, the acceleration parameter may be set as the point consumption rate of the acceleration points corresponding to the target user.
[0096] In one possible embodiment, the control server has attribute information corresponding to each requester (i.e., a target user such as an engineer), and regardless of whether the requester has a simulation request currently started, each requester acquires points per unit time (one period) in the control server, and the accumulated points O and point acquisition speed P of each requester are stored in the attribute information of the control server; Here, the number of points acquired per unit time (one period) can be set according to the actual situation.
[0097] When the target user initiates a simulation request, the target user can set a point consumption speed Q (i.e., acceleration parameter) in the simulation request, which indicates how many points are consumed in a unit time to use the simulation resources.
[0098] For example, the value of the point consumption rate Q may follow the following rules: (1) The setting range of Q must be equal to or greater than P, and the default is twice P. (2) The requester (engineer) can also set the point consumption rate Q by himself / herself according to his / her requirements. Specifically, the requester (engineer) issues a simulation request to the control server on his / her local computer and simultaneously provides the point consumption rate Q that he / she has set. (3) If the simulation request is not a request for repeating a simulation, the number of simulation requests M is counted as 1.
[0099] If the simulation request is for repeating a simulation, the number of simulation requests M is counted as the number of times that a simulation has been submitted.
[0100] If the point consumption rate Q corresponding to the simulation request closest to the head of the queue is slower than the point consumption rate Q corresponding to the next simulation request, swap the positions of these two simulation requests in the queue; If the point consumption rate Q corresponding to the simulation request closest to the head of the queue is equal to or greater than the point consumption rate Q corresponding to the next simulation request, no operation is performed. Repeat the operation until the point consumption rate Q corresponding to the simulation request closest to the head of the queuing queue is no longer slower than the point consumption rate Q corresponding to the next simulation request; The point consumption speed Q can be set by the requester himself / herself. Therefore, if the requester (engineer) thinks that his / her circuit only needs to verify some functions, or if he / she needs to perform simulation on the circuit as soon as possible due to reasons such as project progress, the requester (engineer) can set a fast point consumption speed Q by himself / herself, so that the corresponding simulation request candidate will have a fast point consumption speed Q (i.e., a larger acceleration parameter), thereby allowing the simulation request candidate to be quickly queued to the front of the target queuing queue, thereby reducing the simulation queuing time at the expense of the simulation execution time.
[0101] Step 305: A designated number of simulation request candidates are extracted according to the priority indicated by this target queuing queue, and acceleration point detection is performed on the designated number of simulation request candidates one by one in order of priority.
[0102] After obtaining the target queuing queue through the above steps, a specified number of simulation request candidates can be extracted and acceleration point detection can be performed one by one. For example, the specified number can be determined according to the number of simulation servers or the number of simulation servers currently in an idle state.
[0103] Step 306A: If it is detected that the acceleration points of the first user corresponding to a first simulation request among the specified number of simulation requests is smaller than the acceleration parameter of the first simulation request, skip the first simulation request.
[0104] Optionally, the acceleration points are the cumulative points O of the first user (i.e., a requestor), and the acceleration parameter of the first simulation request is the point consumption rate Q corresponding to the simulation request submitted to the first user.
[0105] In the embodiment of the present application, the control server sequentially retrieves simulation requests from the top of the generated queuing queue, compares the point consumption rate Q corresponding to the simulation request with the accumulated points O corresponding to the request source corresponding to the simulation request, If the point consumption rate Q is greater than the accumulated points O, no operation is performed on this simulation request, and comparison with the next simulation request continues.
[0106] Step 306B: If it is detected that the acceleration point of the second user corresponding to a second simulation request among the specified number of simulation requests is greater than the acceleration parameter of the second simulation request, send the second simulation request to the simulation server for simulation processing.
[0107] In one possible embodiment, according to the priority indicated by the target queuing queue, a target simulation server that is idle and has the highest priority is obtained from among the simulation servers, and the second simulation request is sent to the target simulation server for processing.
[0108] In one possible embodiment, when it is detected that the simulation process for the second simulation request has ended, the difference between the acceleration point of this second user and the acceleration parameter of this second simulation request is updated to the acceleration point of the second user.
[0109] For example, the process for processing this simulation request candidate is as shown in the following steps. 1) In the generated queuing queue, the control server sequentially extracts simulation requests from the top of the queuing queue and compares the point consumption rate Q corresponding to this simulation request with the accumulated points O corresponding to the request source corresponding to this simulation request. 2) If the point consumption rate Q is less than or equal to the cumulative points O, the server for allocating the simulation request searches from the top of the simulation server queue for the first server that has not been assigned a simulation request task (i.e., the simulation server with the highest priority and the highest processing capacity), allocates the simulation request retrieved this time to this simulation server for execution, calculates OM*Q, and sets the result as the new cumulative points O. 3) The operation is repeated until all simulation requests remaining in the simulation request queue satisfy the condition that the point consumption rate Q is equal to or less than the accumulated points O, or until all simulation servers are assigned simulation request tasks.
[0110] In one possible embodiment, if the server is not fully scheduled to run the simulation (i.e., the simulation server is idle) and there are unexecuted simulation requests in the target queuing queue of simulation requests, the following operations are performed:
[0111] Sort all remaining simulation requests in the target queuing queue of simulation requests in descending order of the cumulative points O of the corresponding requesters (engineers), The simulation requests are taken out sequentially from the top of the sorted queue, The first server that has not been assigned a simulation request task is searched for from the top of the servers for executing the simulation, the simulation request candidate extracted this time is sent to the simulation server for execution, OM*Q is calculated, and the result is set as the new cumulative point O.
[0112] In one possible embodiment, if there is an idle simulation server and there are no unassigned simulation requests in the target queuing queue for simulation requests, the following operations are performed.
[0113] The control server finds the last unassigned simulation request, calculates the difference R between the point consumption rate Q and the point acquisition rate P corresponding to this simulation request, and The latest cumulative point O is calculated by adding the difference R to the cumulative points O corresponding to the requesters of all simulation requests that have not been assigned within the current period.
[0114] In one possible embodiment, when a simulation server processes a candidate simulation request, it completes the simulation operation immediately and does not need to spend an entire processing cycle, at which point the simulation server becomes idle again.
[0115] At this time, the control server can retrieve the calculation results of the simulation server that has completed the simulation calculation, re-determine the simulation request candidates in the target queuing queue, and send them to this simulation server.
[0116] That is, when the current cycle ends, once the execution of a simulation request on one or several simulation servers is completed, the control server retrieves the simulation results corresponding to this simulation request in real time.
[0117] If the execution of a simulation request on one or several simulation servers is completed within the current period, the control server can retrieve the simulation request and the corresponding simulation result after the current period ends, and can also schedule a new simulation request to the idle simulation server in real time after obtaining the simulation request and the corresponding simulation result in real time. The specific steps of scheduling a new simulation request in real time are as follows: (1) Determine whether there are any remaining simulation requests that have not been assigned to the queuing queue of simulation requests. If there are no remaining simulation requests, do not perform any operation on this idle simulation server. If there are remaining simulation requests, sort all simulation requests in the queuing queue of remaining simulation requests in ascending order based on the estimated remaining time. (2) Compare the point consumption rates Q corresponding to any two adjacent simulation requests in the queuing queue sorted above. Specifically, If the point consumption rate Q corresponding to the simulation request closest to the head of the queue is slower than the point consumption rate Q corresponding to the next simulation request, swap the positions of these two simulation requests in the queue; If the point consumption rate Q corresponding to the simulation request closest to the head of the queue is equal to or greater than the point consumption rate Q corresponding to the next simulation request, no operation is performed. The operation is repeated until the point consumption rate Q corresponding to the simulation request closest to the head of the queuing queue is no longer slower than the point consumption rate Q corresponding to the next simulation request.
[0118] In the queuing queue generated above, the simulation requests are sequentially retrieved from the head of the queuing queue, and the point consumption rate Q corresponding to each simulation request is compared with the cumulative points O corresponding to the request source corresponding to each simulation request; If the point consumption speed Q is less than or equal to the cumulative points O, the server for allocating the simulation request searches for the first server that has not been assigned a simulation request task from the top of the queue of servers for executing the simulation, allocates the simulation request retrieved this time to that server for execution, calculates OM*Q, and sets the result as the new cumulative points O. If the point consumption speed Q is greater than the accumulated points O, no operation is performed on this simulation request, and the comparison of the next simulation request continues; The operation is repeated until all simulation requests remaining in the simulation request queue satisfy the condition that the point consumption rate Q is equal to or less than the accumulated points O, or until simulation request tasks are assigned to all simulation servers for executing the simulations.
[0119] In one possible embodiment, after the above operations for each simulation request candidate are completed, it is detected whether all the simulation servers are in an operational state.
[0120] If the idle servers for running the simulations have not yet been fully allocated and there are simulation requests that have not yet been allocated in the queuing queue for the remaining simulation requests, sort the remaining simulation requests in descending order of the cumulative points O of the corresponding request origins (target users); The simulation requests are taken out sequentially from the top of the sorted queue, The first server to which a simulation request task has not been assigned is searched from the beginning of the simulation servers, the simulation request extracted this time is assigned to this server for execution, OM*Q is calculated, and the result is set as a new cumulative point O.
[0121] In one possible embodiment, when a period ends and the execution of a simulation request is completed, the control server retrieves the simulation results corresponding to the simulation request in real time and transmits the simulation results to the local computer of the engineer issuing the simulation request; If the execution of a simulation request is completed within a certain period, the control server can retrieve the simulation results corresponding to this simulation request after the end of the current period and send them to the local computer of the engineer who issued the simulation request, and can also retrieve the simulation results corresponding to this simulation request in real time and send them to the local computer of the engineer who issued the simulation request.
[0122] In one possible embodiment, when it is detected that the simulation process for the target simulation request candidate is completed, target simulation data corresponding to the target simulation request candidate in each target simulation server that simulated the target simulation request candidate is obtained, and each target simulation data is spliced into the target simulation result and sent to the target computing device, which is the device that sends the target simulation request candidate.
[0123] This target simulation data includes at least one of front server data and back server data, where the front server data indicates a server that will simulate this target simulation request candidate before obtaining this target simulation data, and the back server data indicates a server that will simulate this target simulation request candidate after obtaining this target simulation data.
[0124] That is, in one possible embodiment of the present application, the control server has a database for recording simulation requests and corresponding segment information of simulation results (optionally, a database server for storing the database can be separately provided). Meanwhile, in order to prevent unexpected events in the control server where the database is located, the simulation server where the previous data file is located (front server data) and the simulation server where the next data file is located (back server data) are recorded in each data file (i.e., simulation data obtained by simulation). For example, If the data file before data file A-2-2 is A-1-2 and the next data file is A-3-1, the position of the previous data file A-1-2 is recorded at the beginning of A-2-2, and the position of the next data file A-3-1 is recorded at the end of A-2-2. At this time, each position information indicates the ID of each simulation server.
[0125] Therefore, the local computer of the engineer issuing the simulation request can access all the simulation servers, obtain the complete execution order of the simulation based on the data file, and obtain the complete simulation results for sending to the local computer.
[0126] In one possible embodiment, the target simulation data further includes the circuit state of the target simulation server before performing a simulation operation on the target simulation request candidate, and the circuit state of the target simulation server after performing the simulation operation.
[0127] In other words, in order to prevent the loss of a data file due to a failure in the simulation server where a certain data file exists, resulting in an incomplete simulation result for the entire simulation, the initial conditions of the current simulation (i.e., the initial circuit state at the end of the previous simulation) and the circuit state after the current simulation operation (i.e., the initial conditions of the next simulation) are stored in all data files. If a failure occurs in the server used for the current simulation, but the control server on which the database is located operates normally, after the data file of the current simulation is lost, the control server will determine which simulation server the data file of the previous simulation and the data file of the next simulation are located on, and thereby, based on the circuit state at the end of the simulation stored in the data file of the previous simulation and the simulation initial conditions stored in the data file of the next simulation, obtain the lost initial simulation conditions of the current simulation and the circuit state after the simulation operation. Based on the lost initial simulation conditions of the current simulation and the circuit state after the simulation operation, the simulation server can be relocated to perform simulation calculations to obtain the currently lost part, thereby obtaining a complete simulation result without recalculating the entire simulation request from start to finish.
[0128] If the simulation server used for the current simulation fails and the control server also fails, after the data file of the current simulation is lost, the local computer of the engineer who issued the simulation request can access all simulation servers and, according to the simulation execution order of all data files, determine which simulation server the data file of the previous simulation of the current simulation and the data file of the next simulation are located on. Thereby, based on the circuit state after the simulation operation stored in the data file of the previous simulation and the simulation initial conditions stored in the data file of the next simulation, the lost initial simulation conditions and the circuit state after the simulation operation of the current simulation can be obtained. Based on the lost initial simulation conditions and the circuit state after the simulation operation of the current simulation, the local computer can perform simulation calculations again to obtain the currently lost part, thereby obtaining a complete simulation result without recalculating the entire simulation request from start to finish.
[0129] The simulation system deployed through the above scheme can quickly and effectively obtain complete simulation results even in the event of a server failure. By using the simulation servers to store and read simulation data files in a distributed manner, data files obtained by simulation calculations do not need to be transferred between different simulation servers, which ensures smooth operation of the entire simulation server network, ensures simulation execution speed, and improves simulation efficiency.
[0130] As described above, when a simulation of an integrated circuit is required, a computer device can send the integrated circuit structure to the simulation system via a circuit simulation request. At this time, a control server in the simulation system adds the circuit simulation request to a first queuing queue as a simulation request candidate. The control server then sorts the initiated simulation request candidates in the queuing queue based on the remaining simulation time to obtain a second queuing queue. The control server then performs a second sorting process on the simulation request candidates in the second queuing queue according to the magnitude of a preset acceleration parameter to obtain a target queuing queue. The simulation server then simulates each simulation request candidate according to the priority indicated in the order. In the above embodiment, intelligent queuing simulation is performed for each simulation request based on the performance of the simulation server, the demand of the target user, and the simulation execution time, and simulation server resources are appropriately allocated and utilized. This encourages requesters to submit high-quality simulation requests rather than relying on repeated trial and error design of server simulations, and also prevents simulation requests requiring a relatively long time from occupying high-quality server resources for a long period of time, thereby improving the efficiency of integrated circuit simulation.
[0131] 4 is a block diagram of an automatic parallel simulation apparatus for an integrated circuit according to one exemplary embodiment. a simulation request acquisition module 401 for acquiring a circuit simulation request for requesting a simulation resource to simulate an integrated circuit structure; a first queue acquisition module 402 for adding the circuit simulation request to a first queuing queue as a simulation request candidate; a second queue acquisition module 403 that performs a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue to obtain a second queuing queue; a target queue acquisition module 404 that performs a second sorting process on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to obtain a target queuing queue; and a simulation processing module 405 that performs simulation processing for each of the simulation request candidates by each of the simulation servers within a target processing period according to the priority indicated by the target queuing queue.
[0132] In one possible embodiment, the remaining simulation time is used to indicate the remaining processing progress of candidate simulation requests whose simulations have started before the target processing period; The apparatus further includes a remaining time determination module that determines a remaining simulation time of a newly started simulation request candidate obtained within a target processing period to be zero.
[0133] In one possible embodiment, the simulation processing module further comprises: A step of extracting a designated number of simulation request candidates according to the priority indicated by the target queuing queue, and performing acceleration point detection for the designated number of simulation request candidates one by one in order of priority; skipping a first simulation request when detecting that an acceleration point of a first user corresponding to a first simulation request among the specified number of simulation request candidates is smaller than an acceleration parameter of the first simulation request; or When it is detected that the acceleration point of the second user corresponding to the second simulation request among the specified number of simulation request candidates is greater than the acceleration parameter of the second simulation request, the step of sending the second simulation request to the simulation server for simulation processing is used.
[0134] In one possible embodiment, the simulation processing module further comprises: obtaining a target simulation server having the highest priority in an idle state from among the simulation servers, the priority of the simulation server being used to indicate the simulation processing performance of the simulation server; and sending the second simulation request to the target simulation server for processing.
[0135] In one possible embodiment, the simulation processing module further comprises: When detecting that the simulation process for the second simulation request has ended, the step of updating the acceleration point of the second user by the difference between the acceleration point of the second user and the acceleration parameter of the second simulation request is used.
[0136] In one possible embodiment, the device comprises: a simulation data acquisition module that, when detecting that a simulation process for a target simulation request candidate has been completed, acquires target simulation data corresponding to the target simulation request candidate in each target simulation server that has simulated the target simulation request candidate, wherein the target simulation data includes at least one of front server data and back server data, the front server data indicating a server that will simulate the target simulation request candidate before acquiring the target simulation data, and the back server data indicating a server that will simulate the target simulation request candidate after acquiring the target simulation data; The system further includes a simulation result transmission module that splices each of the target simulation data into the target simulation result and transmits the target simulation result to a target computer device that is a device that transmits the target simulation request candidate.
[0137] In one possible embodiment, the target simulation data further includes a circuit state of the target simulation server before performing a simulation operation on the target simulation request candidate, and a circuit state of the target simulation server after performing the simulation operation.
[0138] As described above, when a simulation of an integrated circuit is required, a computer device can send the integrated circuit structure to the simulation system via a circuit simulation request, and at this time, a control server in the simulation system adds the circuit simulation request to a first queuing queue as a simulation request candidate. The control server then sorts the initiated simulation request candidates in the queuing queue based on the remaining simulation time to obtain a second queuing queue. The control server then performs a second sorting process on the simulation request candidates in the second queuing queue according to the magnitude of a preset acceleration parameter to obtain a target queuing queue, and the simulation server then simulates each simulation request candidate according to the priority indicated in the order. In the above embodiment, intelligent queuing simulation is performed for each simulation request based on the performance of the simulation server, the demand of the target user, and the simulation execution time, thereby improving the efficiency of integrated circuit simulation by appropriately allocating and utilizing the simulation server resources.
[0139] FIG. 5 is a schematic diagram of a computing device according to one exemplary embodiment of the present application, the computing device including a processor and a memory for storing a computer program that, when executed by the processor, implements the above method.
[0140] Here, the processor may be a central processing unit (CPU), or may be other general-purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, or other chips, or a combination of the above.
[0141] The memory, as a non-transitory computer-readable storage medium, can be used to store non-transitory software programs, non-transitory computer-executable programs, and modules such as program instructions / modules corresponding to the methods in the embodiments of the present application. The processor executes the non-transitory software programs, instructions, and modules stored in the memory to perform various functional applications and data processing of the processor, i.e., to realize the methods in the above method embodiments.
[0142] The memory may include a program storage area capable of storing an operating system, application programs required for at least one function, and a data storage area capable of storing data created by the processor, etc. Additionally, the memory may include high-speed random access memory, and may also include non-transitory memory, such as at least one magnetic disk storage device, flash memory device, or other non-transitory solid-state memory device. In some embodiments, the memory may optionally include memory located remotely with respect to the processor, which may be connected to the processor via a network. Examples of such networks include, but are not limited to, the Internet, a corporate intranet, a local area network, a mobile communication network, and combinations thereof.
[0143] In one exemplary embodiment, there is further provided a computer-readable storage medium having stored thereon at least one computer program that, when loaded and executed by a processor, performs all or part of the steps of the above method. For example, the computer-readable storage medium may be a Read-Only Memory (ROM), a Random Access Memory (RAM), a Compact Disc Read-Only Memory (CD-ROM), a magnetic tape, a floppy disk, an optical data storage device, etc.
[0144] Those skilled in the art will readily conceive other embodiments of the present application after studying this specification and practicing the practice of the invention disclosed herein. This application is intended to cover any modifications, uses, or adaptations of the present application, including common knowledge or customary technical means in the art not disclosed herein, in accordance with the general principles of the present application. The specification and examples are to be considered exemplary only, with the true scope and spirit of the present application being indicated by the following claims.
[0145] It should be understood that the present application is not limited to the specific structures described above and illustrated in the drawings, and that various modifications and changes can be made without departing from the scope thereof, which is limited only by the appended claims.
Claims
1. A method for automatic parallel simulation of an integrated circuit, used in a control server in a simulation system further including each simulation server, the control server obtaining a circuit simulation request for requesting a simulation resource to simulate an integrated circuit structure; the control server adding the circuit simulation request as a simulation request candidate to a first queuing queue; the control server performing a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue to obtain a second queuing queue; the control server performing a second sorting process on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to obtain a target queuing queue; according to the priority indicated by the target queuing queue, within a target processing period, the control server controlling each simulation server to perform a simulation process on each simulation request candidate; when it is detected that the simulation process for a target simulation request candidate is completed, the control server obtaining target simulation data corresponding to the target simulation request candidate in each target simulation server that has simulated the target simulation request candidate, the target simulation data including at least one of front server data and back server data, the front server data being for indicating the server that simulates the target simulation request candidate before obtaining the target simulation data, and the back server data being for indicating the server that simulates the target simulation request candidate after obtaining the target simulation data. The control server splices each of the target simulation data as a result of target simulation, and transmits it to a target computer device which is a device for transmitting the target simulation request candidates, and a method for automatically parallel simulation of an integrated circuit, characterized by including the step of
2. The remaining simulation time is used to indicate the remaining processing progress of the simulation request candidates for which the simulation was started before the target processing cycle. Before the control server performs a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue. The method according to claim 1, wherein the control server further includes a step of determining the remaining simulation time of a newly started simulation request candidate obtained within a target processing cycle to be 0.
3. According to the priority indicated by the target queuing queue, the step in which the control server controls each simulation server to perform a simulation process on each simulation request candidate is According to the priority indicated by the target queuing queue, the control server takes out a specified number of simulation request candidates, and performs acceleration point detection one by one in order of priority for the specified number of simulation request candidates, wherein the acceleration point is an accumulated point, and the control server stores attribute information of each user including the accumulated points of each user. When it is detected that the acceleration point of the first user corresponding to the first simulation request among the specified number of simulation request candidates is smaller than the acceleration parameter of the first simulation request, the control server skips the first simulation request, and the acceleration parameter of the first simulation request is the point consumption speed set for the first simulation request, or When it is detected that the acceleration points of the second user corresponding to the second simulation request among the specified number of simulation request candidates are greater than the acceleration parameter of the second simulation request, the control server transmits the second simulation request to the simulation server for simulation processing, where the acceleration parameter of the second simulation request is the point consumption rate set for the second simulation request, and the method according to claim 2, characterized by including the step.
4. The step in which the control server transmits the second simulation request to the simulation server for simulation processing is Among each of the simulation servers, the control server obtains the target simulation server with the highest priority in the idle state, where the priority of the simulation server is used to indicate the simulation processing performance of the simulation server, and the step. The method according to claim 3, characterized by including the step in which the control server transmits the second simulation request to the target simulation server for processing.
5. When it is detected that the simulation process for the second simulation request has ended, the control server further includes the step of updating the difference between the acceleration points of the second user and the acceleration parameter of the second simulation request to the acceleration points of the second user. The method according to claim 4, characterized by this.
6. The target simulation data further includes the circuit state of the target simulation server before performing the simulation operation on the target simulation request candidate and the circuit state of the target simulation server after performing the simulation operation. The method according to claim 1, characterized by this.
7. An automatic parallel simulation device for an integrated circuit applied to a simulation system including a control server and each simulation server, A simulation request acquisition module that acquires a circuit simulation request for requesting a simulation resource to simulate an integrated circuit structure. A first queue acquisition module that adds the circuit simulation request as a simulation request candidate to a first queuing queue; A second queue acquisition module that performs a first sorting process on each simulation request candidate in the first queuing queue based on the remaining simulation time of each simulation request candidate in the first queuing queue to obtain a second queuing queue; A target queue acquisition module that performs a second sorting process on the second queuing queue according to the magnitude of the acceleration parameter of each simulation request candidate in the second queuing queue to obtain a target queuing queue; A simulation processing module that performs simulation processing on each simulation request candidate by each simulation server within a target processing cycle according to the priority indicated by the target queuing queue; A simulation data acquisition module that, when it is detected that the simulation processing for a target simulation request candidate is completed, acquires target simulation data corresponding to the target simulation request candidate in each target simulation server that simulated the target simulation request candidate, wherein the target simulation data includes at least one of front server data and back server data, the front server data is for indicating the server that simulates the target simulation request candidate before acquiring the target simulation data, and the back server data is for indicating the server that simulates the target simulation request candidate after acquiring the target simulation data; A simulation result transmission module that splices each target simulation data as a result of target simulation and transmits it to a target computer device that is a device for transmitting the target simulation request candidate, wherein the automatic parallel simulation device of the integrated circuit is characterized by including the above;
8. A computer device, comprising: a processor; and a memory storing at least one instruction, at least one program, a code set or an instruction set that, when loaded and executed by the processor, implements the automatic parallel simulation method of the integrated circuit according to any one of claims 1 to 6. **Claim 9** A computer-readable storage medium storing at least one instruction that, when loaded and executed by a processor, implements the automatic parallel simulation method of the integrated circuit according to any one of claims 1 to 6.
Citation Information
Patent Citations
Fault simulation system and allocating method for job
JP1998134100A
Simulation execution method, execution device and recording medium
JP1999031169A
Method for Unified High-Level Hardware Description Language Simulation Based on Parallel Computing Platforms
US20130304450A1