本发明涉及模拟电路数值仿真,尤其涉及的是一种大规模线性电路仿真方法、系统、电路仿真器及存储介质。
背景技术:
1、大规模电路在先进节点下已经到达千万其至亿级规模,电路仿真器面临巨大的挑战。例如,在现代电子产品的多功能以及新兴混合域设计需求下,超大规模集成电路设计的芯片、封装及系统层级的各种模拟、数字、电磁、射频和热的模块性能需求越来越高。又如,持续增加的工作频率带来了不可忽略的多种效应,例如延迟、失真、反射及串扰等。
2、现有技术中,针对大规模电路仿真的核心步骤在于稀疏矩阵分解,目前大多采用对稀疏矩阵重排的方法对稀疏矩阵进行分解,但是无法获取与控制划分矩阵块的数量和各个矩阵块的大小,导致电路仿真效率较低。
技术实现思路
1、鉴于上述现有技术的不足,本发明的目的在于提供一种大规模线性电路仿真方法、系统、电路仿真器及存储介质,旨在解决现有技术中存在的大规模线性电路仿真效率较低的问题。
2、为了实现上述目的,本发明第一方面提供一种大规模线性电路仿真方法,包括以下步骤:
3、根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
4、将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;
5、利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
6、采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
7、根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
8、可选的,所述利用图划分算法,对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
9、创建一个用于储存原图的原图栈和一个用于储存二分得到的子图的子图栈,所述原图是指所述预重排矩阵对应的无向图;
10、将所述原图逐个出所述原图栈之后二分为子图,获得二分子图;并将所述二分子图入所述子图栈,直至所述原图栈为空,交换所述原图栈和所述子图栈;
11、重复将各个所述原图二分为子图并交换所述原图栈和所述子图栈的过程,直至所述子图栈中所述二分子图的数量或所述原图栈和所述子图栈交换次数达到预设的数量;
12、利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵。
13、可选的,所述将所述原图逐个出所述原图栈之后二分为子图,获得二分子图,包括:
14、获取所有从所述原图栈出栈的原图大小;
15、基于上一次二分得到的所有所述二分子图的全局信息预设二分图大小阈值,若所述原图大小超过预设的二分图大小阈值,则将所述原图二分为子图,获得二分子图;否则,将所述原图设为所述二分子图。
16、可选的,所述利用所有所述二分子图对所述预重排矩阵进行行列重排,使得所述预重排矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵,包括:
17、基于所述系数矩阵的维度,预设列重排矩阵、双边界对角重排矩阵、行伸缩矩阵和列伸缩矩阵;
18、基于所述列重排矩阵、所述行伸缩矩阵和所述列伸缩矩阵,使得所述系数矩阵对角线上均有元素且绝对值为1,除对角线上的元素以外的元素绝对值不超过1,获得预重排矩阵;
19、基于所述图划分算法构造双边界对角重排形式,基于所述双边界对角重排形式对所述预重排矩阵进行列、行重排,获得双边界对角矩阵。
20、可选的,所述采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补,包括:
21、采用若干个计算节点构成分布式节点,将所述双边界对角矩阵的数据存放于目标节点上,并将所述目标节点记为主节点,将除所述主节点之外的节点记为子节点;
22、通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补;
23、通过第二消息传递接口函数对各个所述局部舒尔补求和,获得全局舒尔补。
24、可选的,所述通过第一消息传递接口函数将所述主节点上的数据广播到各个所述子节点,求解所有所述分布式节点的局部舒尔补,包括:
25、基于所述主节点上的数据,筛选出与各个所述分布式节点相对应的所述双边界对角矩阵中的元素,利用每个所述分布式节点对应的所述元素构建一个分块矩阵;
26、采用并行计算的方式求解各个所述分块矩阵,获得各个所述分布式节点的局部舒尔补。
27、可选的,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果,包括:
28、根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果并行求解当前时刻各个所述分布式节点的状态;
29、根据所述列重排矩阵和所述双边界对角重排矩阵,找到各个所述分布式节点所有时刻的求解结果对应的所述大规模线性电路仿真结果的行;
30、根据所述列伸缩矩阵对所述行上的所有元素进行缩放,获得所述大规模线性电路仿真结果。
31、本发明第二方面提供一种大规模线性电路仿真系统,所述系统包括:
32、初始化模块,用于根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将所述线性电路的常微分方程转换为大规模稀疏线性方程组;
33、矩阵重排模块,用于将所述大规模稀疏线性方程组的系数矩阵进行列重排,使所述系数矩阵对角线上全为非零元,获得预重排矩阵;并利用图划分算法,对所述预重排矩阵进行行列重排,使得双边界对角矩阵的非零元分布在对角线和右、下两个边界,获得双边界对角矩阵;
34、舒尔补计算模块,用于采用若干个计算节点构成分布式节点,基于所述双边界对角矩阵数据,求解所述各个分布式节点的局部舒尔补,并对各个所述局部舒尔补求和,获得全局舒尔补;
35、电路仿真模块,用于根据所述全局舒尔补和各个所述分布式节点在上一时刻的求解结果,并行求解各个所述分布式节点当前时刻的状态;根据所述列重排和行列重排,将各个所述分布式节点所有时刻的求解结果转化成所述大规模线性电路仿真结果。
36、本发明第三方面提供一种电路仿真器,所述电路仿真器包括仿真芯片、存储器以及存储在所述存储器上并可在所述仿真芯片上运行的大规模线性电路仿真程序,所述大规模线性电路仿真程序被所述仿真芯片执行时实任意一项上述大规模线性电路仿真方法的步骤。
37、本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有大规模线性电路仿真程序,所述大规模线性电路仿真程序被处理器执行时实现任意一项上述大规模线性电路仿真方法的步骤。
38、与现有技术相比,本发明方案的有益效果如下:
39、本发明首先根据线性电路的规模构建线性电路的常微分方程,根据欧拉迭代方法将线性电路的常微分方程转换为大规模稀疏线性方程组,以将其系数矩阵先进行列重排之后转换为对角线上全为非零元,再利用图划分算法进一步进行行列重排,以获得预期维度的双边界对角矩阵,能够有效控制大规模线性电路的分块数量和大小,从而保障后续仿真流程正常进行;然后采用多个计算节点构成分布式节点,基于双边界对角矩阵数据,求解各个分布式节点的局部舒尔补,并通过对各个局部舒尔补简单求和的方式获得全局舒尔补,提高了仿真效率;接着通过各个分布式节点在上一时刻的求解结果和全局舒尔补,并行求解各个分布式节点当前时刻的状态,加快了电路仿真效率;最后将各个分布式节点所有时刻的求解结果转化为电路仿真结果。
40、可见,本发明基于大规模线性电路的规模,将线性电路的常微分方程转换为合适维度的大规模稀疏线性方程组,以控制电路矩阵的分块数量和大小,能够在保障仿真流程顺利进行的前提下,通过并行处理各个子节点的方式进行电路仿真,能够显著地提高电路仿真效率。