
Staff/Sr. Staff Software Engineering – Virtual Platforms
- Toronto, ON
- Permanent
- Full-time
Software EngineeringGeneral Summary:As a Software Virtual Platform Engineer, you will specialize in virtual platforms, including SystemC TLM and QEMU. Your primary focus will be on developing high-level system virtual models of complex SoC hardware.Key responsibilities include:Designing and developing SystemC TLM models to accurately represent SoC architectures.Integrating components such as processors, interconnects, peripherals, and custom IP blocks into the SystemC simulator.Collaborating closely with hardware designers, software engineers, and other stakeholders to understand system requirements and translate them into detailed SystemC models.Extensive experience with C++ programming to ensure efficient and effective model development.Minimum Qualifications: • Bachelor's degree in Engineering, Information Systems, Computer Science, or related field and 4+ years of Software Engineering or related work experience.
OR
Master's degree in Engineering, Information Systems, Computer Science, or related field and 3+ years of Software Engineering or related work experience.
OR
PhD in Engineering, Information Systems, Computer Science, or related field and 2+ years of Software Engineering or related work experience.
- 2+ years of work experience with Programming Language such as C, C++, Java, Python, etc.
- Leverages advanced Software knowledge and experience to design, develop, create, modify, and validate embedded and cloud edge software, applications, and/or specialized utility programs.
- Analyzes user needs, software requirements, and time and cost constraints to design and customize software for optimal operational efficiency.
- Designs and implements software modules for large-scale products and systems.
- Participates in and leads design, coding, unit testing, debugging, and integration efforts to ensure projects are completed to specifications and schedules.
- Performs complex code reviews and regression tests as well as triages and fixes issues to ensure the quality of code.
- Collaborates with individuals outside the software function (e.g., Hardware, Systems, and Test engineers) to ensure solutions work with other components of a specific project.
- Writes detailed technical documentation for complex Software projects.
- Works independently with minimal supervision.
- Provides supervision/guidance to other team members.
- Decision-making is significant in nature and affects work beyond immediate work group.
- Requires verbal and written communication skills to convey information. May require basic negotiation, influence, tact, etc.
- Has a moderate amount of influence over key organizational decisions (e.g., is consulted by senior leadership to make key decisions).
- Tasks often require multiple steps which can be performed in various orders; extensive planning, problem-solving, and prioritization must occur to complete the tasks effectively.