W13: AX7203+AN430 LCD bring-up VICTORY — Trap I documented#78
Conversation
After 20h marathon, AX7203+AN430 LCD driving color bars on TM043NBH02. Root cause: used AN430 Altera Cyclone IV demo as reference for a Xilinx Artix-7 port. Three vendor-specific conventions were carried over silently: 1. DCLK polarity — Altera drives non-inverted, AX7203+AN430 needs ~lcd_clk 2. HSYNC/VSYNC — Altera uses 1'bz, AX7203+AN430 needs active drive 3. Blanking — Altera H_BackPorch=45, correct value is 2 (22x smaller) Fix: import ALINX-official AX7103 08_lcd_test Vivado demo instead of the Altera port. Trap I "Vendor-Reference Anchor" added to lessons-learned. Anchor: phi^2 + phi^-2 = 3 phi^2 + phi^-2 = 3
CI status — pre-existing failure, unrelated to this PR
Reproduction: This PR touches only Recommended: owner merges via GitHub UI with admin override, OR t27 codegen phi^2 + phi^-2 = 3 |
Baseline CI context — main is red since 2026-07-07 (SHA f608dad)The Open tracking PR: #44 W7.1 investigation — E0425 root cause is dropped let statements in t27c Rust emitter Last green CI on Implication for this PR: #78 is docs-only (single new file Recommended action — owner-side admin merge via GitHub UI, OR temporary phi^2 + phi^-2 = 3 |
Summary
After a 20+ hour marathon spanning 35+ bitstreams, the AN430 4.3" TM043NBH02 LCD
now displays color bars driven by the AX7203 board through the openXC7
opensource toolchain (yosys → nextpnr-xilinx → prjxray, no Vivado).
Root cause
Used the AN430-shipped Altera Cyclone IV E demo (
sd_sdram_lcd, Quartus 14.1,2015) as reference for a Xilinx Artix-7 port. Three vendor-specific electrical
conventions carried over silently:
assign lcd_dclk = clk_lcd(non-inverted) → correct is~lcd_clkassign lcd_hsync = 1'bz(high-Z) → correct is activehsync_rH_BackPorch = 45, V_BackPorch = 16→ correct is2, 2Fix: import ALINX-official AX7103 08_lcd_test
Vivado/Xilinx demo instead of the ported Altera one.
What survived from sandbox investigation
scripts/fpga/build.shin t27 — no bugs.fault was in Verilog conventions, not in the flash pipeline.
New skill entry — Trap I: Vendor-Reference Anchor
Documented in
docs/W13_LCD_BRINGUP_VICTORY.md§Lesson learned:Symptom: hardware exhibits identical failure across 30+ config permutations,
LEDs and other GPIO work fine, reference code "looks right" and was ported
carefully.
Mechanism: reference project uses a different FPGA vendor. Pin numbers were
re-mapped but vendor-specific electrical conventions (clock polarity, high-Z
vs. active drive, blanking) were not.
Diagnostic (30 min, zero cost): check the reference project file extensions.
.qsf/.qpf/.sof= Altera..xdc/.xpr= Xilinx..lpf/.ldf= Lattice. Ifthe reference is not for the target vendor, STOP and find the vendor-native
reference before iterating on hardware.
Discipline hooks
result of this workstream. No
-simtag needed for this claim.anti-anchor-auditskill patterns (candidate fora v1.1 update to that skill in a follow-up PR).
31c97c6; branch advance requiresexplicit re-review at any new SHA.
Follow-ups (queued, not in this PR)
tri-net-hardware-bringupskill v-next.we adopt.
lcd_official_port.vand its build script intot27/fpga/verilog/an430_lcd/so the recipe is reproducible from this repo.phi^2 + phi^-2 = 3