
Solartron 7075 interface konnect
cHemingway/llm_circuitgen_tests
Tests of various "circuit as code" tools

Tests of various "circuit as code" tools
Solartron 7075 interface unplaced is an open-source printed circuit board by cHemingway, from the cHemingway/llm_circuitgen_tests repository on GitHub. It is a 2-layer board with 94 parts on 136 nets.
It is built around the RP2354A, B0509S-1WR3 and 74HCT165D, with the TLP2361(E, 74HC595 and 78L05 among its other parts. Its parts include 37 capacitors, 18 resistors, 16 ICs, 4 diodes and 3 connectors. It belongs with the interfaces and adapters boards and the RP2350 boards of this library.
Solartron 7075 interface designed with Konnect 0.13.0, an MCP server that drives KiCad 10.0.6 (live IPC to the open editors, with file-level tools for libraries and the schematic).
The shift-register and resistor-array pins were re-assigned to untangle the meter-side routing. The '165 inputs (D0–D7) are equivalent, as are the '595 outputs (QA–QH) and the elements of the 100k arrays. The swaps were therefore made both within each part and between identical parts.
| Meter side | Before | After |
|---|---|---|
| 36 '165 input nets | 1,343 mm, 53 vias | 781 mm, 7 vias |
| 13 '595 output nets | 157 mm, 7 vias | 118 mm, 1 via |
| 14 other nets (LOAD/SCK/MOSI/MISO, chain, +3V3_ISO) | 874 mm, 51 vias | 793 mm, 47 vias |
| All meter-side signals | 2,374 mm, 111 vias | 1,692 mm, 55 vias |
| GND_ISO stitching | 43 vias, 154 mm | 34 vias, 81 mm |
Whole board: 1,660 → 1,275 track segments and 201 → 136 vias.
fab/routing_before_after.png compares the meter-side routing before and after.
The meter-side parts were moved, and the pins re-assigned again to suit. This includes the swaps between parts offered in reply to review 2. The 36 DVM input tracks were laid out by a script, in one repeated pattern, instead of by the autorouter.
| Meter side | Review 1 | Review 3 |
|---|---|---|
| 36 '165 input nets | 781 mm, 7 vias | 655 mm, 1 via |
| 13 '595 output nets | 118 mm, 1 via | 96 mm, 0 vias |
| 14 other nets (LOAD/SCK/MOSI/MISO, chain, +3V3_ISO) | 793 mm, 47 vias | 807 mm, 35 vias |
| All meter-side signals | 1,692 mm, 55 vias | 1,558 mm, 36 vias |
| GND_ISO stitching | 34 vias, 81 mm | 27 vias, 65 mm |
Whole board: 1,275 → 958 track segments and 136 → 110 vias. DRC lost
Review 1's three starved thermals on the meter side (C24, C30 and C31). It
gained eight silkscreen overlap warnings, where the moved caps' reference
text overlaps the '165 outlines and C37's overlaps U19. Konnect has no tool
to move reference text. The positions file was regenerated; the BOM is
unchanged. fab/routing_review3.png compares the meter-side routing after
Review 1 and now.
| Path | Contents |
|---|---|
solartron_7075_interface_konnect.kicad_sch / .kicad_pcb / .kicad_pro | KiCad project |
solartron.kicad_sym, solartron.pretty/ | Project symbols and footprints, including rect-pad copies of the stock footprints |
fab/ | Gerbers and drill files, JLCPCB BOM and positions, schematic.pdf, pcb_layers.pdf, DRC report, render, routing comparisons for reviews 1 and 3 |
CONVERSATION.md | Session log and statistics |
stats.py, calls.csv | Script for the statistics, and every API call with its category |
REVIEW_CONVERSATION.md | Review log and statistics |
review_stats.py, review_calls.csv | Script for the review statistics and log, and every review API call with its category |
stats.py reads the session transcript,
~/.claude/projects/-Users-chris-repos-llm-circuitgen-tests/47e5c69c-808f-4cd7-8f0d-34a4d53529bd.jsonl.
It takes everything before the export request (2026-10-15 18:44:30 UTC),
prints the tables in CONVERSATION.md and writes calls.csv. The export
itself ran in a resumed session, 3539381d-…, whose file starts with a copy
of the original's later records. The original file is the complete record.
The review that followed ran in the same resumed session. review_stats.py
reads that session's transcript from the first review comment to the review
export request. It prints the review tables, writes review_calls.csv and,
with --write-md, writes REVIEW_CONVERSATION.md. The resumed session
writes no cost-state records, so the review figures come from the
transcript's per-response usage and tool timings, priced at the published
Opus 5.5 prices. REVIEW_CONVERSATION.md explains how each figure was
measured.
Totals (tokens, API time, tool time and cost) come from the last
cost-state record before the export request. API calls are the 520
distinct assistant message ids; the usage-limit error message is not a
call.
Active time is measured from each typed message until the reply finished, giving four stretches.
Categories are set by call number in stats.py. Judgement calls:
Prices. There are only two distinct cost-state snapshots, too few for a least-squares fit, so the published prices are used. They come from https://platform.claude.com/docs/en/about-claude/pricing, read on 2026-10-15.
Every cache write the transcript logs is a 1-hour write, and the 5-minute and 1-hour writes are priced separately per call. Checked against the snapshots:
| Snapshot | Model | Reported | Published prices |
|---|---|---|---|
| 2026-10-14 21:05 | Opus 5.5 | $35.5377 | $35.5377 |
| 2026-10-14 21:05 | Haiku 5.5 | $0.0777 | $0.0777 |
| 2026-10-15 12:31 | Opus 5.5 | $112.1028 | $112.1034 |
| 2026-10-15 12:31 | Haiku 5.5 | $0.0777 | $0.0777 |
The $0.0006 gap in the second Opus snapshot is in usage the transcript doesn't log. Pricing that usage's cache writes as 1-hour writes slightly overstates it, which implies about 200 tokens of 5-minute writes.
Not attributable is the counters minus the logged calls:
The first snapshot matches the logged calls exactly, so all of the unlogged Opus usage comes after it. That is more than one compaction summary of a 969k-token context would use. The counters also show 52 s of API time on retried requests, which the transcript doesn't log either. These retries are the likely remainder.
Thinking tokens are part of the output tokens, as in the API's usage fields.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 100n | Capacitor_SMD:C_0603_1608Metric | C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37 |
| 12 | 100n | Capacitor_SMD:C_0402_1005Metric | C5, C6, C7, C8, C9, C10, C11, C12, C13, C17, C18, C19 |
| 9 | 10k | Resistor_SMD:R_Array_Convex_4x0603 | RN1, RN2, RN3, RN4, RN5, RN6, RN7, RN8, RN9 |
| 5 | 74HCT165 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U10, U11, U12, U13, U14 |
| 5 | TLP2361 | Package_SO:Toshiba_SOIC-5-6_4.4x3.6mm_P1.27mm | U5, U6, U7, U8, U9 |
| 4 | 390 | Resistor_SMD:R_0603_1608Metric | R14, R15, R16, R17 |
| 3 | 10u | Capacitor_SMD:C_0603_1608Metric | C2, C4, C25 |
| 3 | 1k | Resistor_SMD:R_0402_1005Metric | R4, R8, R9 |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric | R2, R11, R13 |
| 3 | 4.7u | Capacitor_SMD:C_0402_1005Metric | C14, C15, C16 |
| 3 | green | LED_SMD:LED_0603_1608Metric | D1, D2, D3 |
| 2 | 15p | Capacitor_SMD:C_0402_1005Metric | C20, C21 |
| 2 | 1u | Capacitor_SMD:C_0603_1608Metric | C3, C24 |
| 2 | 27 | Resistor_SMD:R_0402_1005Metric | R5, R6 |
| 2 | 74HC595 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U15, U16 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R12 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 2.2k | Resistor_SMD:R_0603_1608Metric | R10 |
| 1 | 2.2u | Capacitor_SMD:C_0603_1608Metric | C23 |
| 1 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | 3.3uH | Inductor_SMD:L_Murata_DFE201610P | L1 |
| 1 | 33 | Resistor_SMD:R_0402_1005Metric | R3 |
| 1 | 4.7n | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 4.7u | Capacitor_SMD:C_0603_1608Metric | C22 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 78L05 | Package_TO_SOT_SMD:SOT-89-3 | U4 |
| 1 | 820 | Resistor_SMD:R_0603_1608Metric | R18 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | B0509S-1WR3 | Converter_DCDC:Converter_DCDC_Murata_MEE1SxxxxSC_THT | PS1 |
| 1 | BOOTSEL | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1 |
| 1 | DD-50 plug | Solartron7075:DSUB-50_Pins_Vertical_P2.77x2.84mm_MountingHoles | J1 |
| 1 | RESET | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW2 |
| 1 | RP2354A | Package_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.4x3.4mm_ThermalVias | U1 |
| 1 | SWD | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J3 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | USB_B | Connector_USB:USB_B_TE_5787834_Vertical | J2 |
| 1 | red | LED_SMD:LED_0603_1608Metric | D4 |

cHemingway/llm_circuitgen_tests
Tests of various "circuit as code" tools


MetalMusings/MyOwnEtherCATDevice
Documentation accompanying the "Make My Own EtherCAT device" video serie on Youtube.

jtausif568/FIDO2-Custom-RP2354A-Hardware-Security-Key-with-male-USB-C
A custom hardware security key with plug-in USB-C based on the RP2354A to skip annoying multi-layered authentication

robocore-labs/link101-hardware
link101 is a multi-protocol USB interface board. One Type-C cable gives you CAN-FD, RS485, Dynamixel, Feetech, UART, I2C, and MIT Cheetah-protocol ports, all as stable Linux devices.

SharbelMarshi/txrx-optical-communication-kicad
A Free-Space Optical Communication link KiCad project




brainsmoke/usb_proto
This repository contains the KiCAD and OpenSCAD files for a USB-C fed protoboard. The protoboard contains a 5V and 3V3 rail. Some extras are also on the board such as a few LEDs and switches.
94 parts, built around the RP2354A, B0509S-1WR3, 74HCT165D and TLP2361(E. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the cHemingway/llm_circuitgen_tests repository on GitHub, at the commit this page was made from: the board is skidl/output/solartron_7075_interface_unplaced.kicad_pcb and its schematic atopile/schematic/dvm.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask cHemingway before reusing the design.