多方言SPICE编译前端产品系统

我要开发同款
rockm32026年07月29日
3阅读

技术信息

语言技术
Rust
系统类型
算法模型
行业分类
科学研究

作品详情

行业场景

1. 由SPICE网表编译到公式模型,最终输出到各个求解器。
2. EDA仿真。
3. 传统的 SPICE 使用数值迭代(如 Newton-Raphson 法 + 稀疏矩阵求解),在处理复杂器件(如包含大量分支的 FinFET, GAA 晶体管模型)时容易出现收敛性问题。通过符号化预编译与代数环破除,可以提前确定方程的拓扑依赖,大幅提升后级动态求解(如 Transient 瞬态分析)的收敛速度和执行效率。

功能介绍

该项目基于SPICE解析器提供的AST,对SPICE网表进行编译,编译目标是符号运算方程组。该编译器的目标输入为SPICE网表,经过AST展平,原始方程生成,拓扑分析,拓扑方程生成,代数环破除,方程依赖拓扑排序,方程组输出,符号方程运行时编译等模块,最终的目标输出为可离散求解的符号运算方程组或运行时编译的二进制函数组。

项目实现

我是该项目的核心开发人员,负责项目的架构设计、算法设计、模块设计、工具库设计并承担绝大部分的开发工作。
(1)AST展平
该模块主要是为了处理SPICE网表中的嵌套结构,参数带入,同时处理优先级,对原始AST 进行递归展平,拿到真实的电路结构和电气参数特性。
(2)原始方程生成
该模块主要是根据AST中的器件类型和器件参数,生成对应的模型方程,也就是器件的伏安特性方程。同时,将器件连接的拓扑关系抽象,以便下一步处理。
基于方程生成的并行无关特性,本模块使用rayon对方程生成过程进行并行划分,同时,其方程生成流程和参数决策使用规则引擎结合静态决策树进行。规则引擎DSL决定树的运行路径,同时静态决策树中对DSL进行了预编译缓存,保持决策树静态特性的同时,提升规则引擎的决策速度。该方案主要为了解决复杂元器件的巨量决策参数,导致代码分支深度过高而引起的无法维护和深度抽象的问题。静态决策树,提供了可视化的方案,可维护性大大增加。
(3)拓扑分析与拓扑方程生成
该模块对SPICE器件的连接关系进行抽象、分析,并基于基尔霍夫定律生成独立的拓扑方程组。该模块涉及最小生成树算法,割集矩阵生成,回路矩阵生成,树枝和连枝的概念,矩阵乘法,最短路径算法等等。该模块的基本处理思路是,由拓扑关系生成图,由最小生成树算法确定树枝和连枝,然
后对树枝进行割图,生成割集矩阵,对连枝寻找环,生成回路矩阵,确认矩阵顺序正确,进行矩阵相乘得到系数矩阵,最终得到拓扑方程。
该模块的难点在于,如何处理多引脚器件,如何处理封装模块。我们通过引脚等效,对多引脚器件进行电势等效风格,通过引入虚拟中心节点和电势拓扑方程解决多引脚器件问题。最终的目的就是可以通过图等效计算割集和回路矩阵。
(4)代数环破除
.................

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论

rockm32026-07-29 19:20:54
非常早期的验证版本,后续真正的开发版本处于内部保密开发。