Embedded Systems Software Engineer

Fermi National Accelerator LaboratoryBatavia, IL
3dOnsite

About The Position

Fermilab is seeking a highly motivated Embedded Systems Software Developer to support the design, development, and maintenance of embedded software for beam instrumentation and diagnostic systems. These systems require high-bandwidth, distributed data acquisition tightly integrated with the accelerator control system to monitor and optimize accelerator performance. The ideal candidate will have experience with low-level programming, hardware-software integration, and real-time system performance. They will also be expected to consider system constraints such as hardware capacity, operating time, and performance requirements, and to prepare detailed specifications from which programs will be developed. Collaboration with technical staff to understand and resolve software issues is essential.

Requirements

  • High school diploma with 5+ years of experience developing complex software projects.
  • Detailed knowledge of software development practices using a modern high-level language (e.g., C++, JavaScript, Python).
  • Strong understanding of relational database concepts.
  • Excellent communication skills.

Nice To Haves

  • Bachelor’s degree in computer science or related field with 3+ years of experience developing complex software projects preferred.

Responsibilities

  • Design and implement FPGA logic using VHDL/Verilog, IP cores, and Xilinx tools (Vivado, ISE).
  • Develop and integrate embedded software for Xilinx SoCs (e.g., Zynq, Versal) using C/C++, SDK/Vitis, and RTOS or bare-metal environments.
  • Design, code, test, debug, document, and maintain applications, systems, and libraries and Linux kernel modules
  • Develop and implement specifications for small to large projects.
  • Participate in design discussions and author design notes.
  • Gather requirements from users, contribute to design efforts, and obtain feedback.
  • Communicate effectively with management, peers, and stakeholders in written and oral form.
  • Coordinate with personnel from other departments, including non-computing disciplines.
  • Collaborate on hardware-software co-design to optimize performance and partition functionality between FPGA and processors.
  • Debug, test, and verify FPGA and embedded systems using simulation tools, oscilloscopes, logic analyzers, and Xilinx debugging utilities.
  • Develop and execute unit tests, integration tests, and automated test scripts to ensure software reliability.
  • Act as a primary contact for system and operational problems; investigate, localize, and resolve or direct others to resolve issues.
  • Perform operational and maintenance activities for assigned projects.
  • Provide guidance and training to less experienced team members.
  • Lead phases of projects or act as team leader on less complex projects.
  • Optimize FPGA resource utilization, timing closure, and power consumption.
  • Prepare and maintain technical documentation including design specifications and test results.
  • Implement version control (e.g., Git) and maintain code repositories.
  • Utilize CI/CD pipelines for building, testing, and deploying embedded software and FPGA designs.
  • Perform other duties as assigned by supervisor.
  • Abide by all environmental, health, and safety practices.

Benefits

  • Medical, Dental, Vision and Flexible Spending Accounts
  • Paid time off
  • Life insurance
  • Short and Long-term disability insurance
  • Retirement benefits
  • Onsite day care
© 2024 Teal Labs, Inc
Privacy PolicyTerms of Service