Alchitry Pt V2 with OpenIE / WCA commit-gate

Educational guide for builders: detect the board, build a blink and the Wise Computer Automation (WCA) commit-gate demo, flash it, and read the LEDs. Matches Stage C evidence captured 2026-09-30 EDT (closed-loop pendulum with Safe PH and control barrier function).

This page is a how-to companion to /living/fpga-sim/ (Stage B browser simulation) and stage-c/board-evidence.md. It does not report board joules.

What Stage C measured. Stage C detected an Alchitry Pt V2, programmed a closed-loop WCA commit-gate bitstream (on-fabric pendulum plant + Safe Q16.16 port-Hamiltonian (PH) residual + Ames-style energy-set control barrier function (CBF)) over JTAG in SRAM mode (DONE and EOS asserted), and captured a UART transcript that matches the software seed-1 allow/refuse sequence (1 commit / 15 refuses / step 6). On that seed-1 closed-loop episode the CBF conjunct agrees with look-up table (LUT) allow and Safe PH (composite identical to LUT and Safe PH alone). The Alchitry Pt V2 has no onboard joule meter. No power meter was attached. Do not invent joules. Vivado or post-place-and-route power estimates are not device-under-test (DUT) readings.
board

What the board is

vendor catalog Pt V2

The Alchitry Pt V2 is a field-programmable gate array (FPGA) development board sold by SparkFun Electronics. Vendor documentation lists a Xilinx (AMD) Artix-7 part XC7A100T-2FGG84I, with catalog figures including 101,440 logic cells, 240 DSP48E1 slices, 4,860 Kb block RAM, 256 MB DDR3L, eight general-purpose LEDs, a 100 MHz oscillator, and an FT2232HQ bridge for USB JTAG and UART. Cite the vendor page for those catalog numbers; they are not Open Interface Engineering (OpenIE) bench measurements.

Alchitry Pt V2 product photo, SparkFun SKU DEV-27873 feature view

Alchitry Pt V2 (SparkFun SKU DEV-27873). Product photo © SparkFun Electronics. Educational non-commercial display; see images/ATTRIBUTION.md.

need

What you need

detect

Detect the board

measured detect log

With the board attached, run:

ofpga detect

Expected UART shape from the closed-loop Stage C capture (2026-09-30 ~03:51 EDT):

1 device(s) found:

  FPGA Boards:
    Alchitry Pt V2 (Artix-7)
      USB 0403:6010 - Jtag

Matching product string via IOKit on macOS: Alchitry Pt V2. If nothing is listed, check the cable, power, and that no other process holds the FTDI interface.

build

Build blink and the commit-gate demo

From the openie-fpga repository root:

# Sanity blink (LED0 toggles from a free-running counter)
ofpga build blink_alchitry_pt_v2.fpga -t alchitry-pt-v2

# Stage C commit-gate LED demo
ofpga build wca_commit_gate_pt_v2.fpga -t alchitry-pt-v2

Target alias alchitry-pt-v2 selects the native XC7 emitter for the Artix-7 on this board. Successful builds write bitstreams under build/ (for example build/wca_commit_gate_pt_v2.bit).

Design path

flash

Flash steps (SRAM vs configuration flash)

  1. Confirm detect succeeds.
  2. Program the bitstream into FPGA configuration SRAM over JTAG (default Stage C path):
    ofpga flash build/wca_commit_gate_pt_v2.bit
    # or pin the board explicitly:
    ofpga flash build/wca_commit_gate_pt_v2.bit -b alchitry-pt-v2
  3. Read the tool status. Closed-loop Stage C recorded Mode Sram, size 3825913 bytes, IDCODE 0x13631093, Status DONE=1 INIT=1, STAT with CRC_ERR=0 EOS=1 DONE=1.

SRAM vs flash

SRAM configuration loads the fabric for the current power cycle. A reset or power loss clears it. That is what Stage C used. The Pt V2 also carries vendor-listed configuration flash (32 Mbit on the SparkFun page). Persisting a bitstream into that flash is a separate workflow and was not part of the Stage C evidence log. Prefer SRAM while iterating demos.

Excerpt from the Stage C flash log:

Board: Alchitry Pt V2 (Artix-7)
USB:   bus 0 addr 14 (0403:6010)
Mode:  Sram
Size:  104140 bytes
IDCODE: 0x13631093
Status: 0x35 (DONE=1 INIT=1)
STAT: 0x501079FC (CRC_ERR=0 EOS=1 DONE=1 STARTUP_STATE=4 BUS_WIDTH=x1)
Programmed 104140 bytes via JTAG (SRAM) - DONE + EOS asserted
leds

How to read the LEDs

Stage C design

The demo drives active-high LEDs from a free-running counter and two toy predicates. commit is the conjunction of look-up table (LUT) allow, Safe port-Hamiltonian (PH) energy OK, and control barrier function (CBF) OK: commit = lut_allow AND energy_ok AND cbf_ok. A control barrier function is a set-invariance certificate: with barrier h = E_max - V on the same pendulum energy V, the fabric refuses when h < 0 or when the Lie check ω·u ≤ κ·h fails (Safe Q16.16 residual twin of the Ames energy-set CBF).

