At Cadence, we hire and develop leaders and innovators who want to make an impact on the world of technology.
Joining our Palladium and Protium solution team, work with a group of advanced interface and memory protocol experts. In this role, you will design and develop low-level device drivers alongside robust GUI-based tools used for system configuration, validation, and real-time debugging.
You will work at the hardware-software boundary, focusing on software development, collaborating closely with hardware teams to bring advanced silicon architectures to life and enable seamless customer experiences.
Key Responsibilities
- Driver & Interface Development: Design, develop, and optimize software device drivers for high-speed hardware interfaces (such as PCIe and CXL) on Linux and/or Windows platforms.
- GUI & Tooling Architecture: Build, enhance, and maintain intuitive GUI-based software tools for device configuration, real-time telemetry monitoring, validation, and advanced debugging.
- Hardware-Software Integration: Partner closely with hardware engineers to analyze register maps, master complex communication protocols, and translate system requirements into high-performance software.
- System-Level Functionality: Implement critical low-level features including device enumeration, configuration handling, interrupt processing, DMA functionality, and hardware-to-GUI control loops.
- Automation & Validation: Architect automation frameworks and test utilities to accelerate hardware bring-up, streamline regression testing, and support field debugging.
- Root-Cause Debugging: Triage and resolve complex, systemic issues across the hardware/software boundary, optimizing driver behavior, protocol compliance, and overall system stability.
- Cross-Functional Collaboration: Partner with engineering and customer enablement teams to drive product bring-up, analyze field issues, and deliver top-tier support.
Required Qualifications
- Education: 10+ years of industry experience, BS degree Computer Science/Engineering, Electrical, Engineering, or related field
- Core Programming: Strong, production-grade programming skills in C/C++.
- Driver Development: Hands-on experience developing device drivers on Linux and/or Windows operating systems.
- Protocol Expertise: Solid, foundational understanding of advanced protocols like PCIE, Ethernet etc.
- System Triage: Proven debugging skills for complex system integration issues spanning both hardware and software layers.
Preferred Qualifications
- Multi-Language Systems: Experience working in multi-language environments combining SystemVerilog (SV), C/C++, and Python.
- GUI Frameworks: Experience with Qt, PyQt, or similar modern GUI development frameworks.
- Automation & Scripting: Proficiency in Python for test automation, validation scripting, or rapid GUI prototyping.
- Advanced Linux Kernel: Deep experience with Linux kernel driver development and memory management.
- User-Mode Access: Familiarity with user-mode hardware access methodologies, including VFIO, UIO, and PCIe BAR mapping.
- Lab Equipment: Experience utilizing hardware debug tools such as protocol analyzers, logic analyzers, and oscilloscopes.
- Innovative Methodologies: Exposure to applying AI/ML techniques to hardware verification, log analysis, or tooling automation.
- Soft Skills: Strong analytical problem-solving skills with the ability to work independently and drive projects to completion in a dynamic team environment.
We’re doing work that matters. Help us solve what others can’t.