Skip to content

Releases: mcranny/protocol-emulator-asic

V2 — programmable protocol emulator

Choose a tag to compare

@mcranny mcranny released this 18 Oct 22:37
ebd05cd

V2 delivers a reprogrammable protocol emulator ASIC with two independent timing engines, SPI host control, and triggered capture. This is the V2 milestone, with further verification planned before the final competition submission. Python package and runtime versions remain 2.0.0rc1.

Design and tools

  • Two 25 MHz engines, each with 64 words of 24-bit program memory and 16-entry TX/RX queues.
  • UART TX/RX examples at 115200 baud and 1 Mbaud; SPI modes 0–3 in controller and target roles; I²C at 100/400 kHz in controller and target roles.
  • Pin ownership, open-drain configuration, input filtering and 32 triggered capture records.
  • V2 defaults for ASIC metadata and build/test entrypoints, with explicit V1 regression targets.
  • Sphinx architecture, ISA, assembler/toolchain, example-program and verification documentation.

Physical settings remain 6×4 tiles, 40 ns clock, 1.5 ns maximum transition and 0.25 ns uncertainty. The 8×4 template remains deferred.

Validation

The validated source passed 699 pytest cases, all V1/V2 RTL suites, both tops' Verilator lint and Yosys synthesis, five induction proofs, and six mutation checks. Strict Sphinx HTML and all 14 executable examples passed. The selected netlist passed the current 14-scenario gate-level suite and four-state startup/reset/state-loss audit.

The selected local TT checkpoint recovery passed all required physical checks, nine stock prechecks, mapping and full-geometry checks. Minimum extracted setup slack is 18.456291 ns and minimum hold slack is 0.054473 ns across the three corners. Gate-level simulation uses functional cell models; extracted timing is checked separately.

Release provenance

Component Revision
v2 tag / merged PR #15 ebd05cd434bdb1d9d238d824f7ea4321934b2c25
Validated release-selection documentation e4565e7349f2dd102d64998b3d9376d32668b8ba
Software packages and current netlist tests 881495cb4d5a6270f5dd7625b1787d83f3059827
Selected physical layout 447b3dfd0986d473c71afa28efafb3a5cff48da7

The merged tag's file tree exactly matches the validated release-selection revision. The physical and software source revisions produce identical Yosys-elaborated designs after removing only source-location annotations, and their prepared V2 configurations match.

The owner selected the completed local TT recovery after the hosted job reached its six-hour limit. It used the pinned stock CMOS5L flow scripts, a verified checkpoint and recorded execution/debug settings, with no custom routing-script substitution or checkpoint ECO. The original timeout and failed parent route remain in the evidence. This release records a local checkpoint recovery, not a completed uninterrupted hosted route or a mixed-source common-source acceptance-checker pass.

Downloads and operating limits

Assets include tagged source, original software/physical source archives, Python wheel and sdist, committed HTML documentation, executable examples, the selected GDS/netlist, verification records, release-manifest.json and SHA256SUMS. Historical evidence records retain their original source identities and candidate-status fields; the release manifest records this milestone's components.

The CLI remains V1; V2 assembly, disassembly, model execution and loading use the Python APIs. Program and capture storage are volatile: after state loss, reset, reconfigure, reload programs/queues and restart. The 1 Mbaud UART duplex examples are bounded/preloaded bursts; the 1 MHz SPI host cannot sustain arbitrary continuous traffic at that rate. No silicon/FPGA demonstration or competition acceptance is claimed.

Track 2 covers expanded RTL properties, compositional-assumption review, broader mutations and a Lean ISA model.

V2 local acceptance evidence — af573c5

Choose a tag to compare

Full evidence for V2 local acceptance of source af573c5fef6f96b4c2fbd400e6565b3b41f54aef, completed October 8, 2026.

