How microsoft/schgen works
SchGen turns natural-language circuit requests into editable KiCad schematics, while also constructing schematic/code training data and fine-tuning models for that task. The documented data path runs from agentic sketching through representation conversion and JSONL creation into LoRA training; generation then uses schematic-editing operations to produce KiCad output. The tree also includes symbol-context, verification, and evaluation capabilities. Source excerpts are partial, so links between unsampled subsystems are included only where the README documents the workflow.
Main entry points: generate.py Generate Schematic · make_dataset.py JSONL Dataset · train.py LoRA Fine-Tuning · exec_llm_code.py Execute Generated Code
Components 19
Schematic Generation
- Generate Schematic
schematic_generation/generate.py - LLM Interface
modules/utils/llm_interface.py - Symbol Context
modules/symbol_context.py - Schematic Designer
modules/sch_designer.py - Schematic Verifier
modules/sch_verifier.py - Execute Generated Code
modules/utils/exec_llm_code.py
Dataset Construction
- Agentic Sketch
dataset_construction/agentic_sketch.py - Code Conversion
dataset_construction/kicad_read_sch.py - JSONL Dataset
dataset_construction/make_dataset.py - Dataset Filtering
modules/dataset_filter.py
Model Training
- LoRA Fine-Tuning
training/train.py - Fine-Tuned Model
KiCad and Evaluation
- KiCad Editing API
modules/kicad_sch_interface.py - Editable Schematic
- Model Evaluation
evaluation/eval.py - Schematic Evaluation
modules/sch_evaluation.py - KiCad S-Expression I/O
kiutils/schematic.py
Other components
- Circuit Request
- Reference Designs
Connections 19
- Circuit Request → Generate Schematic: requests
- Generate Schematic → LLM Interface: queries model
- Generate Schematic → Symbol Context: prepares context
- Generate Schematic → Schematic Designer: generates design
- Generate Schematic → Schematic Verifier: checks design
- Generate Schematic → Execute Generated Code: runs code
- Execute Generated Code → KiCad Editing API: edits schematic
- KiCad Editing API → Editable Schematic: writes
- Reference Designs → Agentic Sketch: informs sketch
- Agentic Sketch → Code Conversion: produces schematic
- Code Conversion → JSONL Dataset: creates representation
- JSONL Dataset → Dataset Filtering: provides samples
- JSONL Dataset → LoRA Fine-Tuning: supplies JSONL
- Dataset Filtering → LoRA Fine-Tuning: supplies samples
- LoRA Fine-Tuning → Fine-Tuned Model: produces model
- Fine-Tuned Model → Generate Schematic: supports generation
- Fine-Tuned Model → Model Evaluation: evaluated by
- Editable Schematic → Schematic Evaluation: evaluated by
- Editable Schematic → KiCad S-Expression I/O: parsed by