# ycspice **Repository Path**: MoleSir/ycspice ## Basic Information - **Project Name**: ycspice - **Description**: 简单的 spice 仿真器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-04 - **Last Updated**: 2025-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: spice, Simulator, IC ## README # YCSpice 对简单的 Spice 文件进行仿真。目前支持以下 Spice 命令: - 电阻 - 电感 - 电容 - 静态电压源、电流源 - `PULSE`、`Sin` 电压源 - `SUBCKT` - `.probe` ## 编译与使用 项目使用 C++ 与 Rust 联合编写,Cargo 作为管理工具,确保拥有 Rust 以及 C++23 环境。调用 `cargo build` 即可编译。 在要仿真的 Spice 文件中增加 `.probe` 命令,并添加要测量的节点电压,最后这些电压波形将被绘制。 例如一个简单的 RC 电路: ````sp V1 Vin 0 PULSE 0 5 1m 10u 10u 1m 2m R1 Vin Vout 1k C1 Vout 0 1u .probe v(vin) .probe v(vout) ```` 运行程序需要传入三个命令行参数: 1. 仿真文件路径 2. 仿真时长 3. 仿真时间间隔 ````bash cargo run -- ./benchmark/pulse.sp 10e-3 10e-6 ```` 默认情况下,输出保存在 ./pic/result.svg 中。可以通过命令行 `-o` 以及 `-d` 选项修改保存位置以及策略。运行 `cargo run -- -h` 查看更多帮助信息! ## 实现思路 对完成 预处理(展开 expand) 的 spice 进行仿真。 1. 解析输入: - 电压源 - 电流源 - R - L - C 2. 开始仿真 1. 将 t0 位置的 L、C 设置为 电流源、电压源,进行求解 2. `t_{n+1} = t_{n} + t_{delta}`,将 L、C 近似为电流源、电压源,进行求解 3. 循环 2 直到所有时间点都解析完毕