Mts Software Development Engineer

AMD AMD · Semiconductors · San Jose, CA · Engineering

This role is for a Software Development Engineer at AMD (Xilinx) focused on operating systems-level software, compilers, and network distribution software for semiconductor operations. Responsibilities include researching, designing, developing, and testing software, troubleshooting, debugging, and participating in all phases of the software development lifecycle. The role requires experience in firmware development, C programming, software debugging, verification, multi-threading, PDLC, and OS fundamentals, with specific experience in Linux kernel internals, custom driver development, and ARM SoC design.

What you'd actually do

  1. Research, design, develop, and/or test operating systems-level software, compilers, and/or network distribution software for semiconductor operations, applying principles and techniques of engineering, and mathematical analysis.
  2. Design, develop, troubleshoot and debug software programs for enhancements and new products.
  3. Develop software and tools in support of design, infrastructure and technology platforms, including operating systems, compilers, routers, networks, utilities, databases, cloud-based and Internet related tools.
  4. Determine hardware compatibility and/or influence hardware design.
  5. Work in an area of specialization to develop systems-level software, working on problems of complex scope where analysis of situations or data requires a review of a variety of factors.

Skills

Required

  • Designing, implementing, and testing firmware for embedded systems
  • Programming in C language
  • Software debugging on macOS, Linux or Unix systems
  • Software verification to ensure that a software product meets its specified requirements
  • Multi-threading to build high-performance applications that execute multiple tasks concurrently
  • Product development lifecycle (PDLC), including planning, design, development, testing, and deployment of a product
  • Knowledge of operating system (OS) fundamentals to write efficient and predictable code that effectively interacts with the underlying system
  • Linux kernel internals, including memory management, scheduling, file systems, and IPC mechanisms
  • Developing custom drivers for an operating system
  • ARM System on Chip (SoC) design