Pinned toolchain under hardware/eda/ so the design can be checked/simulated identically in the future (system KiCad is 7.0, which has no CLI ERC): - Containerfile: Ubuntu 24.04 + KiCad 9 (PPA) + ngspice + python3. - run.sh: build-if-needed + run with the repo mounted; lands in hardware/kicad. - sim/input_loading.cir: ngspice deck proving the line(25k) vs instrument(1M) input-loading decision — Hi-Z preserves a +16dB pickup resonance the 25k load flattens to -3dB. Verified: KiCad 9.0.9, ngspice-42, ERC runs clean (0 violations) on pm_k1_core.kicad_sch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
36 lines
1.6 KiB
Markdown
36 lines
1.6 KiB
Markdown
# PM_K-1 EDA environment
|
|
|
|
A reproducible container with the tools to design, check, and simulate the core board —
|
|
so the work doesn't depend on whatever happens to be installed on a given machine, now or
|
|
in 50 years.
|
|
|
|
## What's inside
|
|
- **KiCad 9** — schematic capture + PCB layout, and a CLI (`kicad-cli`) that can run
|
|
**ERC** (Electrical Rules Check) and DRC, and export netlists/PDF/Gerbers.
|
|
- **ngspice** — SPICE simulator for validating the analog audio circuits before we commit
|
|
copper (op-amp stages, filters, input loading, etc.).
|
|
- **python3** — scripting, BOM munging, optional code-defined-schematic helpers.
|
|
|
|
## Why a container?
|
|
The system KiCad here is 7.0, whose CLI can't run ERC (that arrived in KiCad 8). Rather than
|
|
fight the host, we pin a known toolchain. Anyone — including future-you — rebuilds the exact
|
|
environment with one command.
|
|
|
|
## Use it
|
|
```bash
|
|
cd hardware/eda
|
|
./run.sh # interactive shell, lands in hardware/kicad/
|
|
./run.sh kicad-cli version # confirm KiCad 9
|
|
./run.sh kicad-cli sch erc pm_k1_core.kicad_sch # run ERC on the schematic
|
|
./run.sh ngspice -b ../eda/sim/input_loading.cir # run a simulation (cwd is kicad/)
|
|
```
|
|
`run.sh` builds the image on first use, then mounts the whole repo at `/work` (so KiCad sees
|
|
`hardware/`). Use `RUNTIME=docker ./run.sh …` to use Docker instead of Podman.
|
|
|
|
## Layout
|
|
```
|
|
eda/
|
|
Containerfile # the pinned toolchain (KiCad 9 + ngspice + python)
|
|
run.sh # build-if-needed + run with the repo mounted
|
|
sim/ # ngspice decks (SPICE simulations of the analog circuits)
|
|
```
|