CN107895096B - 电路仿真器中Verilog-A模型的计算优化方法 - Google Patents
电路仿真器中Verilog-A模型的计算优化方法 Download PDFInfo
- Publication number
- CN107895096B CN107895096B CN201711391912.6A CN201711391912A CN107895096B CN 107895096 B CN107895096 B CN 107895096B CN 201711391912 A CN201711391912 A CN 201711391912A CN 107895096 B CN107895096 B CN 107895096B
- Authority
- CN
- China
- Prior art keywords
- variable
- variables
- expanding
- expanded
- optimization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/36—Circuit design at the analogue level
- G06F30/367—Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种电路仿真器中Verilog‑A模型的计算优化方法,其包括以下步骤:收集所有对雅可比矩阵有贡献的变量;将变量直接依赖的变量集展开,用展开的变量集替换被展开的变量;将变量直接依赖的变量集组合展开,获得该变量的直接依赖;对变量所有依赖层次展开,获得该变量的直接依赖;重复步骤2)至步骤4),对下一变量进行遍历优化,直至遍历所有变量。本发明的优化方法遍历所有对雅可比矩阵有贡献的变量,从局部和整体上通过对单个变量和其他变量之间的依赖进行选择性的展开,使得最终的变量依赖数量最少。本发明采用多维度多次迭代进行优化,优化比较彻底,效率提高非常明显。
Description
技术领域
本发明属于EDA产品设计领域,用于在EDA仿真产品中对Verilog-A模型的计算进行优化加速,特别涉及一种电路仿真器中Verilog-A模型的计算优化方法。
背景技术
Verilog-A是描述模拟电路系统和模拟电路单元的结构、行为及特性参数的模块化硬件描述语言。随着工艺不断的向着纳米级进展,Verilog-A在器件级、标准单元以及系统级建模中已经发挥着越来越重要的作用。EDA仿真器要支持Verilog-A电路模型,必须将Veriglog-A电路描述通过解析编译成和仿真器接口相适应的c/c++代码。Verilog-A主要通过对端口信号进行一系列复杂运算来模拟电路的行为特性,这一系列运算最终会转换成该模型对电路矩阵的贡献来进行求解计算。
Verilog-A模型中把端口信号值赋值给变量就会产生该变量对端口信号的依赖,在产生的代码中要加入该变量对所有依赖的端口信号的导数运算,才能正确的填充雅可比矩阵,这种依赖会随着变量与变量之间的赋值运算进行传递。如果Verilog-A模型本身很复杂,在产生的代码中,需要加入大量的变量对节点电压或支路电流的导数计算。由于对每个模型的计算会在每次迭代的时候都进行,所以大量冗余的导数计算会造成非常大的时间开销,从而影响仿真速度。
本发明提出了一种通过压缩变量依赖数量来减少计算量的优化方法。
发明内容
为了解决现有技术中存在的不足,本发明的目的在于提供一种电路仿真器中Verilog-A模型的计算优化方法,通过压缩变量依赖数量来减少计算量。
为实现上述目的,提供的电路仿真器中Verilog-A模型的计算优化方法,包括以下步骤:
1)收集所有对雅可比矩阵有贡献的变量;
2)将变量直接依赖的变量集展开,用展开的变量集替换被展开的变量;
3)将变量直接依赖的变量集组合展开,获得该变量的直接依赖;
4)对变量所有依赖层次展开,获得该变量的直接依赖;
5)重复步骤2)至步骤4),对下一变量进行遍历优化,直至遍历所有变量。
进一步地,所述步骤2)进一步包括,将变量直接依赖的变量集依次展开,在展开的过程中,如果依赖数量增加,则本次展开取消。
进一步地,所述步骤3),进一步包括,将变量直接依赖的变量集多个组合展开,取展开后依赖数量最少变量集作为该变量的直接依赖。
进一步地,所述步骤3),进一步包括,对变量所依赖层次从高到低,每一层全部展开,取展开后依赖数量最少的一层变量集,作为该变量的直接依赖。
进一步地,所述变量,其编号唯一,并按照依赖关系从低到高标出层级,所述变量的层级是其所依赖的变量中层级最高值加1,端口信号层级为0。
更进一步地,所述变量为叶子节点变量,且所述叶子节点变量依赖多个端口信号。
本发明的优化方法遍历所有对雅可比矩阵有贡献的变量,从局部和整体上通过对单个变量和其他变量之间的依赖进行选择性的展开,使得最终的变量依赖数量最少。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的整体优化流程图;
图2为根据本发明的优化子流程图;
图3为根据本发明的对变量直接依赖的变量集依次展开优化示意图;
图4为根据本发明的对变量直接依赖的变量集组合展开优化示意图;
图5为根据本发明的对变量所有依赖层次逐层展开优化示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的整体优化流程图。优化开始后,在步骤101,收集变量依赖关系。
在该步骤中,收集所有需要优化的变量,建立它们之间的依赖关系。每个变量需要有唯一的编号(名称相同的变量被多个赋值语句赋值被认为是不同变量),变量按照依赖关系从低到高标出层级,一个变量的层级是它所依赖的变量中层级最高值加1,端口信号层级统一为0。
在步骤102,遍历变量,逐个进行优化。
在步骤103,对在步骤102中的当前变量的变量依赖进行优化。
在该步骤中还包括以下步骤:
1)将变量直接依赖的变量集依次展开,用展开的变量集替换被展开的变量,展开的过程中要保证新得到的直接依赖数量不会增加,如果依赖数量增加,则取消本次展开。如图3所示,变量A初始依赖数量为4,展开变量B1之后依赖会数量增加,所以取消变量B1的展开,展开变量B3之后依赖数量则会减少,保留变量B3的展开,用变量集{B2,B4}替换变量B3得到变量A的最终变量依赖集{B1,B2,B4}。
2)将变量直接依赖的变量集多个组合展开,取展开后依赖数量最少变量集作为该变量的直接依赖。如图4所示,变量A的初始依赖数量为4,单独展开变量B1、B2、B3、B4都会使得依赖数量增加,而同时展开变量B1、B2、B4则会使依赖数量减少,得到A的最终变量依赖集{C1,C2,B3}。
3)对变量所有依赖层次从高到低,每一层全部展开,取展开后依赖数量最少的一层变量集,作为该变量的直接依赖。如图5所示,变量A的初始依赖数量为4,逐层展开的过程中可以找到最优的变量依赖集{D2,D2,D3}。
以上优化中均假设叶子节点变量依赖多个端口信号。
如果经过上述三个步骤变量依赖得了改善,就继续依次再进行一轮,如果没有,就结束对该变量的优化。
在步骤104,判断是否已遍历完成。
在该步骤,如果已经完成了对所有变量的遍历工作,则进行下一步骤;如果还未完成对所有变量的遍历工作,则返回步骤102,继续遍历下一个遍历,重复步骤103至步骤104。
当程序判断已经完成变量遍历,则在步骤105,根据优化之后的变量依赖关系和它们之间的真实的运算产生相应的代码(code)。
在产生代码的过程中,对模型中原始表达式按照优化之后的依赖进行展开就可以得到该变量的优化计算。
本发明针对EDA仿真器在支持Verilog-A电路模型时,在将Verilog-A模型描述语句转换成c/c++代码的过程中产生的大量冗余导数计算导致仿真效率变慢的问题,提出了从多个维度经过多次迭代对变量依赖进行压缩优化的方法,在不影响仿真精度的前提下,达到提高仿真器效率的目的。优化方法严格按照原始网表的顺序进行,没有改变变量之间的赋值传递顺序,优化前后计算精度一致。优化全面彻底。采用多维度多次迭代进行优化,优化比较彻底,效率提高非常明显。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种电路仿真器中Verilog-A模型的计算优化方法,其特征在于,包括以下步骤:
1)收集所有对雅可比矩阵有贡献的变量;
2)将变量直接依赖的变量集展开,用展开的变量集替换被展开的变量;
3)将变量直接依赖的变量集组合展开,获得该变量的直接依赖;
4)对变量所有依赖层次展开,获得该变量的直接依赖;
5)重复步骤2)至步骤4),对下一变量进行遍历优化,直至遍历所有变量;
每个变量有唯一的编号,变量按照依赖关系从低到高标出层级;
所述步骤2)进一步包括,将变量直接依赖的变量集依次展开,用展开的变量集替换被展开的变量,判断展开过程中得到的直接依赖数量是否增加,若依赖数量增加,则取消本次展开;
所述步骤3),进一步包括,将变量直接依赖的变量集多个组合展开,取展开后依赖数量最少变量集作为该变量的直接依赖;
所述步骤4),进一步包括,对变量所有依赖层次从高到低,每一层全部展开,取展开后依赖数量最少的一层变量集,作为该变量的直接依赖;
根据优化之后的变量依赖关系和它们之间的运算产生相应的代码。
2.根据权利要求1所述的电路仿真器中Verilog-A模型的计算优化方法,其特征在于,所述变量的层级是其所依赖的变量中层级最高值加1,端口信号层级为0。
3.根据权利要求1-2中任一项所述的电路仿真器中Verilog-A模型的计算优化方法,其特征在于,所述变量为叶子节点变量,且所述叶子节点变量依赖多个端口信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711391912.6A CN107895096B (zh) | 2017-12-21 | 2017-12-21 | 电路仿真器中Verilog-A模型的计算优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711391912.6A CN107895096B (zh) | 2017-12-21 | 2017-12-21 | 电路仿真器中Verilog-A模型的计算优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107895096A CN107895096A (zh) | 2018-04-10 |
CN107895096B true CN107895096B (zh) | 2020-07-28 |
Family
ID=61808368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711391912.6A Active CN107895096B (zh) | 2017-12-21 | 2017-12-21 | 电路仿真器中Verilog-A模型的计算优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107895096B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046575A (zh) * | 2019-12-23 | 2020-04-21 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种保证仿真一致性的方法及系统 |
CN112965722B (zh) * | 2021-03-03 | 2022-04-08 | 深圳华大九天科技有限公司 | 一种Verilog-A模型的优化方法、电子设备及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383128B2 (en) * | 2004-11-12 | 2008-06-03 | Chandler Larry S | Implementing two dimensional segment inversions with inversion-conforming data sets processing being rendered to include generalized composite weight factors in the processing of error-affected multivariate data samples |
CN101078994A (zh) * | 2006-05-26 | 2007-11-28 | 松下电器产业株式会社 | 编译器装置、编译器方法和编译器程序 |
CN102404167B (zh) * | 2011-11-03 | 2014-02-19 | 清华大学 | 基于变量依赖的并行扩展有限状态机的协议测试生成方法 |
-
2017
- 2017-12-21 CN CN201711391912.6A patent/CN107895096B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107895096A (zh) | 2018-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298843B (zh) | 一种基于着色随机Petri网的复杂机构动态级联可靠性建模方法 | |
CN106293664A (zh) | 代码生成方法及装置 | |
US20090083014A1 (en) | Method for analyzing the reliability of technical installations with the use of physical models | |
CN107895096B (zh) | 电路仿真器中Verilog-A模型的计算优化方法 | |
CN112327745B (zh) | 一种基于可试验数字孪生体的plc程序设计方法 | |
US7984398B1 (en) | Automated multiple voltage/power state design process and chip description system | |
Zhao et al. | Power grid analysis with hierarchical support graphs | |
CN104199664B (zh) | 一种基于注释的仿真代码同步生成方法 | |
CN106874562B (zh) | 一种将架构模型转换为静态计算模型的转换系统及其方法 | |
CN107038297A (zh) | 全球能源互联网运行特性仿真的自适应变步长积分方法 | |
CN111339640A (zh) | 一种基于Revit插件Dynamo的建筑物车位编号自动创建方法 | |
CN107122509A (zh) | 一种Pro/E设计模型几何轻量化方法 | |
CN103699746B (zh) | 基于数据库的cadds5管系三维设计方法及系统 | |
CN105335161A (zh) | 一种从tasm时间抽象状态机到扩展nta自动机的转换方法 | |
CN103425844A (zh) | 基于数据流通信平台的cad/cae系统及集成方法 | |
CN115587480A (zh) | 数字化仿真方法以及数字化仿真装置 | |
CN111310897A (zh) | 一种神经网络终端部署微调训练方法 | |
US20230244844A1 (en) | Memory instance reconfiguration using super leaf cells | |
CN115374676A (zh) | 一种电机定子有限元网格自动建模方法、系统及存储介质 | |
CN108197353A (zh) | 一种基于ansys的apdl语言的固体火箭发动机工装设计方法 | |
CN112965722B (zh) | 一种Verilog-A模型的优化方法、电子设备及计算机可读存储介质 | |
EP0598476B1 (en) | Compilation mechanism for a simulation model | |
CN103049301A (zh) | 基于bom的多实例聚合仿真建模系统 | |
CN112558498A (zh) | 一种基于数据池的mbse飞行器系统间联合设计与验证方法 | |
CN106022944B (zh) | 油藏数值模拟中常规与流线模型的数据体转换方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210323 Address after: 518100 1001, building 5, Shenjiu science and Technology Pioneer Park, northwest, intersection of Taohua road and Binglang Road, Fubao community, Fubao street, Futian District, Shenzhen City, Guangdong Province Patentee after: Shenzhen Huada Jiutian Technology Co.,Ltd. Address before: 100102 floor 2, block a, No.2, lizezhong 2nd Road, Chaoyang District, Beijing Patentee before: HUADA EMPYREAN SOFTWARE Co.,Ltd. |
|
TR01 | Transfer of patent right |