c32ae49f28
The TPS25961's exposed pad is GND and the datasheet requires it be connected to the GND plane (Table 5-1; package note 3 adds a mechanical requirement). REVIEW.md claimed this was honoured because the footprint is the _ThermalVias variant -- but the variant alone connects nothing. hardware/TPS25961.kicad_sym defined pins 1-6 only, with no pin for the exposed pad, so KiCad had nothing to map onto footprint pad 7 and left it netless: an isolated copper island under the chip with its thermal vias going nowhere. Adds pin 7 (GND, power_in, hidden, stacked on pin 4) to the symbol library, the cached symbol in exi.kicad_sch, and the U13 instance. PCB updated and verified: U13 pad 7 carries GND on all four elements (both SMD rects and both thermal vias), R48 placed, EFUSE_OVLO routed, R49 gone. DRC reports 0 violations, 0 unconnected pads and 0 schematic parity issues -- the 0-unconnected result is what confirms pad 7 is tied into the GND network rather than merely labelled. The 4 DRC errors previously dismissed as zone-fill phantoms on this pad are gone, though zones were refilled in the same pass so that is not proof of cause either way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
67 lines
2.4 KiB
Docker
67 lines
2.4 KiB
Docker
FROM debian:sid-slim
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
git \
|
|
git-lfs \
|
|
sudo \
|
|
python3 \
|
|
python3-venv \
|
|
python3-pip \
|
|
yosys \
|
|
nextpnr-ice40 \
|
|
fpga-icestorm \
|
|
libusb-1.0-0 \
|
|
libftdi1-2 \
|
|
tshark \
|
|
nodejs npm \
|
|
graphviz \
|
|
poppler-utils \
|
|
kicad \
|
|
kicad-libraries \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
# libusb-1.0-0 + libftdi1-2: USB backend for `iceprog` (FPGA flash) and `pyftdi`
|
|
# (FT2232H EEPROM). sudo: the /dev/bus/usb nodes are root-owned, so the vscode
|
|
# user flashes via `sudo` (NOPASSWD, configured below).
|
|
|
|
ENV TZ="Europe/Amsterdam"
|
|
|
|
# Debian marks the system Python as externally-managed (PEP 668), so install
|
|
# project deps into a venv. /opt/venv is first on PATH, so `python`/`pip` resolve
|
|
# to it for all users.
|
|
ENV VIRTUAL_ENV=/opt/venv
|
|
RUN python3 -m venv "$VIRTUAL_ENV"
|
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
|
|
# ENV PATH alone is not enough: Debian's /etc/profile REsets PATH unconditionally,
|
|
# so any *login* shell (VS Code's integrated terminal, `su - vscode`, ssh) drops
|
|
# /opt/venv/bin and then `python` does not exist at all (slim has only python3).
|
|
# Re-prepend the venv for login shells so the documented `python -m exi_bba.synth`
|
|
# works everywhere.
|
|
RUN printf 'PATH="%s/bin:$PATH"\nexport PATH\n' "$VIRTUAL_ENV" > /etc/profile.d/10-venv.sh
|
|
|
|
RUN npm install -g @anthropic-ai/claude-code
|
|
|
|
COPY requirements.txt /tmp/requirements.txt
|
|
RUN pip install --no-cache-dir -r /tmp/requirements.txt
|
|
|
|
# pyftdi: programs the FT2232H EEPROM over libusb, and (with pyserial) reads the
|
|
# FT2232H channel-B UART directly over libusb for bring-up diagnostics.
|
|
RUN pip install --no-cache-dir pyftdi pyserial
|
|
|
|
RUN useradd -m -u 1000 -s /bin/bash vscode \
|
|
&& echo 'vscode ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/vscode \
|
|
&& chmod 0440 /etc/sudoers.d/vscode
|
|
|
|
USER vscode
|
|
|
|
# KiCad global library tables (copied from the installed templates) so kicad-cli
|
|
# can run the library-parity DRC/ERC checks. Without these, every standard
|
|
# footprint/symbol reports "library not configured". KiCad's built-in defaults
|
|
# resolve the ${KICAD10_*_DIR} paths inside the templates, so no env vars needed.
|
|
RUN mkdir -p /home/vscode/.config/kicad/10.0 \
|
|
&& cp /usr/share/kicad/template/fp-lib-table /home/vscode/.config/kicad/10.0/fp-lib-table \
|
|
&& cp /usr/share/kicad/template/sym-lib-table /home/vscode/.config/kicad/10.0/sym-lib-table
|
|
|
|
WORKDIR /workspace
|