Alchitry Pt V2 LED legend for commit, refuse, lut_allow, energy_ok, and heartbeat

LED package pins for Pt V2 (from openie-fpga alchitry_pins.rs): LED0=P19, LED1=P20, LED2=T21, LED3=R19, LED7=W20, CLOCK=W19.

LEDSignalMeaning in this demo
led0commitlut_allow AND energy_ok AND cbf_ok
led1refuseNOT commit
led2lut_allowtoy: allow when counter bit2 is clear
led3energy_okSafe Q16.16 PH residual pass (not a joule meter)
led4-6(unused)not driven by this design
led7heartbeatcounter bit23; proves the fabric is live
Block diagram: counter bits to lut_allow, energy_ok, AND to commit and refuse LEDs

Compose path inside wca_commit_gate_pt_v2.fpga. energy_ok here is a free-running bit mask, not board-measured energy.

uart

UART seed-1 readback

measured transcript

After flashing wca_commit_gate_uart_pt_v2.bit (synthesizable TLMM+LUT+PH+CBF commit gate; not a decision ROM), open the FT2232H channel B serial port (on macOS typically /dev/cu.usbserial-0000001) at 115200 baud 8N1. One episode prints a banner WCA1 C01 R15 S06 and sixteen lines Sii Lx Ex Cx. Seed-1 agreement means sole commit at step 6 (S06 L1 E1 C1), with lut_allow=1 on every step and energy_ok only there.

# example capture
python3 -c "import serial,time; s=serial.Serial('/dev/cu.usbserial-0000001',115200,timeout=0.2); time.sleep(0.2); print(s.read(8000).decode('ascii','replace')); s.close()"
pipeline

Relationship to Stage A and Stage B

Pipeline diagram Stage A Rust, Stage B WASM WebGPU, Stage C Alchitry programmed unmetered

Measurement classes. Stage B lives at /living/fpga-sim/. Stage C evidence: board-evidence.md.

source

Source, bitstream SHA, and paths

stage-c evidence

Bitstream identity (Stage C)

file
stage-c/wca_commit_gate_uart_pt_v2.bit (3825913 bytes)
SHA-256
5308f5c4d83bc484c6a6f6b5f6228941e68e880d34be4893dca60b1f6bd5343c
IDCODE
0x13631093 (XC7A100T class, as reported by flash)
evidence
board-evidence.md

Key .fpga design (also on disk in openie-fpga/):

# WCA commit-gate LED demo for Alchitry Pt V2 (Artix-7 XC7A100T)
# LED map (active-high on Pt V2):
#   led0 = commit   (lut_allow AND energy_ok)
#   led1 = refuse   (NOT commit)
#   led2 = lut_allow (toy: allow when counter bit2 == 0)
#   led3 = energy_ok (toy: allow when counter bit20 == 1)
#   led7 = heartbeat (counter bit23)
#
# Build:  ofpga build wca_commit_gate_pt_v2.fpga -t alchitry-pt-v2
# Flash:  ofpga flash build/wca_commit_gate_pt_v2.bit -b alchitry-pt-v2

new wca_commit_gate_pt_v2
clock 100
input clk 1

const one 1 24
const zero 0 24
add next_count counter one
reg counter next_count

const energy_mask 1048576 24
and energy_bits counter energy_mask
eq energy_z energy_bits zero
not energy_ok energy_z

const lut_mask 4 24
and lut_bits counter lut_mask
eq lut_allow lut_bits zero

and commit lut_allow energy_ok
not refuse commit

const hb_mask 8388608 24
and heartbeat counter hb_mask

output led0 commit
output led1 refuse
output led2 lut_allow
output led3 energy_ok
output led7 heartbeat
resources

Official online resources

vendor docs Pt V2

Catalog pages, schematics, pinouts, and software docs below are published by SparkFun Electronics, Alchitry LLC, and AMD (Xilinx Artix-7). Open Interface Engineering (OpenIE) mirrors a few product photos for this educational guide and does not replace the vendor sites. Catalog figures remain vendor figures, not OpenIE bench measurements.

Product and hardware docs

Pin map and constraints

Alchitry V2 boards use three Hirose DF40 connectors per side: one 50-pin Control header and two 80-pin input/output (IO) banks labeled Bank A (closer to Control) and Bank B. The Pt additionally has connectors on the bottom side. Top and bottom pin names for Banks A and B are identical in software and are distinguished with the SIDE(TOP) or SIDE(BOTTOM) attribute in Alchitry Constraint Format (ACF) files. Full cell-by-cell tables (including Multi-Gigabit Transceiver, or MGT, pairs on the bottom) live on the Alchitry pinouts page. Do not invent pin numbers from memory.

