Finite Element Assembly Matrix Compression Storage Method and Device for Process Simulation
By using two arrays to store the positions and values of the sparse coefficient matrix respectively in semiconductor process simulation, the problem of sparsity matrix storage space limitation is solved, and efficient memory usage and large-scale grid processing are achieved.
Patent Information
- Application Number
- CN202211404832.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-11-10
- Publication Date
- 2025-07-22
- Estimated Expiration
- 2042-11-10
AI Technical Summary
In the prior art, semiconductor process simulation software is limited by the need for sparse matrix storage space when processing large-scale grids, resulting in inefficient memory usage.
Two arrays are used to store the element positions and values of the sparse coefficient matrix respectively. Using symmetry and triangle adjacency relationship, only the positions and values of non-zero values are stored to reduce storage space.
This greatly reduces the storage overhead of sparse matrices, improves the memory usage efficiency of numerical calculations of process simulation, improves the software's ability to process large-scale grids, and does not affect the simulation accuracy.
Smart Images

Figure CN115618689B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to the technical field of semiconductor industry, and in particular, to a method and device for compression storage of a finite element assembly matrix for process simulation. Background Art
[0002] In the semiconductor industry, simulation software is usually used to simulate the process to shorten the semiconductor process design cycle and significantly reduce costs. In the numerical calculation process of process simulation, the substrate material area is divided into triangular finite element cells, material and process parameters are bound, and the diffusion equations of dopant particles, oxides, and oxidants are solved using the finite element method. Usually, a substrate material with a length and width ranging from a few micrometers to more than a dozen micrometers is divided into hundreds to thousands of triangular cells. When assembling the finite element equations, each numerical solution corresponding to each logical vertex of the triangular cell corresponds to a row of the coefficient matrix, and the number of rows of the matrix is as high as tens of thousands or even hundreds of thousands of rows. In addition, due to the simple adjacency relationship of the triangular cells, the coefficient matrix generated during the assembly process is a sparse matrix. Directly storing the sparse coefficient matrix requires a large amount of memory space, which greatly limits the grid scale that the process simulation software can handle and affects the space requirements of other operations of the process simulation. Summary of the Invention
[0003] The problem solved by the present invention is: how to reduce the storage space required for the matrix to be stored.
[0004] To solve the above problem, the present invention provides a method for compression storage of a finite element assembly matrix for process simulation, including:
[0005] Using two arrays to store the positions and values of the elements of the matrix to be stored respectively.
[0006] Optionally, the using two arrays to store the positions and values of the elements of the matrix to be stored respectively includes:
[0007] Using a first array and a second array to store the positions and values of the elements of the matrix to be stored respectively; wherein, the positions of the same element in the first array and the second array correspond to each other.
[0008] Optionally, both the first array and the second array include a first part for storing the elements on the main diagonal of the matrix to be stored, a second part for storing the elements in the lower triangular part of the matrix to be stored, and a third part for storing the elements in the upper triangular part of the matrix to be stored.
[0009] Optionally, the elements J[f] of the first part of the first array J satisfy:
[0010]
[0011] Among them, J[f] represents the value of the f-th element in the first array J, N represents the number of rows of the matrix to be stored, and d represents the number of non-zero elements in the i-th column of the lower triangular part of the matrix to be stored;
[0012] The elements A[f] of the first part of the second array A satisfy:
[0013] A[f] = a ii (f = i, 1 ≤ i ≤ N),
[0014] Among them, A[f] represents the value of the f-th element in the second array A, and a ii represents the value of the element in the i-th row and i-th column of the matrix to be stored.
[0015] Optionally, the elements J[f] of the second part of the first array J and the elements A[f] of the second part of the second array A satisfy:
[0016] A[f] = a ji , j = J[f], J[i] ≤ f ≤ J[i + 1] - 1,
[0017] Among them, a ji represents the element in the j-th row and i-th column of the lower triangular part of the matrix to be stored.
[0018] Optionally, the elements J[f] of the third part of the first array J and the elements A[f] of the third part of the second array A satisfy:
[0019] A[f] = a ij , j = J[f - N - L], J[i] ≤ f - N - L ≤ J[i + 1] - 1,
[0020] Among them, a ij represents the element in the i-th row and j-th column of the upper triangular part of the matrix to be stored, and L represents the number of non-zero elements in the lower triangular part of the matrix to be stored.
[0021] To solve the above problems, the present invention also provides a finite element assembly matrix compression storage device for process simulation, including:
[0022] A storage unit for storing the positions and values of the elements of the matrix to be stored by using two arrays respectively.
[0023] Optionally, the storage unit includes a first storage unit and a second storage unit. The first storage unit is used to store the positions of the elements of the matrix to be stored by using a first array, and the second storage unit is used to store the values of the elements of the matrix to be stored by using a second array; among them, the positions of the same element in the first array and the second array correspond to each other.
[0024] To solve the above problems, the present invention also provides a finite element assembly matrix compression storage device for process simulation, including a computer-readable storage medium storing a computer program and a processor. When the computer program is read and run by the processor, the finite element assembly matrix compression storage method for process simulation described above is implemented.
[0025] To solve the above problems, the present invention also provides a computer-readable storage medium. The computer-readable storage medium stores a computer program, and when the computer program is read and run by a processor, the finite element assembly matrix compression storage method for process simulation described above is implemented.
[0026] Compared with the prior art, the present invention has the following beneficial effects: In this method, two arrays are used to store the positions and values of the elements of the matrix to be stored (sparse coefficient matrix) respectively. Compared with directly storing the matrix to be stored, it requires less space, can greatly reduce the storage overhead required for the matrix to be stored, improve the memory usage efficiency in the corresponding process simulation numerical calculation process, and enhance the ability of the corresponding process simulation software to process large-scale meshes. Moreover, this method has simple steps, is easy to implement, the operation process is transparent to users, does not affect the accuracy of the process simulation numerical calculation method, does not significantly affect the efficiency of the numerical calculation in the process simulation process, improves the memory space usage efficiency, enhances the ability of the software to process large-scale meshes, and has broad application prospects. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] Figure 1 It is a structural block diagram of the finite element assembly matrix compression storage device for process simulation in an embodiment of the present invention. DETAILED DESCRIPTION OF THE EMBODIMENTS
[0028] To make the above objects, features, and advantages of the present invention more obvious and understandable, the following detailed description of the specific embodiments of the present invention will be given with reference to the accompanying drawings.
[0029] It should be noted that the terms "first", "second", etc. in the specification and claims of the present invention and the above drawings are used to distinguish similar objects, and do not necessarily need to describe a specific order or sequence. It should be understood that such data can be interchanged under appropriate circumstances so that the embodiments of the present invention described here can be implemented in an order different from those illustrated or described here.
[0030] An embodiment of the present invention provides a finite element assembly matrix compression storage method for process simulation, including:
[0031] Using two arrays to store the positions and values of the elements of the matrix to be stored respectively.
[0032] Specifically, in the process simulation of the semiconductor industry, the corresponding numerical calculation process divides the substrate material region of a semiconductor device into triangular finite element cells, binds material and process parameters, and uses the finite element method to solve the diffusion equations of dopant particles, oxides, oxidants, etc. Generally, a substrate material with a length and width ranging from a few micrometers to more than a dozen micrometers is divided into hundreds to thousands of triangular cells. When assembling the finite element equations, each numerical solution at each logical vertex of a triangular cell corresponds to a row of the coefficient matrix, and the number of rows of the matrix is as high as tens of thousands or even hundreds of thousands; in addition, due to the simple adjacency relationship of triangular cells, the coefficient matrix generated during the assembly process is a sparse matrix (denoted as the sparse coefficient matrix, which is the matrix to be stored in this method). This method regards the sparse coefficient matrix as a symmetric structure. If both symmetric positions (positions symmetric about the main diagonal of the matrix to be stored) are zero values, there is no need to store them; otherwise, the values at both symmetric positions are stored simultaneously. This method stores the sparse coefficient matrix as two arrays, one for representing the positions where the non-zero values of the matrix are located, and the other for storing the data values. The two arrays store the corresponding positions and numerical values in the same order, ensuring that each non-zero value only needs to store one integer position and one real numerical value.
[0033] In this way, this method uses two arrays to store the positions and numerical values of the elements of the matrix to be stored (sparse coefficient matrix) respectively. Compared with directly storing the matrix to be stored, it requires less space, can greatly reduce the storage overhead (storage space, storage cost, etc.) required for the matrix to be stored, improve the memory usage efficiency of the corresponding process simulation numerical calculation process, and enhance the ability of the corresponding process simulation software to handle large-scale grids. Moreover, this method has simple steps, is easy to implement, the operation process is transparent to users, does not affect the accuracy of the process simulation numerical calculation method, does not significantly affect the efficiency of the numerical calculation in the process simulation process, improves the memory space usage efficiency, enhances the ability of the software to handle large-scale grids, and has broad application prospects.
[0034] Optionally, using two arrays to store the positions and numerical values of the elements of the matrix to be stored respectively includes:
[0035] Using a first array and a second array to store the positions and numerical values of the elements of the matrix to be stored respectively; among them, the positions of the same element in the first array and the second array correspond to each other.
[0036] Specifically, the first array and the second array store the positions and numerical values of the same element in the matrix to be stored in the same order respectively, ensuring that each element (non-zero value or non-zero element) in the matrix to be stored only needs to store one integer position and one real numerical value, so as to greatly save the storage space and cost required for the matrix to be stored.
[0037] Optionally, both the first array and the second array include a first part for storing elements on the main diagonal of the matrix to be stored, a second part for storing elements in the lower triangular part of the matrix to be stored, and a third part for storing elements in the upper triangular part of the matrix to be stored.
[0038] In this embodiment, in combination with the matrix decomposition form and operation specificities of the main operations in the semiconductor process simulation numerical calculation process, each array stores the elements of the matrix to be stored in the following form: first, the diagonal elements are stored, then the non-zero values (non-zero elements) of the lower triangular matrix (i.e., the lower triangular part of the matrix to be stored) are stored column by column, and then the non-zero values of the upper triangular matrix (i.e., the upper triangular part of the matrix to be stored) are stored row by row. In this way, the storage overhead required for the sparse coefficient matrix can be greatly reduced, the memory usage efficiency of the process simulation numerical calculation process can be improved, and the ability of the process simulation software to process large-scale grids can be enhanced.
[0039] Optionally, the elements J[f] of the first part of the first array J satisfy:
[0040]
[0041] where J[f] represents the value of the f-th element in the first array J, N represents the number of rows of the matrix to be stored, and d represents the number of non-zero elements in the i-th column of the lower triangular part of the matrix to be stored;
[0042] The elements A[f] of the first part of the second array A satisfy:
[0043] A[f] = a ii (f = i, 1 ≤ i ≤ N),
[0044] where A[f] represents the value of the f-th element in the second array A, and a ii represents the value of the element in the i-th row and i-th column of the matrix to be stored.
[0045] This method designs from three aspects: symmetry, separate storage of position and value, and combination with the operation requirements of process simulation, to ensure the storage efficiency of the sparse coefficient matrix (matrix to be stored), so as to achieve the purpose of improving the memory space usage efficiency and the ability to process large-scale grids without affecting the accuracy of the numerical calculation method and without significantly affecting the efficiency of the numerical calculation in the process simulation process. Specifically, the sparse coefficient matrix is regarded as a symmetric matrix. If both positions symmetric about the diagonal are zero values, there is no need to store them; otherwise, the values of the two symmetric positions are stored simultaneously. The sparse coefficient matrix is stored as two arrays: the first array J and the second array A, where J stores the positions of non-zero elements and A stores the non-zero values. Moreover, the first part of the first array J is used to store the elements on the main diagonal of the matrix to be stored, and the elements J[f] of the first part of the first array J satisfy:
[0046]
[0047] Among them, J[f] represents the value of the f-th element in the first array J, N represents the number of rows of the matrix to be stored, and d represents the number of non-zero elements in the i-th column of the lower triangular part of the matrix to be stored;
[0048] The elements A[f] of the first part of the second array A satisfy:
[0049] A[f] = a ii (f = i, 1 ≤ i ≤ N),
[0050] Among them, A[f] represents the value of the f-th element in the second array A, and a ii represents the value of the element in the i-th row and i-th column of the matrix to be stored. For f = N + 1, A[N + 1] in the second array A is reserved and not used.
[0051] Optionally, the elements J[f] of the second part of the first array J and the elements A[f] of the second part of the second array A satisfy:
[0052] A[f] = a ji , j = J[f], J[i] ≤ f ≤ J[i + 1] - 1,
[0053] Among them, a ji represents the element in the j-th row and i-th column of the lower triangular part of the matrix to be stored.
[0054] Specifically, for the elements J[f] of the second part of the first array J and the elements A[f] of the second part of the second array A, J[f] and A[f] satisfy:
[0055] A[f] = a ji , j = J[f], J[i] ≤ f ≤ J[i + 1] - 1,
[0056] In this way, it is ensured that the positions of the same element in the first array J and the second array A correspond.
[0057] Optionally, the elements J[f] of the third part of the first array J and the elements A[f] of the third part of the second array A satisfy:
[0058] A[f] = a ij , j = J[f - N - L], J[i] ≤ f - N - L ≤ J[i + 1] - 1,
[0059] Among them, a ij represents the element in the i-th row and j-th column of the upper triangular part of the matrix to be stored, and L represents the number of non-zero elements in the lower triangular part of the matrix to be stored.
[0060] Specifically, for the elements J[f] of the third part of the first array J and the elements A[f] of the third part of the second array A, J[f] and A[f] satisfy:
[0061] A[f] = a ij , j = J[f - N - L], J[i] ≤ f - N - L ≤ J[i + 1] - 1,
[0062] where a ij represents the element at the i-th row and j-th column of the upper triangular part of the matrix to be stored, and L represents the number of non-zero elements in the lower triangular part of the matrix to be stored. In this way, the correspondence of the positions of the same element in the first array J and the second array A is ensured.
[0063] Exemplarily, comparing the data structure sizes before and after adopting this method, for process simulation tasks with large sizes and high subdivision accuracies, the actual compression effect of this method on the matrix to be stored is generally about 80%; for process simulation tasks with low subdivision accuracies, the actual compression effect of this method is generally more than 50%. In this way, the storage overhead required for the sparse coefficient matrix is greatly reduced, the memory usage efficiency in the numerical calculation process of process simulation is improved, and the ability of the process simulation software to process large-scale grids is enhanced.
[0064] Combined with Figure 1 shown in the figure, another embodiment of the present invention further provides a finite element assembly matrix compression storage device for process simulation, including:
[0065] A storage unit for storing the positions and values of the elements of the matrix to be stored by using two arrays respectively.
[0066] Optionally, combined with Figure 1 shown in the figure, the storage unit includes a first storage unit and a second storage unit. The first storage unit is used to store the positions of the elements of the matrix to be stored by using a first array, and the second storage unit is used to store the values of the elements of the matrix to be stored by using a second array; wherein, the positions of the same element in the first array and the second array correspond to each other.
[0067] In this embodiment, through the cooperation of the first storage unit and the second storage unit and other structures of the storage unit of the finite element assembly matrix compression storage device for process simulation, it is ensured that the finite element assembly matrix compression storage method for process simulation can be executed smoothly and stably, so as to greatly reduce the storage overhead (storage space, storage cost, etc.) required for the matrix to be stored, improve the memory usage efficiency in the corresponding process simulation numerical calculation process, and enhance the ability of the corresponding process simulation software to process large-scale grids.
[0068] Another embodiment of the present invention also provides a finite element assembly matrix compression storage device for process simulation, including a computer-readable storage medium storing a computer program and a processor. When the computer program is read and run by the processor, the finite element assembly matrix compression storage method for process simulation described above is implemented.
[0069] In this way, through the cooperation of the processor, computer-readable storage medium and other structures of the finite element assembly matrix compression storage device for process simulation, the finite element assembly matrix compression storage method for process simulation is executed, ensuring that the finite element assembly matrix compression storage method for process simulation can be executed smoothly and stably, so as to greatly reduce the storage overhead (storage space, storage cost, etc.) required for the matrix to be stored, improve the memory usage efficiency of the corresponding process simulation numerical calculation process, and enhance the ability of the corresponding process simulation software to process large-scale meshes.
[0070] Another embodiment of the present invention also provides a computer-readable storage medium storing a computer program. When the computer program is read and run by the processor, the finite element assembly matrix compression storage method for process simulation described above is implemented.
[0071] Essentially, or the part that contributes to the prior art, or all or part of the technical solution of the embodiments of the present invention can be embodied in the form of a software product. The computer software product is stored in a storage medium and includes several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) or a processor to execute all or part of the steps of the method of the embodiments of the present invention. The aforementioned storage medium includes: various media such as USB flash drives, mobile hard disks, ROM, RAM, magnetic disks, or optical discs that can store program codes.
[0072] By storing the computer program corresponding to the finite element assembly matrix compression storage method for process simulation in the computer-readable storage medium, the stability of the computer program corresponding to the finite element assembly matrix compression storage method for process simulation can be ensured when it is read and run by the corresponding processor. Executing the finite element assembly matrix compression storage method for process simulation in this way ensures that the finite element assembly matrix compression storage method for process simulation can be executed smoothly and stably, so as to greatly reduce the storage overhead (storage space, storage cost, etc.) required for the matrix to be stored, improve the memory usage efficiency of the corresponding process simulation numerical calculation process, and enhance the ability of the corresponding process simulation software to process large-scale meshes.
[0073] Although the present disclosure is disclosed as above, the protection scope of the present disclosure is not limited thereto. Those skilled in the art can make various changes and modifications without departing from the spirit and scope of the present disclosure, and these changes and modifications will all fall within the protection scope of the present invention.
Claims
1. A finite element assembly matrix compression storage method for process simulation, characterized in that Comprising: Using two arrays to store the positions and values of the elements of the matrix to be stored respectively; Among them, the step of using two arrays to store the positions and values of the elements of the matrix to be stored respectively includes: Using a first array and a second array to store the positions and values of the elements of the matrix to be stored respectively; wherein, the positions of the same element in the first array and the second array correspond to each other; both the first array and the second array include a first part for storing the elements on the main diagonal of the matrix to be stored, a second part for storing the elements in the lower triangular part of the matrix to be stored, and a third part for storing the elements in the upper triangular part of the matrix to be stored; The first array J The elements of the first part Satisfy: , Among them, represents the value of the J th f element in the first array, N represents the number of rows of the matrix to be stored, d represents the number of non-zero elements in the i th column of the lower triangular part of the matrix to be stored; The second array A of the elements of the first part satisfy: , Among them, represents the value of the A nth f element in the second array, aii represents the value of the element in the i-th row and i-th column of the matrix to be stored; The first array J of the elements of the second part and the second array A of the elements of the second part Satisfy: Among them, aji represents the element at the i-th column and the j-th row of the lower triangular part of the matrix to be stored; The first array J Elements of the third part And the second array A Elements of the third part Satisfy: Among them, aij represents the element in the \(i\)-th row and \(j\)-th column of the upper triangular part of the matrix to be stored, L represents the number of non-zero elements in the lower triangular part of the matrix to be stored.
2. A finite element assembly matrix compression storage device for process simulation, characterized in that, Comprising: A storage unit for using two arrays to store the positions and values of the elements of the matrix to be stored respectively; Among them, the storage unit includes a first storage unit and a second storage unit. The first storage unit is used to store the positions of the elements of the matrix to be stored by using a first array, and the second storage unit is used to store the values of the elements of the matrix to be stored by using a second array; wherein, the positions of the same element in the first array and the second array correspond to each other; both the first array and the second array include a first part for storing the elements on the main diagonal of the matrix to be stored, a second part for storing the elements in the lower triangular part of the matrix to be stored, and a third part for storing the elements in the upper triangular part of the matrix to be stored; The first array J of the elements of the first part Satisfy: , Among them, represents the value of the J th f element in the first array, N represents the number of rows of the matrix to be stored, d represents the number of non-zero elements in the i th column of the lower triangular part of the matrix to be stored; the second array A of the elements of the first part satisfy: , Among them, represents the value of the A th f element in the second array, aii represents the value of the element in the i-th row and i-th column of the matrix to be stored; The first array J Elements of the second part And the second array A Elements of the second part Satisfy: Among them, aji represents the element in the \(i\)-th column and \(j\)-th row of the lower triangular part of the matrix to be stored; The first array J Elements of the third part And the second array A Elements of the third part Satisfy: Among them, aij represents the element at the i-th row and j-th column of the upper triangular part of the matrix to be stored, L represents the number of non-zero elements in the lower triangular part of the matrix to be stored.
3. A finite element assembly matrix compression storage device for process simulation, characterized in that, Comprising a computer-readable storage medium storing a computer program and a processor. When the computer program is read and run by the processor, the method for compressed storage of a finite element assembly matrix for process simulation as claimed in claim 1 is implemented.
4. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a computer program. When the computer program is read and run by a processor, the method for compressed storage of a finite element assembly matrix for process simulation as claimed in claim 1 is implemented.
Citation Information
Patent Citations
Finite element total stiffness matrix generation method and terminal
CN111008497A
Information processing device, information processing method, and information processing program
US20160203105A1