Digital Design Engineer
Role details
Job location
Tech stack
Job description
As a Senior Digital Design Engineer you will be working to implement high performance AI inference solutions on FPGA. You will contribute to our IP library in SystemVerilog and build out complete FPGA design solutions for customers. You will work as part of our diverse team of developers and researchers, on IP that is core to our inference products. You will use your experience to deliver highly performant, well tested and extensible code for some of the most widely deployed AI in modern data centers. You will work closely with our software and machine learning engineers, integrating against Myrtle's compiler/runtime/driver stack, to build high-reliability, low-latency, and high-throughput inference applications.
You will work with the latest AI capable FPGAs from multiple FPGA vendors to develop RTL in SystemVerilog. You will generate maintainable and parameterizable IP components, to enable reuse across multiple FPGAs and applications. You will package IP into full solution implementations, achieve timing closure through floorplanning and test solutions on the board. You will make low level software interface code changes to support integration with our software stacks. You will work in a Linux development environment.
You will help to define the ways of working in the FPGA team, including coding standards and test. You will help the team to plan activities using Agile scrum methodology.
What we do
Myrtle.ai does the engineering to make deep learning a low power, high performance reality today. Focusing on reducing the power consumption of the world's data centers, we strive to use our expertise to transform the world today by making tomorrow's AI inference workloads run with unsurpassed efficiency. We're a team of engineers and scientists with deep technical expertise who love a technical challenge in a friendly collaborative environment. We focus on end to end problem optimisation, starting at the algorithm and adapting the whole stack to get world leading performance from today's silicon solutions.
Culture
We are a small friendly team, who work with some of the biggest problems in ML today. We strive for excellent technical performance in an environment where everyone contributes directly to the company's success. We are collaborative and multi-disciplined, welcoming innovation and critical thinking from everyone. We are based in central Cambridge UK, and enjoy sharing food and games. We are currently running a hybrid working scheme with minimum 3 days on site, allowing a degree of home working. We can accommodate other non standard working patterns for staff with particular requirements. Myrtle is an equal opportunity employer. We value diversity at our company and are committed to creating an inclusive environment for all employees, providing equal opportunities to all persons without discrimination. We recognize the excellent benefits in having a diverse workforce from different backgrounds and employ solely on ability., * Building full applications for FPGA using our IP library
- Integrating with third party IP for external memory PCIe subsystems
- Extending IP verification code and integrating into automated test environments
- Working with software interface routines to support FPGA integration into the software stacks
- Learning about a range of Machine Learning inference optimization techniques
- Providing technical support for customer engagements, As a [Senior] Software Developer you will be designing and developing the software systems that enable us to run machine learning (ML) inference workloads at state of the art latencies and efficiency on Myrtle's FPGA-based hardware accelerators. You will be working throughout the stack to define the ways we program AI accelerators, from co-designing the instruction sets together with the hardware engineering team, to developing the compilers and application APIs to interface the accelerator with ML models and frameworks., * Programming our bespoke hardware accelerators by writing compilers and DSLs
- Creating tools for debugging, profiling, and optimising programs for our accelerators
- Developing efficient applications and runtime libraries for server CPUs that utilise our accelerators, We are a team of engineers and scientists with deep technical expertise who love a technical challenge in a friendly collaborative environment.
We want to revolutionize AI by empowering individuals. Being part of myrtle.ai means being a large part of a small organisation instead of a small part of a large organisation. This confers great individual responsibility and offers great opportunities. At myrtle.ai our employees support our core values and through that we can improve the future as a team.
Joining myrtle.ai means working side-by-side with people impassioned to change the world through AI and to help each other along the way. Our team is mission-driven, fun-loving, and family-oriented. We bring the best of AI technologies to the brightest of customers. We do this through collaborative working and individual development. Through these efforts, our team stands out in Cambridge as a beacon of people-oriented, technology-driven achievement., "At myrtle.ai you'll find yourself surrounded by great colleagues and working on challenges that push the boundaries of technology. We prioritise autonomy, giving you the space to make a substantial impact within our tight-knit team. I have really enjoyed the continuous learning curve, from delving into Haskell and FPGAs to exploring large language models. Our environment fosters a friendly, collaborative atmosphere where camaraderie drives both personal and professional growth." Emma Smith, Senior Software Engineer *
"Having joined myrtle.ai as a graduate, it was amazing how quickly I was brought up to speed on everything I needed to know - from machine learning to FPGAs. I love the autonomy I'm given here - I'm trusted to work on complex problems, but always have the support of my team when needed. Everyone has a real effect on the company. Each day I'm solving interesting problems in a team of great people." Alex Pay, Software Developer
More about myrtle.ai
myrtle.ai has the skill set to create deep learning inference solutions that others can't. With our holistic approach to problem solving, we bring together the engineering disciplines of software, hardware and machine learning to create highly optimized platforms for tomorrow's most demanding inference challenges.
We're a team of engineers and scientists with deep technical expertise who love a technical challenge in a friendly, collaborative environment.
Requirements
We are always looking for brilliant minds to join our team. These include full-time, part-time, graduate, and intern positions. If you have experience in Computer Science, Mathematics, Software Design, Digital Circuit Design or Machine Learning, we'd love to hear from you! We are an equal opportunities employer and we value diversity. Please send us your CV at careers@myrtle.ai if any of the positions suit you., * At least 5 years experience generating clear, well-documented, and well-tested SystemVerilog, Verilog or VHDL code
- Masters degree in Engineering, Mathematics or other Scientific Discipline
- Worked with FPGA EDA tools such as Quartus or Vivado
- Worked with software languages such as C, C++, Python
- Familiarity with Linux development environments, version control and CI systems
- Experience of bringing up full FPGA designs and debugging on hardware
- Experience optimising RTL designs to achieve timing closure
- Good verbal and written communication skills
- [Nice to have] Familiarity with neural network architectures
- [Nice to have] Interest in Functional Programming Languages, A keen eye for design and a strong understanding of systems programming is desirable for this role, as you will be building up the programming models to get the best performance out of the accelerator and host CPU.
Our software is written in Rust for its fast performance and tight control over latency in performance critical sections, as well as its type system guarantees and mature tooling., * [Senior] 3 years of experience working on relevant areas such as performance sensitive- or systems programming, and compiler development
- An enthusiastic attitude to tackling the challenges of programming novel processor architectures
- Used Rust in production or open source codebases
- Experience with low-level programming languages in general (e.g. Rust, C, C++) or functional programming languages (e.g. Haskell, OCaml, Nix)
- Strong Problem solving skills
Benefits & conditions
Are you ready to work at the heart of an exciting AI start-up and…
- Influence the future
- Learn and develop your skills
- Expand your role as you grow
Your work will make a difference.
Teamwork
Together everyone achieves more
Individuals
Every individual makes a difference
Integrity
Honouring our commitments
Respect
Have respect for one another
Innovation
Be curious, creative and innovative
Teamwork
Together everyone achieves more
Individuals
Every individual makes a difference
Integrity
Honouring our commitments
Respect
Have respect for one another
Innovation
Be curious, creative and innovative