Software Engineer
Our client are an international semiconductor company.
Responsibilities:
Design and maintain a reproducible Hardware Emulation environment utilizing PetaLinux toolchains.
Wrap the entire emulation stack in Docker to ensure environmental consistency across developer workstations and automated CI/CD pipelines (GitLab/Jenkins).
Utilize the AMD fork of QEMU to boot functional PetaLinux images, modeling specific peripherals, boot sequences, and memory maps.
Bridge QEMU (PS) with RTL simulators like Vivado XSIM (PL) via Remote Port / Transaction Level Modeling (TLM) to validate custom logic alongside the software stack.
Develop robust testbenches and automation scripts using Python (leveraging XRT bindings or PYNQ) to load hardware overlays, inject test vectors into emulated hardware, and assert correctness.
Requirements:
Proven commercial experience with QEMU (specifically configuring and networking emulated ARM Cortex-A53/R5 cores) and RTL simulators.
Strong proficiency in Docker for standardizing complex toolchain environments (e.g., injecting Vitis Core Development Kits, PetaLinux).
Advanced Python programming for orchestrating tests, hardware interactions, and CI/CD automation.
Strong understanding of Linux OS internals, memory-mapped I/O, and driver-stack loading in embedded environments.