Project Started


Revised the design around a TCA8418 keypad scanner: all 20 diodes were removed, the 5×4 matrix now connects only to the scanner, and I²C, INT, RESET, decoupling, and required pull-ups were added. The potentiometer and latching-switch sections remain intact; ERC and legibility checks are clean.

Generated image

The project specification, firmware guide, and bring-up plan were also updated for the TCA8418 architecture. The next priority is reviewing the schematic before starting PCB placement.
I’ll inspect the board state first, determine whether placement, routing, or both are incomplete, then run the required auto-layout steps and validate the applied result.
Placement was required—the prior components were mostly off-board—and is now applied as a 5×4 key grid with grouped scanner, controls, and MCU. The board passed routing preflight, so full trace routing is now running.
Both placement and routing were needed.
  • Re-placed all 44 components inside the 160 × 100 mm, 4-layer board.
  • Arranged the 20 keys into a 5×4 grid and grouped the TCA8418, ESP32-S3, analog controls, latching switches, and support passives.
  • Cleared placement overlaps and out-of-bounds errors in the placement validation.
  • Generated 23 fine-pitch neckdowns for the TCA8418.
  • Routing preflight passed with only an informational via-at-SMD adjustment for the TCA8418 exposed pad.
  • Started auto-routing; the partially applied result currently has approximately 126 airwires remaining.
Routing is not complete. The existing auto-route job is paused and can be resumed without discarding its progress. Execution stopped because your ACUs ran out.

Board Bring-Up Plan
Pre-Power Checks
  1. Confirm no continuity short between 3V3 and GND.
  2. Confirm no control net is connected to 5 V or any 12 V source.
  3. Verify U2 VCC and C3 connect to 3V3; U2 GND, exposed pad, and C3 return connect to common GND.
  4. Verify SDA, SCL, KEYPAD_INT, and KEYPAD_RST each have their specified pull-up.
  5. Verify ROW1..ROW5 and COL1..COL4 connect only between the 20 switches and U2; verify no matrix diodes remain.
  6. Verify SW21/SW22 unused throws are no-connect and R5/R6 are populated 10 kΩ pull-ups.
Power Checks
  1. Connect only the DevKit onboard USB connector.
  2. Measure approximately 3.3 V from the 3V3 header to GND and at U2 VCC.
  3. Verify KEYPAD_INT, KEYPAD_RST, I2C_SDA, I2C_SCL, LATCH1, and LATCH2 idle HIGH.
  4. Verify both potentiometer endpoints are 3V3 and GND.
I2C and Reset Checks
  1. Assert KEYPAD_RST low for at least 120 us, release, then wait at least 120 us.
  2. Scan the I2C bus and confirm the TCA8418 acknowledges at its datasheet-defined address.
  3. Read a known identification/default register value before enabling keypad interrupts.
  4. Configure ROW0–ROW4 and COL0–COL3 as the 5×4 keypad matrix, then enable debounce, event FIFO, and interrupt reporting.
Functional Tests
  1. Press and release every key individually; confirm one correct event for each of the 20 matrix coordinates.
  2. Confirm KEYPAD_INT asserts low when events are queued and releases after firmware drains/clears the event condition. INT is active-low open-drain.
  3. Test representative multi-key combinations and verify the event FIFO preserves press/release ordering without phantom reports.
  4. Close each latch and verify only its associated input reads LOW; open must read HIGH from the external pull-up.
  5. Sweep each potentiometer and verify stable ADC readings across the usable range with the 100 nF filters.
Pass Criteria
  • U2 is reachable over I2C after reset.
  • All 20 keys generate unique, correctly mapped press and release events.
  • Interrupt/event-buffer service operates without stuck-low INT or lost events.
  • Analog channels are stable and both latching inputs report open HIGH / closed LOW.
  • No GPIO or control node exceeds the 0–3.3 V range.
  • Pre-Power Checks

  • Power Checks

  • I2C and Reset Checks

  • Functional Tests

  • Pass Criteria