We are looking for high level C++ software engineers to join our team in the development of computer aided design (CAD) tools for the design of integrated circuits (ICs) for the Electronic Design Automation (EDA) industry. You will be part of a group of senior software engineers contributing to new components and algorithms as well as supporting existing components. Self-motivation, the desire to take technical ownership, a results-driven positive attitude and team-orientation will contribute to your success in this role.
You will be responsible for designing, implementing, debugging, and supporting innovative and diverse features for IC design. The software frequently involves rapid user interaction, so careful consideration of the user experience is an important part of the job. At the same time, IC design involves massive data sets, so performance considerations are critical when architecting new features. Challenges will include high-performance data-structures, multi-threading, distributed computing, multi-platform support, and object-oriented design of C++ software.
You will collaborate with quality assurance, marketing, technical publications, and customer support to deliver high-quality products on schedule. You will participate in scheduling and estimation of tasks, and assist in defining and developing software development best practices.
Successful candidates will possess the following combination of education and/or experience:
- BS/MS in Computer Science, Computer Engineering, or Electrical Engineering
- 5+ years of experience with object-oriented C++ software development
- Strong analysis, design and problem-solving skills
- Knowledge of high-performance data structures, algorithms, and design patterns
- Principles of developing high quality, testable, and maintainable software
- Good verbal, written, and interpersonal communication skills
Knowledge or experience in the following areas is a plus:
- IC design principles and EDA design tools and methodologies
- Multi-threaded and distributed computing
- Techniques for processing high-volume data