Sign up for our
weekly
newsletter
of fresh jobs
Job Title:Software Development Engineer (C/C++ Concurrent Programming)Job Type:Full-timeJob Description:We are seeking a highly skilled Software Development Engineer specializing in C/C++ concurrent programming to design, implement, and optimizesoft models of hardware devices. The ideal candidate will have a solid background in concurrent programming, multithreading, and inter-process communication, with a strong focus on performance, scalability, and low-latency systems. This position involves developing software models that simulate hardware devices, requiring expertise in low-level programming, synchronization techniques, and real-time systems.Key Responsibilities:• Design, develop, and maintainsoft models of hardware devices in C/C++.• Implement and optimize highly concurrent systems using multithreading and synchronization techniques.• Develop and implement multiprocess communication mechanisms using shared memory, message passing, or socket programming.• Work closely with hardware and systems teams to model device behavior accurately.• Debug and resolve issues related to performance, synchronization, and concurrency in software models.• Implement unit tests, integration tests, and validation frameworks to ensure accuracy and performance of the device models.• Optimize code for low-latency, high-throughput requirements, ensuring efficiency in both multi-core and single-core environments.• Collaborate with cross-functional teams including hardware engineers, QA, and product management to ensure that the software models meet requirements and deadlines.• Stay updated with the latest advancements in concurrent programming, inter-process communication, and hardware modeling techniques.Qualifications:Required:• Bachelor’s or Master’s degree in Electronics Engineering, Computer Science, Electrical Engineering, or a related field.• 3+ years of professional experience in C/C++ programming.• Strong understanding of concurrent programming, including threading, mutexes, semaphores, and lock-free algorithms.• Experience in low-level systems programming and an understanding of hardware-software interactions.• Proficiency in implementing efficient synchronization mechanisms (e.g., spinlocks, condition variables).• Proven experience in developing and debugging multithreaded applications.• Strong debugging skills with tools like GDB, Valgrind, or similar.• Experience with memory management, performance optimization, and profiling tools.• Familiarity with software modeling of hardware devices or simulators.• Experience with multiprocess communication (e.g., IPC mechanisms such as shared memory, message queues, or socket programming).Preferred:• Experience with hardware interfaces and protocols such as PCIe, CXL, or AXI.• Familiarity with hardware description languages like Verilog or VHDL.• Experience developing high-performance networked applications using sockets or RPC mechanisms.• Hands-on experience with software development in Linux or other Unix-based systems.Soft Skills:• Excellent problem-solving and analytical skills.• Strong communication skills and ability to collaborate in a cross-functional team environment.• Self-motivated and able to work independently with minimal supervision.Why Join Us:• Work on cutting-edge technology in the field of hardware-software co-development.• Be part of an innovative and collaborative team working on high-impact projects.• Opportunities for career growth and learning in advanced concurrent programming techniques.#LI-EDA#LI-HybridJob Family: Research & DevelopmentReq ID: 446840