基于 SimulIDE 引擎的 WebAssembly 电路仿真工具,为 EasyEDA 专业版(嘉立创EDA专业版)提供强大的浏览器端电路仿真能力。
本项目是一个 EasyEDA 扩展插件,将 SimulIDE 的 C++ 仿真引擎编译为 WebAssembly,实现了在浏览器中进行实时电路仿真的功能。
-
WebAssembly 编译 - 基于 Emscripten 将 C++ 仿真引擎编译为 WASM,在浏览器中高效运行
-
实时仿真 - 事件驱动的仿真引擎,支持实时交互和动态元件属性更新
-
丰富的元件库 - 支持 BJT、MOSFET、二极管、电阻、电感、逻辑门、微控制器等多种电路元件
-
EasyEDA 扩展 - 以扩展插件形式集成,通过标准 API 与 EasyEDA 平台通信
-
数据可视化 - JSON 格式的仿真数据输出,实时推送到 EasyEDA 界面
-
高性能 - C++20 编写,O3 优化,提供原生级别的计算性能
-
跨平台 - 支持 Windows、Linux、macOS 构建和部署
-
可扩展 - 基于事件驱动的插件架构,易于扩展和维护
LCEDA 专业版平台
- 扩展管理器
- simulation-with-simulide 扩展插件
- TypeScript 扩展代码(src/index.ts)
- 事件监听器注册
- 仿真控制逻辑
- 数据推送处理
- webAssembly 模块(WASM)
- c++引擎
- 电路模拟计算
- 元件状态管理
| 工具 | 版本要求 | 用途 | 获取链接 |
|---|---|---|---|
| CMake | 3.15+ | 构建配置 | cmake.org |
| Emscripten | 最新版 | WASM 编译 | emscripten.org |
| GCC | 15.1.0+ | C++ 编译(本地构建) | MSYS2 |
| Python | 3.x | 运行测试服务器 | python.org |
Windows 用户 (推荐使用 MSYS2):
# 安装 MSYS2 后,在 MSYS2 终端中执行
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake
安装 Emscripten:
# 克隆 emsdk
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
# 安装最新版本
./emsdk install latest
./emsdk activate latest
# 配置环境变量(每次使用前需要执行)
source ./emsdk_env.sh # Linux/macOS
# 或
emsdk_env.bat # Windows
编辑构建脚本,设置 Emscripten SDK 路径:
Linux/macOS:
# 编辑 build-wasm.sh
export EMSDK="/path/to/your/emsdk"
Windows:
# 编辑 build-wasm.bat
set EMSDK=F:\Program Files (x86)\emsdk\emsdk
或者在脚本中会自动检测常见位置,如果检测失败,请手动设置环境变量。
使用构建脚本(推荐):
# Linux/macOS
chmod +x build-wasm.sh
./build-wasm.sh
# Windows (MSYS2/Git Bash)
bash build-wasm.sh
# Windows (CMD)
build-wasm.bat
清理并重新构建:
./build-wasm.sh clean
构建成功后,在 ouput/ 目录下会生成以下文件:
-
lceda-pro-sim-server.js- WASM 模块的 JavaScript 接口 -
lceda-pro-sim-server.wasm- WebAssembly 二进制文件
注:需要打包WASM文件制作插件的话,需要将这两个文件转移到根目录的wasm文件夹中进行插件生成。
# 激活 Emscripten 环境
source /path/to/emsdk/emsdk_env.sh
Windows(cmd) 使用emsdk_env.bat
# 创建构建目录
mkdir -p build-wasm
cd build-wasm
# 配置 CMake
emcmake cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
# 编译(使用多核加速)
make -j$(nproc)
在完成 WASM 构建后,构建 TypeScript 扩展代码:
# 1. 安装依赖
npm install
# 3. 完整构建(编译 + 打包扩展)
npm run build
构建输出:
-
dist/index.js- 编译后的扩展代码 -
simulation-with-simulide_v1.0.0.eext- 可安装的扩展包
扩展打包为 .eext 文件,可通过 LCEDA菜单选项中的高级选项 => 扩展管理器安装。
本项目分为两个独立的构建流程:
-
WASM 构建 - 将 C++ 仿真引擎编译为 WebAssembly
-
扩展构建 - 编译 TypeScript 并打包为
.eext扩展包
- 构建扩展包
```bash
npm install
npm run build
```
生成 simulation-with-simulide_v1.0.0.eext 文件
- 在 EasyEDA 中安装
- 打开 EasyEDA 专业版
- 进入扩展管理器
- 点击 "安装扩展"
- 选择生成的 .eext 文件
- 重启 EasyEDA
- 使用扩展
- 在eda中新建仿真原理图
- 即可使用
构建完成后,使用 Python 服务器进行测试:
# 方式一:使用 start-server 脚本(Windows)
start-server.bat
# 方式二:使用 Python 直接运行
python serve.py
# 方式三:使用 Python 3(Linux/macOS)
python3 serve.py
服务器将在 http://localhost:8080 启动。
打开浏览器访问:
http://localhost:8080/test.html
在测试页面中:
- 加载电路文件
- 点击上传区域选择电路文件(支持 .cir, .txt, .net 等格式)
- 或拖拽文件到上传区域
- 加载电路
- 点击 "Load Circuit" 按钮加载电路到仿真引擎
- 启动仿真
- 点击 "Start Simulation" 开始仿真
- 实时查看仿真状态、时间和帧率
- 停止仿真
- 点击 "Stop Simulation" 停止仿真
本项目采用双许可证模式:
- 原始 Simulide 代码
- 版权归 Santiago González 所有
- 采用 GNU Affero General Public License v3.0 (AGPLv3) 协议
- 参见 copyright.txt
- 修改和新增代码
- 版权归 EasyEDA & JLC Technology Group 所有
- 采用 GNU General Public License v3.0 (GPLv3) 协议
-
任何修改后的版本必须同样采用 AGPLv3 + GPLv3 双协议开源
-
如果作为网络服务提供,必须提供源代码(根据 AGPLv3 要求)
-
必须保留所有原始版权声明和许可声明
完整协议内容请查看 LICENSE 文件。
-
SimulIDE 项目 (simulide.com) - 感谢提供优秀的电路仿真引擎
-
Emscripten 团队 - 让 C++ 代码能够在浏览器中运行
-
所有项目贡献者和开源社区的支持