← Back to All Placements

Ayuub Mohamud

Formal Verification Intern

Arm Ltd
Cambridge, England

Summary

During the course of the summer, I worked at Arm in their Cambridge office, within the Little Core-A formal verification team. Little Core-A is the name given to a class of processors designed by Arm that aim for a lower area footprint while delivering good performance. My team in particular is responsible for mathematically proving that these processors function correctly across a range of possible scenarios and configurations.

Role and Contributions

My role was split into two parts: reducing the complexity of the environment used to perform the mathematical proofs, allowing verification tools to determine results more quickly, and adding support for new processor configurations and interfaces inside the team's infrastructure. This allowed for a wider range of processor behaviours to be mathematically checked while allowing me to build upon the team's existing work. This required me to investigate the codebase of the processor, research how parts of the processor worked, and extend the functionality of an existing workflow.

Technical Skills

Throughout my placement, I had an opportunity to build upon my existing technical skills in processor design, alongside learning new ones in formal verification. I learned how formal properties can be used to describe the expected behaviour of a hardware design and had an opportunity to learn about SystemVerilog Assertions (SVA), a method of expressing digital properties widely used to mathematically verify digital designs. I had to learn how to investigate and research a large pre-existing engineering codebase, as my role isn't just about running a program on a set of properties, but rather understanding why they were written, what a failed property could indicate, and what can be done to resolve the underlying issue. It also required me to investigate documentation, study unfamiliar code, and understand existing functionality before making any changes.

Professional Skills

One of the areas where I feel I have improved the most in my placement is communication. Doing a placement in industry forced me to approach teamwork in a completely different way. I was initially given feedback on areas where I could improve, and I took proactive steps to address that feedback. I made a conscious effort to ensure that those I worked closely with had a rough idea of what I was currently tackling, alongside setting up regular one-to-one sessions with a colleague from the formal team, recording meeting notes, and making others aware of my current priorities. Working in a large engineering team also helped me to improve my teamworking skills. I learned to respond to constructive feedback during code reviews, ask colleagues for advice on unfamiliar problems, and communicate with engineers working on different teams.

Tags

Hardware (Digital) Software