RegionWhat the vendor docs describe
Top Banks A and BGeneral-purpose and differential IO; includes multi-voltage pairs and clock-capable inputs. See the Pt Top Pinout Table.
Bottom Banks A and BSecond independent stack. Bottom Bank B includes MGT clock, transmit, and receive pairs. See the Pt Bottom Pinout Table.
Control headerPower, reset, done, program, Joint Test Action Group (JTAG) related pins, voltage select, and analog references. LED breakouts differ from Au and Cu; the Pt Control table maps IO pairs where Au and Cu list LEDs.
On-board LEDsEight general-purpose LEDs. OpenIE Stage C package pins (from alchitry_pins.rs): LED0=P19, LED1=P20, LED2=T21, LED3=R19, LED7=W20, CLOCK=W19.
Alchitry V2 bank and connector orientation diagram labeled Bank A, Bank B, and Control

V2 bank orientation diagram from Alchitry docs CDN (AU_v2_Banks_Labeled.svg), used on the pinouts tutorial. Attribution: Alchitry LLC. Educational mirror; see ATTRIBUTION.md.

Alchitry Labs and Lucid

This OpenIE guide builds with ofpga from the openie-fpga tree, not Alchitry Labs. Labs and Lucid remain the vendor path for Lucid projects and for generating ACF constraints.

Product photos (SparkFun)

Alchitry Pt V2 feature product photo
Feature
Alchitry Pt V2 front product photo
Front
Alchitry Pt V2 back product photo
Back (low-profile side)
Alchitry Pt V2 scale product photo
Scale

Photos © SparkFun Electronics, SKU DEV-27873, from sparkfun.com/alchitry-pt-v2.html. SparkFun has stated that product images are generally under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (CC BY-NC-SA 3.0). This page is educational and non-commercial. Full notes: images/ATTRIBUTION.md. Commercial reuse requires SparkFun permission.

energy

Energy metering (education)

Pt V2 unmeteredKV260 Metered

The Alchitry Pt V2 does not include an onboard joule or watt-hour meter. Stage C UART and LED results prove decision agreement (allow / refuse / commit), not board energy. The Wise Computer Automation (WCA) composite commit = lut_allow AND SafePH AND CBF on Pt V2 remains Unmetered for joules. Analytical OpCounter joules from Stages A and B remain model numbers. Do not invent readings.

Definitions

  • W (watt) — SI power from the KV260 Texas Instruments INA260 (ina260_u14, power1_input).
  • pJ (picojoule) — 10−12 joule; nJ = 10−9 joule.
  • op / gate-cycle — one enabled clock of the freerun bank under test (seed-cycle or richer gate-cycle), counted on-device via AXI op_count.
  • SafePH — Safe Q16.16 Port-Hamiltonian energy certificate (wca_ph_energy).
  • CBF — control barrier function fabric conjunct (wca_cbf_energy).

KV260 — rung 1 seed vs baseline (Metered watts)

A = baseline.bit.bin, B = wca_seed_freerun.bit.bin (SHA256 bd37b1b3…86bd). N=4; mean (B−A1) = −0.8212 W (SE 0.0024 W). No pJ (no ops/time). Log: logs/aba-baseline-vs-wca_seed_freerun.dat.

KV260 — rung 2 seed AXI halt vs freerun (Metered pJ/op)

wca_seed_axi.bit.bin (SHA256 d5018ff8…1ad5); PL0 ~100 MHz; A=run=0, B=run=1. mean (B−A1) = +0.0098 W (SE 0.0031 W); ops/s ≈ 1.000×108; 98.0±30.8 pJ/op (seed-cycle). Log: logs/aba-halt-vs-freerun-axi.dat.

KV260 — rung 3 richer LUT∧SafePH∧CBF gate (Metered pJ/op)

wca_gate_axi.bit.bin (SHA256 ff45e23f855c19eda1ec087271306b26d95fb07f480bd2d93d6ecd58a08d5bb2; 6370 CLB LUTs, 128 DSPs; MAGIC 0x0CA5EED3). Eight parallel lanes of Stage C wca_allow_lut ∧ Safe Q16.16 wca_ph_energy ∧ wca_cbf_energy; commit = lut_allow ∧ energy_ok ∧ cbf_ok. Vivado timing closed at 25 MHz (WNS +15.5 ns); runtime PL0 forced to ~25 MHz via CRL to match closure. A=run=0, B=run=1; N=4; settle 15 s; sample 25 s @ ~4 Hz. mean A1 = 3.0873 W, mean B = 3.3730 W, mean A2 = 3.0919 W; mean (B−A1) = +0.2857 W (SE 0.0032 W). On-device ops/s = 2.4999488×107. pJ/op = ΔW / ops/s × 1012 → mean 11428 pJ/op (SE 129 pJ/op) ≈ 11.43 nJ/gate-cycle. Log: logs/aba-halt-vs-gate-axi.dat. Harness: openie-fpga/artifacts/stage-c/wca-kv260-meter/. Not a closed-loop Pt V2 UART plant+TLMM joule cost.

limits

Limits

See also