Skip to content

GUI Sandbox

robin-cachy edited this page Jun 10, 2026 · 2 revisions

GUI - Sandbox

The Sandbox tab lets you build arbitrary parametric test sequences without writing code. Tests are defined as a pipeline of loop columns followed by an actions column.


Concepts

┌──────────────┬──────────────┬──────────────────────────────┐
│  Loop 1      │  Loop 2      │  Actions                     │
│  (outermost) │  (innermost) │  (run at every combination)  │
│              │              │                              │
│  Sweep V_CE  │  Sweep V_BE  │  [Wait 50 ms]                │
│  1 → 5 V     │  0 → 0.8 V  │  [Measure I_C → "I_C"]       │
│  step 2 V    │  step 0.01 V │                              │
└──────────────┴──────────────┴──────────────────────────────┘
  • Loop columns (left = outermost, right = innermost) — each sweeps one instrument parameter. Total rows = product of all loop sizes.
  • Actions run once per combination of loop values, top-to-bottom.

Sandbox tab


Loop block fields

Field Description
Variable Short name referenced in Set actions (e.g. v_ce)
Label Column header in CSV output
Instrument Instrument to control (from the active workbench)
Channel Instrument channel (1–4)
Parameter Voltage (CV mode) or Current (CC) (constant-current mode)
Start / Stop / Step Sweep range — step direction inferred automatically
Settle Wait time after setting each new value before running actions
I Limit / V Compliance Current limit for voltage sweeps; compliance voltage for CC sweeps

Action types

Set

Writes a value to an instrument at each loop step. The value field accepts a literal number (0.001) or a loop variable reference ({v_ce}).

Measure

Reads one value from an instrument and records it as a named column.

Parameter What is measured
Voltage (DC) DC voltage
Current DC current
Voltage (AC) AC RMS voltage
Resistance 2-wire resistance
Resistance (4W) 4-wire (Kelvin) resistance

Wait

Fixed delay in seconds.

Wait for State

Polls a measurement repeatedly until a condition is met. Useful for thermal soak, settling, or conditioning before a sweep begins.

Field Description
Instrument / Channel / Parameter What to read on each poll
Condition , , or ± (within tolerance)
Target The value to wait for
Tolerance Used with ± only
Poll every Seconds between readings
Timeout Give up after N seconds (0 = wait forever)

Save and load

Tests are saved as JSON (💾 Save) and reloaded with 📂 Load. The format is intentionally simple and human-readable:

{
  "name": "IV at temperature",
  "loops": [
    { "var": "v_ce", "label": "V_CE", "instrument": "USB0::...", "ch": 1,
      "param": "voltage", "start": 0, "stop": 5, "step": 0.5,
      "settle": 0.1, "i_limit": 0.5 }
  ],
  "actions": [
    { "type": "wait_for", "instrument": "USB0::...", "ch": 1, "param": "voltage",
      "condition": ">=", "target": 25.0, "interval": 10, "timeout": 600 },
    { "type": "measure", "instrument": "USB0::...", "ch": 1,
      "param": "current", "label": "I_C", "samples": 3, "settle": 0.05 }
  ]
}

Cross-compatibility

All instrument commands go through core/eewBackbone.json. A Sandbox test built against a Keysight PSU will run unchanged on any PSU family that defines the same SCPI operations. See eewBackbone for details.

Clone this wiki locally