About the Role
About the Role
The Software Validation Engineer will work at the hardware-software boundary, focusing on validating systems and debugging issues across firmware, PCIe transport, and userspace. The role requires expertise in C/C++ systems programming and familiarity with custom silicon validation and streaming API architecture.
What You'll Do
- C/C++ Systems Programming — memory allocators, interrupt handling, race condition debugging, resource lifecycle management.
- PCIe & Hardware Interfaces — VFIO, BAR mapping, iATU, DMA (H2D/D2H/P2P), physical functions.
- Custom Silicon Validation — Core firmware, HDI protocol, SQ/CQ setup, multi-generation chip support.
- Streaming API Architecture — dynamic library loading, process separation, static-to-dynamic migration.
- Build System — constraint-based compilation, target management, CI integration.
Who You Are
The ideal candidate would be comfortable debugging issues that span firmware to PCIe transport to userspace, and able to maintain shared infrastructure across multiple chip generations.
Bonus Points
Rust is emerging as a skill need for the streaming API shim layer but is not yet dominant.
Requirements
C/C++ Systems Programming
Experience with memory allocators, interrupt handling, and race condition debugging.
PCIe & Hardware Interfaces
Knowledge of VFIO, BAR mapping, and DMA operations.
Custom Silicon Validation
Familiarity with core firmware and multi-generation chip support.
Streaming API Architecture
Understanding of dynamic library loading and process separation.
Build System
Experience with constraint-based compilation and CI integration.
Nice to Have
Familiarity with Rust for the streaming API shim layer.