yvt/simac
1
8
Fork
You've already forked simac
0
Work in progress - an interactive analog circuit simulation toy program
  • Rust 99.6%
  • Nix 0.2%
  • CSS 0.1%
yvt e737ddbc72
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
chore(nix): nixfmt
2026年06月27日 12:57:48 +09:00
.cargo chore(cargo): disable frame pointer omission on Linux 2024年11月25日 00:32:30 +09:00
.helix init 2024年05月24日 01:12:53 +09:00
crates refactor(shell_gtk::utils): address clippy::while_let_loop 2026年06月27日 12:48:25 +09:00
doc doc(readme): add app icon, center title 2025年07月06日 17:44:00 +09:00
examples doc(examples/power/joule-thief): init 2025年11月02日 01:15:19 +09:00
vendor chore(vendor): update kdl-rs submodule 2025年02月03日 08:53:48 +09:00
.gitignore init 2024年05月24日 01:12:53 +09:00
.gitmodules chore(vendor): add kdl-rs submodule 2024年07月07日 20:31:36 +09:00
.woodpecker.yml chore(ci): upgrade to nixos-26.05 2026年06月26日 12:22:13 +09:00
ARCHITECTURE.md doc(architecture): mention more files in "Other Files in Repository" 2025年09月19日 09:24:28 +09:00
Cargo.lock chore(deps): cargo update 2026年06月27日 12:53:40 +09:00
Cargo.toml chore: upgrade svgtypes to ^0.16 2025年10月29日 01:12:17 +09:00
clippy.toml feat(simulate::core_host): implement Newton–Raphson method 2024年06月08日 14:42:05 +09:00
flake.lock chore(nix): nix flake update 2026年06月26日 12:23:45 +09:00
flake.nix chore(nix): nixfmt 2026年06月27日 12:57:48 +09:00
LICENSE doc: license it under GPL-3.0-or-later 2024年11月17日 17:37:19 +09:00
meson.build chore(meson): install examples 2025年07月04日 01:57:17 +09:00
meson_options.txt chore(meson): add app_id_suffix option 2024年11月09日 01:29:33 +09:00
README.md doc(readme): remove remaining tasks, link to issue tracker instead 2025年10月26日 19:45:39 +09:00
rust-toolchain.toml chore(rust-toolchain): switch to Rust 1.95.0 2026年06月27日 12:35:57 +09:00
rustfmt.toml style(rustfmt): allow longer single-line let-else/if-else 2024年06月12日 22:16:31 +09:00

Simac

Please do not theme this app

Simac (Simulator for Analog Circuits) is a program to design and simulate analog circuits, built for casual experimentation and educational use.

Work in Progress

Many essential features are missing. Visit the issue tracker for remaining tasks.

Design Principles

  • Modern UI. The application's user interface should meet the high standards expected of modern applications.

  • Portability. Low-level components should avoid depending on specific runtime environments.

    • Device models are implemented by no-std generic code so that the simulation can run anywhere where Rust can, even where the full standard library or double-precision FP datatype is not supported.
  • Interactivity. Emphasize responsiveness over qualitative accuracy.

    • Default error limits can be relaxed to provide a reasonable simulation speed as long as this does not preclude important phenomenons from being observed.
  • Intuitiveness. Imitate breadboard experiments. The simulator should try to produce reasonable results in all but the most extreme or contradictory situations.

  • Hackable. The source code should be well-organized and documented to make it understandable, educative, and extensible while providing reasonable performance.

    • This project is written mostly in Rust, whose strong typing and ownership-oriented paradigm guide programmers toward writing correct, well-organized code, and whose tooling enables them to document code easily and regularly.

    • New compact device models can be easily added. They can be implemented in Rust or Verilog-A.

Usage

GTK Shell

CLI Shell

The CLI shell can be used to run simulation from a command-line.

$ cargo run --bin simac-cli --release -- -w examples/bjt/multivibrator-astable.simac schematic -o /tmp/frame-####.png -D 1e-3 -d 1e-5
Start time = 0.000000e0
End time = 1.000000e-3
Simulation for 1.000000e-3 secs completed in 9.901145e-2 secs (factor 0.010)
[..] INFO simac_cli::verb_schematic: Images saved: /tmp/frame-0099.png (and 99 more)

On NixOS

You can launch the latest development version of the application by (requires Nix flakes):

$ nix run git+https://codeberg.org/yvt/simac.git

Developing

On NixOS:

$ nix develop
$ cargo run -p simac_shell_gtk