Remote job
Member of Technical Staff, FPGA and Driver Systems
Job details
About this role
Role overview Build and validate the path between host software and programmable hardware, including drivers, firmware, interfaces, and FPGA logic. Prototypes should answer a defined systems question on a representative workload, with clear evidence about what has been measured, verified, or remains an assumption.
Responsibilities - Turn workload and architecture needs into host, driver, firmware, RTL, memory, and interface contracts. - Develop host software, Linux drivers, firmware, FPGA logic, and test infrastructure for bounded experiments. - Specify command and control behavior, DMA, memory coherency, telemetry, reset, updates, and failure handling. - Plan simulation, emulation, verification, synthesis, timing, bring-up, and performance evaluation. - Integrate the programmable path with representative software and measure end-to-end behavior. - Document what the prototype establishes, its limitations, and the next qualification decision.
Requirements - Experience with FPGA development, device drivers, embedded systems, or hardware interfaces. - Strong debugging skills across software and hardware boundaries. - Understanding of buses, DMA, memory ordering or coherency, timing, and verification. - Experience with Linux, C/C++, RTL or HLS, and at least one FPGA toolchain. - Ability to produce reproducible simulation, bring-up, and performance artifacts. - Ability to define safe failure, reset, update, and rollback behavior.
Nice to have PCIe, CXL, or other high-speed interfaces; formal verification or UVM; memory controllers and accelerators; board design and signal integrity; or compiler and runtime integration.