Bare Metal Software Architect
About SiFive
As the pioneers who introduced RISC-V to the world, SiFive is transforming the future of compute by bringing the limitless potential of RISC-V to the highest performance and most data-intensive applications in the world. SiFive’s unrivaled compute platforms have enabled leading technology companies around the world to innovate, optimize, and deliver the most advanced solutions of tomorrow across every market segment of chip design, including artificial intelligence, machine learning, automotive, datacenter, mobile, and consumer. With SiFive, the future of RISC-V has no limits.
As a Bare Metal software architect, you will define and own the software stack used by the hardware verification team. You will be closely working with the hardware and Bare Metal software teams to architect a stack that promotes portable, reusable and composable test programs for SiFive IP products.
Responsibilities:
- Maximizing reuse of SiFive bare-metal deliveries by the hardware verification infrastructure.
- Proposing and developing a verification software stack that promotes the development of portable/reusable/composable test programs for SiFive IP products.
- Proposing, developing and documenting a light and verification-oriented framework that maximizes coverage of RISC-V architecture such as virtualization.
- Automating upgrade of existing tests to comply with the new framework API.
- Developing advanced random instruction generator features that compose with verification software stack.
- Writing directed and random tests as appropriate to test CPU functions.
- Prototyping your ideas and proving that they work.
- Working with cross functional teams (hardware engineering, software engineering).
Requirements:
- 5+ years of recent experience with firmware development.
- Solid understanding of processor and SoC architecture, or a strong desire and ability to learn.
- A conscientious and thorough approach to Design Verification.
- Experience in developing/architecting embedded software stacks.
- Experience in CPU or system verification.
- Proficiency in C, Python, Linux, and knowledge on how to use embedded development tools such as JTAG and associated debug tools.
- Experience with distributed revision control systems such as git.
- Empathy towards engineers who use your deliveries.
- Open minded about new technologies and ways to solve problems.
- Good interpersonal skills.
- Experience with CMake and Linux DTD is a plus, and knowledge of RISC-V architecture is a plus, however they are not a requirement.