The successful-run archive preserves the original source snapshot, manifests, reports, logs, netlist, layout and full-geometry rendering, plus successful final-stage outputs. It contains 1,085 files (about 392 MiB compressed); every file was hash-checked against its retained original. Failed-run directories are excluded. Original machine paths and container names remain in hash-bound provenance; checking the accepted bundle does not require those locations.

Download the archive and SHA256SUMS, verify using shasum -a 256 -c SHA256SUMS, extract it, and run python3 accepted/source/tools/check_v2.py accepted. This verifies retained acceptance evidence; it does not rerun the physical flow.

Results: 560 Python tests, existing RTL suites, five formal proofs, six mutations, 14 gate-level suites and nine precheck checks. Required physical/electrical violations are zero, worst setup slack is +18.370074 ns and worst hold slack is +0.052527 ns. The fixed 40 ns / 1.5 ns / 0.25 ns constraints and full storage capacities remain unchanged.

The release tag points to the restructured development source containing the evidence index. It does not relabel the archive's original source or transfer physical acceptance to the rewritten history. development-validation.json records fresh functional validation of the four development branch tips separately.

This is an evidence prerelease, not a shuttle submission or declaration that verification is finished. V1 remains the latest product release. The v2-current Draft PR remains open for stronger tests and formal verification.

V1.0.0 — programmable protocol emulator

Choose a tag to compare

@mcranny mcranny released this 24 Sep 06:11
00b048a

V1 provides a single programmable timing engine with 64 x 24-bit instruction memory, a four-byte TX FIFO, SPI programming/control, Python tooling, and firmware-driven UART 8N1 transmission at 1 Mbaud and approximately 115200 baud. The implementation targets Tiny Tapeout IHP CMOS5L, 6x4 tiles, and a 25 MHz system clock.

Source: 00b048acaafb5baf27da79127686921e345929fa
Final acceptance run 35951164651 · Electrical closure PR #9

Validation

The final merged revision passed functional, GDS, precheck, gate-level, and acceptance jobs. Downloaded artifacts independently passed the repository acceptance checker, with source hashes, submitted netlist, and pinned primitive models verified against the manifests.

  • 205 Python tests, three core differential suites, three pin-level RTL suites, RTL lint, and formal induction passed.
  • All three routed-netlist gate-level suites passed, including UART at both rates.
  • All nine Tiny Tapeout prechecks passed, including KLayout CMOS5L DRC. Magic DRC and LVS passed.
  • Zero slew, fanout, capacitance, routing DRC, antenna, and unannotated-signal violations at every required corner. The transition constraint remains 1.5 ns.
  • Worst routed setup/hold slack: +21.053364 / +0.106182 ns.
  • Standard-cell area: 244113 um2; utilization: 27.0510%.

The flow uses LibreLane 3.1.0.dev3 and IHP-Open-PDK revision 2bbec755dc67ca3db0261c3d6163e15735d66710. Configuration and provenance records are included in the evidence bundle.

Assets

  • protocol-emulator-v1.0.0-source.tar.gz: source snapshot at the accepted revision.
  • protocol-emulator-v1.0.0-submission.tar.gz: GDS, OAS, LEF, routed netlist, SPEF, resolved configuration, statistics, and source/PDK identities.
  • protocol-emulator-v1.0.0-evidence.tar.gz: all final-run artifacts, detailed physical reports, test results, firmware and waveform evidence, manifests, independent verification, and per-file checksums.
  • protocol-emulator-v1.0.0-physical-summary.json: machine-readable acceptance summary.
  • SHA256SUMS: checksums for the four release assets above.

Limits

This is a verified design release; no FPGA or silicon operation has been demonstrated. Gate-level tests are functional routed-netlist simulation; extracted STA establishes timing separately. Positive timing slack is not an Fmax measurement.

The host SPI contract is limited to 1 MHz. Four queued bytes can transmit consecutively at 1 Mbaud, but the current request/response refill protocol does not support indefinite 1-Mbaud streaming. UART receive, additional engines, on-chip capture/replay, and emulated SPI/I2C firmware remain post-V1 work.