System Software Verification Engineer - Embedded System
We are seeking a System Software Verification Engineer to join our team, focusing on embedded systems. In this role, you will be instrumental in board bring-up, comprehensive testing, and automation of embedded firmware, ensuring the functionality, security, and efficiency of our software components from pre-silicon to post-silicon verification. You'll collaborate closely with development teams, debug critical issues, and contribute to continuous test automation.
Key Responsibilities
- Board bring-up activities will be conducted for software components like bootloader, platform managers, Linux Kernel, Linux drivers, Baremetal drivers, and applications for ARM-based boards, emulation platforms, and prototyping platforms.
- Test plans will be developed and executed to evaluate the functionality, security, and efficiency of firmware, utilizing emulation and evaluation boards for pre-silicon and post-silicon verification.
- Testing failures will be analyzed, tracked, and debugged to determine corrective measures, collaborating directly with the development team to assess test plan requirements and resolve failures.
- Functional and system-level tests will be automated using Python and integrated into the Test Automation framework, maintaining test artifacts for any updates in test cases or the test framework.
- Regression tests will be run, issues triaged, defects created in the system, and collaboration with the development team will ensure closure.
- Dynamic code coverage for boot-level firmware will be driven using standard tools like LDRA.
Technical Skill Requirements
- Working experience in verification and testing of Embedded System software or firmware is essential.
- Good experience in Device Driver Verification and validation on Linux, Bare metal, Real Time Operating Systems is required.
- Skills in compiling/building/cross-compiling, debugging, testing, deploying Bootloader, TF-A, Linux Kernel, Device tree, Middleware software, and BareMetal application images for board bring-up activities through JTAG debuggers & Emulators using different boot modes are mandatory.
- Good understanding of any one of the following SoC/Processing Technologies: ARM/RISC-V/X86, MMU, Interrupt handling, Caches is necessary.
- Hands-on experience with one or more peripherals/controllers like UART, I2C, SPI, USB, SD, eMMC, QSPI, PCIe is required.
- Ability to define, design, and develop manual/automation test cases for Embedded system projects is essential.
- Programming skills in C/C++, Makefile, Linker file creation, and scripting languages like Python/Shell/Tcl are a must.
- Experience in a GIT environment and Test Automation frameworks like Pytest, Jenkins is required.
Education
- A B.E/B.Tech or M.E/M.Tech in Electronics & Communications or Computer Science is required.
General Requirements
- Employment Type: This is a Permanent, full-time position.
Preferred Skills
- Exposure to design tools like VIVADO, VITIS is good to have.
- Familiarity with Configuration management tools like GIT/Perforce, JIRA, Confluence is beneficial.