Skip to content

DAC waveforms default to the 3.3 V output, not 5 V - #39

Merged
wardviaene merged 3 commits into
mainfrom
dac-default-3v3
Oct 15, 2026
Merged

wardviaene merged 3 commits into
mainfrom
dac-default-3v3

Conversation

@wardviaene

@wardviaene wardviaene commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Why

generate and replay (SDK, MCP, OpenHTF) defaulted to dac_path="5v", so one call that left the output out could drive 5 V into a 3.3 V pin. The web app got the same fix in embeddedci-server d2eca47.

What

  • generate / replay: dac_path=None means 3v3 (DEFAULT_DAC_PATH) when the call routes the output.
  • With route=False nothing is switched and the path only scales the volts, so the default is the output this connection last routed (analog_path("cal1") = 5v, cal2 = 12v, dac_output, a routed waveform), else 5v as before. Existing cal1 loopback calls keep their scaling.
  • replay_waveform and Waveforms.preview fall back to 3v3; OpenHTF dac_replay_phase now uses the waveform's own path.
  • MCP: tool descriptions and instructions tell agents to pick the output the DUT pin tolerates; generate reports the output it used.
  • MCP stays compatible with the minimum SDK (2.12.0): it passes 3v3 explicitly when routing and leaves dac_path out with route=false (tested against 2.12.0 from PyPI).
  • The 16-bit generate form (firmware 3.9.1+, merged in generate(): calibrated 16-bit form on firmware 3.9.1+ #38) records the output the pod routed, too.
  • README, CHANGELOGs, API and tool surface snapshots updated.
  • Hardware tests that meant 5 V now say so: test_route_false_keeps_a_loopback_and_route_true_reroutes and the OpenHTF analog_loopback example's second phase.

Tests

Host only, no hardware: embeddedci 680 passed, embeddedci-mcp 160, embeddedci-openhtf 74, scripts 12. New tests/test_dac_path_default.py.

Not HW-run. Before a release, run the analog e2e (make e2e) on the bench pod with the lock.

🤖 Generated with Claude Code

wardviaene and others added 3 commits October 15, 2026 14:51
generate and replay (SDK, MCP tools, OpenHTF helpers) used dac_path="5v"
when the caller left the output out, so one call could put 5 V on a 3.3 V
DUT pin. They now default to 3v3 (DEFAULT_DAC_PATH). With route=False
nothing is switched and the path only scales the volts, so the default
follows the output this connection last routed (cal1 = 5v, cal2 = 12v),
else 5v as before, which keeps the cal1 loopbacks correct.
replay_waveform and Waveforms.preview fall back to 3v3; dac_replay_phase
now uses the waveform's own path. MCP generate reports the output used,
and the instructions tell agents to pick the output the pin tolerates.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MCP generate's offset description, the generate() and OpenHTF docstrings,
results.py, the READMEs and the loopback example. Internal names
(decode.centre_of, test names) are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene
wardviaene merged commit 293478e into main Oct 15, 2026
20 checks passed
wardviaene added a commit that referenced this pull request Oct 16, 2026
…low 3% (#43)

* embeddedci 2.14.0, embeddedci-openhtf 2.4.0; host-clock rate tests allow 3%

- embeddedci 2.14.0: Capabilities.scope False on the digital board (#42), DAC waveforms
  default to the 3.3 V output (#39).
- embeddedci-openhtf 2.4.0: its signal phases default to dac_path 3v3 (#39).
- e2e: the LA/ADC host-clock rate tests allow 3% instead of 0.5%. Over Wi-Fi the fit
  scattered to 0.983x/1.009x on a pod whose clock is fine; a wrong rate is off by 5-25%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Patch versions: embeddedci 2.13.1, embeddedci-openhtf 2.3.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@wardviaene wardviaene mentioned this pull request Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant