Jay Wu · Chieh-Neng Wu

Hardware & embedded systems engineer

6+ years across RTL design, SoC-to-FPGA prototyping, post-silicon bring-up, embedded Linux, and edge ML. My RTL has gone into fabricated respin silicon; I then owned the bring-up that proved that silicon worked, and wrote the drivers and features that ran on top. The connective tissue is cross-layer debugging — problems that could live in the RTL, the constraints, the firmware, the power rail, or the kernel config.

Ottawa, Canada  ·  jay@chiehnengwu.dev  ·  github.com/From2050

RTL → FPGA prototyping → post-silicon bring-up → embedded Linux → drivers → edge ML

Experience

Senior Logic Engineer — Ultracker

Camera ASIC (UX720V6 / Aleta S3): designed an image-composition RTL module that went into the respin silicon, then solo-owned post-silicon bring-up — test planning, validation-board revision, MIPI/DDR tuning tools, and a register-level control driver verified to images landing in DDR. Also owned an embedded Linux board bring-up on a partner product line, wrote an IMU driver with an end-to-end EIS feature, and enabled an edge-AI pipeline on RK3588.

M.S. Electrical & Control Engineering — NYCU

Thesis: a 32-channel pressure-sensing system for non-contact heart-rate and respiration monitoring — hardware through embedded acquisition, ML pipeline, and INT8 edge deployment on ESP32-S3, validated with leave-one-subject-out cross-validation across 33 subjects. Earlier research: multi-modal EEG/EMG/insole sensing, where I resolved an ESP32 throughput bottleneck with a dual-bridge data path.

FPGA Integration Engineer — MediaTek

SoC-to-FPGA prototyping for the Dimensity 700 5G smartphone SoC on Synopsys HAPS-80/100: adapted SoC RTL partitions for the FPGA target across CPU, memory, and multimedia subsystems, handled clock/reset and timing constraints, and debugged mismatches between firmware expectations and hardware behavior. Built Perl automation that kept RTL register maps in sync with SoC CSVs — saving 1–2 weeks of cross-team debugging per project cycle.

Logic Design Engineer — Ultracker

Block-level RTL for the Aleta S2C 360° camera platform on Xilinx FPGAs: ISP blocks (RGB binning, WDR/HDR), DMA against an internal DDR controller, CDC handling, DDR3 auto-refresh for low-power transitions, five-lens synchronization — and an H.264 pipeline extension from 240×180 to 4K.

B.S. Electrical Engineering — National Chiayi University

Co-authored undergraduate research on a turbidity-meter voltage-to-frequency converter chip, published in the IEEE Sensors Journal.

Selected work

Proprietary details are abstracted; scope and ownership are stated as they actually were.

Post-silicon bring-up of a camera ASIC — from untested silicon to images in DDR solo ownership

Respin silicon for the UX720V6 (Aleta S3) camera ASIC came back from the fab — hundreds of engineering units that had never been powered on. I owned the whole chain: test planning, revising the validation board, a voltage-aware MIPI delay-scan utility (Python) to find stable operating points, and a DDR sweep utility (C) integrated into the boot and mode-switching sequence to find per-unit optimal timing dynamically. Delivered a register-level control driver on top of the ASIC's hardware control block.

  • ~20% of marginally-failing units recovered by the DDR sweep
  • 4K@30+fps stable on the 4-lane configurable MIPI TX/RX path
  • Verified end-to-end: captured images landing in DDR — the full loop, not half of it

An image-composition RTL module in respin silicon

After the first UX720V6 tape-out failed, the company respun the mask. I designed and added an image-composition RTL module into the respin — the re-fabricated chips came back, were brought up, and ran. Not "taped out": my RTL is in working physical silicon.

Dimensity 700 on HAPS: prototyping a production SoC for firmware teams

At MediaTek, adapted SoC RTL partitions to FPGA targets through platform generations — early CPU/SRAM/MMU porting to full multimedia integration. Down-clocked clock domains, partitioned critical modules, managed the CDC/RDC risks the adaptation itself introduces, and cleaned constraint sets so the timing tools worked real paths instead of false ones (ProtoCompiler, SpyGlass, Vivado).

Embedded Linux bring-up: our ASIC on a third-party SoC, to first image

On a partner product line, integrated our camera ASIC onto an Anyka SoC — from the vendor BSP up through SPI-based ASIC control and the MIPI data path back to the CPU, to the first captured image. Vendor BSP as the base; the integration and bring-up were mine.

IMU driver + electronic image stabilization, raw data to coordinates

Wrote the IMU driver and owned the EIS feature end-to-end: IMU raw data through the stabilization algorithm to output coordinates, mapped onto the platform's existing PTZ coordinate system, delivered as a working feature. Separately enabled an edge-AI image-recognition pipeline on RK3588 and handed it off to the Linux team.

Edge ML with statistics behind it: 32-channel sensing on ESP32-S3

Built a 32-channel pressure-sensing system end-to-end for non-contact heart-rate and respiration monitoring: hardware, embedded acquisition, CNN/Transformer models, and INT8 ONNX quantization deployed on ESP32-S3. Validated with leave-one-subject-out cross-validation across 33 subjects; a Wilcoxon signed-rank test confirmed quantization preserved accuracy. Firmware, ML code, and data are open-sourced.

Debug stories

Three bugs that didn't live where they seemed to — told the way they happened.

The corruption that only appeared in sunlight

Symptom
After extending a decade-old H.264 module from 240×180 to 4K — simulation clean, FPGA tests clean — the field reported random image corruption. Outdoors. And the brighter the scene, the sooner it broke.
Investigation
Brightness-correlated failure smells data-dependent. I captured the offending images, replayed them in simulation, and traced the pipeline.
Root cause
A register accumulating pixel data overflowed at high luminance. Normal-case simulation could never hit it; real 4K sunlight did. Widened the register — fixed.
Lesson
Video pipelines must be simulated at worst-case data patterns, not just typical frames. "Passed sim" is a statement about your stimulus, not your design.

Not an RTL bug. Not a firmware bug.

Symptom
Firmware reported the FPGA prototype misbehaving. RTL simulation said the design was fine; the designer agreed.
Investigation
Added internal logic-analyzer probes — hardware matched the RTL exactly. So I pulled the RTL designer, the firmware owner, and the prototype view into one room and diffed assumptions instead of code.
Root cause
A hardware configuration had changed in the latest version; the firmware's header still described the old one. A version mismatch living between two teams' correct code.
Lesson
I extended our Perl header-generation flow with an automatic cross-check so the mismatch class gets caught at generation time — turning one debug into a permanent fix.

The DDR bug that lived in the power rail

Symptom
Post-silicon, intermittent failures that looked exactly like DDR instability — the kind of symptom that invites weeks of retraining timing parameters.
Investigation
We refused to lock onto the first plausible suspect: checked DDR config, clocks and PLLs, then put a scope on the power tree.
Root cause
Abnormal ripple on a PMIC output. The root cause was power configuration and behavior — the DDR datapath was innocent.
Lesson
Classify the problem and collect evidence across layers before committing to the obvious one. Intermittent ≠ random; it means you haven't found the variable yet.

Skills

RTL & FPGA
Verilog · block-level RTL (ISP, DMA, H.264, image composition) · SoC-to-FPGA partition adaptation · timing closure & SDC constraints · CDC/RDC · Synopsys HAPS-80/100 · ProtoCompiler · SpyGlass · Vivado
Silicon validation & bring-up
Post-silicon bring-up · validation-board revision · MIPI TX/RX (multi-lane) · DDR training & sweep tooling · PMIC / power integrity · oscilloscope-driven diagnosis · register-level control drivers · boot-sequence integration
Embedded software
C / C++ · embedded Linux board bring-up · vendor BSP integration · device tree · SPI / I2C / UART · sensor drivers (IMU) · ESP32 / FreeRTOS · real-time data paths & throughput debugging
Edge ML & tooling
Python · Perl / Tcl automation · CNN & Transformer models · INT8 ONNX quantization · edge deployment (ESP32-S3, RK3588) · LOSO cross-validation · statistical testing (Wilcoxon) · signal processing

Publication — co-author, turbidity-meter voltage-to-frequency converter chip, IEEE Sensors Journal.

Contact

Based in Ottawa, Canada — open to FPGA, ASIC validation / bring-up, embedded systems, and system-integration roles. Email is the reliable channel: jay@chiehnengwu.dev, or find me on GitHub.