MOSFET IV Characterization Visualizer
Public Made by Adomby adom
Interactive web-based visualizer for MOSFET IV curves (Id vs Vds). Plot multiple Vgs sweeps, overlay devices, compute saturation boundaries, and extract Vth/Rds(on) — all controllable via API in real-
name: mosfet-visualizer description: Use when the user wants to visualize MOSFET IV curves, plot drain current vs drain-to-source voltage, characterize MOSFETs, overlay IV data from multiple devices, compare MOSFET devices, or analyze MOSFET parameters (Vth, Rds_on, gm). Trigger phrases include "MOSFET IV", "IV curves", "characterize MOSFET", "drain current", "Vds vs Id", "plot MOSFET", "MOSFET visualizer", "saturation boundary", "knee point", "curve tracer data".
MOSFET IV Characterization Visualizer
Interactive web-based visualizer for MOSFET IV curves (Id vs Vds). Supports multiple Vgs sweeps, device overlay, saturation boundary detection, and real-time API control.
Server: http://127.0.0.1:8778
Source: /home/adom/project/mosfet-visualizer/
Quick Start
1. Ensure the server is running
curl -sf --max-time 2 http://127.0.0.1:8778/health > /dev/null 2>&1 || bash /home/adom/project/mosfet-visualizer/start-mosfet-visualizer.sh
2. Open the visualizer
Open a Web View tab pointing to /proxy/8778/viz using the workspace API:
adom-cli hydrogen workspace add-tab \
--panel-id "<PANE_ID>" \
--panel-type "adom/a1b2c3d4-0031-4000-a000-000000000031" \
--display-name "MOSFET IV Visualizer" \
--display-icon "mdi:chart-line" \
--initial-state '{"url":"<PROXY_BASE>/proxy/8778/viz"}'
Replace <PANE_ID> with a leaf pane ID from adom-cli hydrogen workspace get and <PROXY_BASE> from $VSCODE_PROXY_URI.
3. Load data
Sample data:
curl -s -X POST http://127.0.0.1:8778/ \
-H 'Content-Type: application/json' \
-d '{"action":"sample"}'
CSV from curve tracer:
CSV=$(cat /path/to/sweeps.csv)
curl -s -X POST http://127.0.0.1:8778/ \
-H 'Content-Type: application/json' \
-d "{\"action\":\"plot_csv\",\"device\":{\"id\":\"DUT1\",\"name\":\"My MOSFET\"},\"csv\":$(python3 -c \"import json,sys; print(json.dumps(sys.stdin.read()))\" <<< \"$CSV\"),\"filename\":\"sweeps.csv\"}"
JSON sweeps:
{
"action": "plot",
"device": { "id": "IRF540N-s1", "name": "IRF540N", "type": "NMOS" },
"sweeps": [
{ "vgs": 4.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 1, "id": 0.25 }, { "vds": 5, "id": 0.5 }] },
{ "vgs": 6.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 1, "id": 1.8 }, { "vds": 5, "id": 4.5 }] }
]
}
API Actions (POST / with JSON body)
| Action | Description |
|---|---|
plot |
Add device with JSON sweeps |
plot_csv |
Add device from curve tracer CSV |
overlay |
Add multiple devices at once |
sample |
Load built-in demo data |
clear |
Clear all data |
remove |
Remove device by id |
toggle_device |
Toggle device visibility (eyeball) |
toggle_sweep |
Toggle individual sweep visibility |
compute_saturation |
Compute and show saturation boundary line |
clear_saturation |
Hide saturation boundary |
set_config |
Change settings (e.g., {"scale":"log"}) |
analyze |
Extract Vth, Rds(on) from data |
All actions update the frontend in real-time via WebSocket — no page refresh needed.
CSV Format
The CSV must have column triplets per sweep: VN (V), IN (A), RN (Ohm) where N is 1-indexed:
V1 (V),I1 (A),R1 (Ohm),V2 (V),I2 (A),R2 (Ohm),...
38.32,0.0009,...
Optionally pass vgs_values: [0, 1, 2, ...] to label sweeps with their Vgs voltages.
Real-Time Control
The server has a WebSocket at ws://127.0.0.1:8778/ws. Claude can control the visualizer live during demos:
# Toggle a device's visibility
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"toggle_device","id":"DUT1"}'
# Compute saturation boundary
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"compute_saturation"}'
# Switch to log scale
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"set_config","scale":"log"}'
Shot Log
Monitor API activity: curl http://127.0.0.1:8778/shotlog?tail=10
Example AI Prompts
Users can ask Claude:
- "Plot my MOSFET IV curves from this CSV file"
- "Show me the MOSFET visualizer with sample data"
- "Overlay my BSS138 data on top of the IRF540N"
- "Compute the saturation boundary curve"
- "What's the threshold voltage of this MOSFET?"
- "Switch to log scale to see subthreshold behavior"
- "Export the IV data as CSV"
- "Toggle off sweep 3 so I can focus on the others"
- "Compare these two MOSFETs side by side"
Keyboard Shortcuts (in the visualizer)
| Key | Action |
|---|---|
| L | Toggle linear/log scale |
| K | Compute/clear saturation curve |
| S | Load sample data |
| R | Reset zoom |
| Esc | Clear readout |
---
name: mosfet-visualizer
description: Use when the user wants to visualize MOSFET IV curves, plot drain current vs drain-to-source voltage, characterize MOSFETs, overlay IV data from multiple devices, compare MOSFET devices, or analyze MOSFET parameters (Vth, Rds_on, gm). Trigger phrases include "MOSFET IV", "IV curves", "characterize MOSFET", "drain current", "Vds vs Id", "plot MOSFET", "MOSFET visualizer", "saturation boundary", "knee point", "curve tracer data".
---
# MOSFET IV Characterization Visualizer
Interactive web-based visualizer for MOSFET IV curves (Id vs Vds). Supports multiple Vgs sweeps, device overlay, saturation boundary detection, and real-time API control.
**Server:** `http://127.0.0.1:8778`
**Source:** `/home/adom/project/mosfet-visualizer/`
## Quick Start
### 1. Ensure the server is running
```bash
curl -sf --max-time 2 http://127.0.0.1:8778/health > /dev/null 2>&1 || bash /home/adom/project/mosfet-visualizer/start-mosfet-visualizer.sh
```
### 2. Open the visualizer
Open a Web View tab pointing to `/proxy/8778/viz` using the workspace API:
```bash
adom-cli hydrogen workspace add-tab \
--panel-id "<PANE_ID>" \
--panel-type "adom/a1b2c3d4-0031-4000-a000-000000000031" \
--display-name "MOSFET IV Visualizer" \
--display-icon "mdi:chart-line" \
--initial-state '{"url":"<PROXY_BASE>/proxy/8778/viz"}'
```
Replace `<PANE_ID>` with a leaf pane ID from `adom-cli hydrogen workspace get` and `<PROXY_BASE>` from `$VSCODE_PROXY_URI`.
### 3. Load data
**Sample data:**
```bash
curl -s -X POST http://127.0.0.1:8778/ \
-H 'Content-Type: application/json' \
-d '{"action":"sample"}'
```
**CSV from curve tracer:**
```bash
CSV=$(cat /path/to/sweeps.csv)
curl -s -X POST http://127.0.0.1:8778/ \
-H 'Content-Type: application/json' \
-d "{\"action\":\"plot_csv\",\"device\":{\"id\":\"DUT1\",\"name\":\"My MOSFET\"},\"csv\":$(python3 -c \"import json,sys; print(json.dumps(sys.stdin.read()))\" <<< \"$CSV\"),\"filename\":\"sweeps.csv\"}"
```
**JSON sweeps:**
```json
{
"action": "plot",
"device": { "id": "IRF540N-s1", "name": "IRF540N", "type": "NMOS" },
"sweeps": [
{ "vgs": 4.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 1, "id": 0.25 }, { "vds": 5, "id": 0.5 }] },
{ "vgs": 6.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 1, "id": 1.8 }, { "vds": 5, "id": 4.5 }] }
]
}
```
## API Actions (POST / with JSON body)
| Action | Description |
|--------|-------------|
| `plot` | Add device with JSON sweeps |
| `plot_csv` | Add device from curve tracer CSV |
| `overlay` | Add multiple devices at once |
| `sample` | Load built-in demo data |
| `clear` | Clear all data |
| `remove` | Remove device by id |
| `toggle_device` | Toggle device visibility (eyeball) |
| `toggle_sweep` | Toggle individual sweep visibility |
| `compute_saturation` | Compute and show saturation boundary line |
| `clear_saturation` | Hide saturation boundary |
| `set_config` | Change settings (e.g., `{"scale":"log"}`) |
| `analyze` | Extract Vth, Rds(on) from data |
All actions update the frontend in real-time via WebSocket — no page refresh needed.
## CSV Format
The CSV must have column triplets per sweep: `VN (V), IN (A), RN (Ohm)` where N is 1-indexed:
```
V1 (V),I1 (A),R1 (Ohm),V2 (V),I2 (A),R2 (Ohm),...
38.32,0.0009,...
```
Optionally pass `vgs_values: [0, 1, 2, ...]` to label sweeps with their Vgs voltages.
## Real-Time Control
The server has a WebSocket at `ws://127.0.0.1:8778/ws`. Claude can control the visualizer live during demos:
```bash
# Toggle a device's visibility
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"toggle_device","id":"DUT1"}'
# Compute saturation boundary
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"compute_saturation"}'
# Switch to log scale
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
-d '{"action":"set_config","scale":"log"}'
```
## Shot Log
Monitor API activity: `curl http://127.0.0.1:8778/shotlog?tail=10`
## Example AI Prompts
Users can ask Claude:
- "Plot my MOSFET IV curves from this CSV file"
- "Show me the MOSFET visualizer with sample data"
- "Overlay my BSS138 data on top of the IRF540N"
- "Compute the saturation boundary curve"
- "What's the threshold voltage of this MOSFET?"
- "Switch to log scale to see subthreshold behavior"
- "Export the IV data as CSV"
- "Toggle off sweep 3 so I can focus on the others"
- "Compare these two MOSFETs side by side"
## Keyboard Shortcuts (in the visualizer)
| Key | Action |
|-----|--------|
| L | Toggle linear/log scale |
| K | Compute/clear saturation curve |
| S | Load sample data |
| R | Reset zoom |
| Esc | Clear readout |