← Back to All Placements

Lucas Venetz

Hardware Engineering Intern

Arm
Cambridge

Summary

I worked across CPU design teams on RTL development, verification and tooling. My initial work focused on the SME2 co-processor, where I simplified part of the register-renaming logic and evaluated the resulting functional, timing and area trade-offs. I then improved load/store instruction formal verification by shifting interface checks and developing state-tracking logic. In the second half of my placement, I joined the DynamIQ Shared Unit team, where I worked on a decoder tool and contributed to compile-time optimisations for some of the transport logic.

Role and Contributions

My role primarily involved contributing to RTL development across two CPU design teams. On the SME2 co-processor, I modified register-renaming and retirement logic to remove certain implementation constraints and generalise dependency handling. I was able to run an implementation trial on the change to explore the impact on power, performance and area. I also relocated load/store validity checks to the CPU-co-processor interface and implemented additional decoding and state tracking to support them. This involved a lot of analysis of simulation and formal failures, refining the design to handle corner cases, and collaborating with engineers familiar with the architecture. In the DSU team, I developed a configurable Python tool for decoding CHI protocol packets, and contributed to compile-time optimisations to configurable CHI transport logic.

Technical Skills

I became more confident in Git-based development workflows, and gained a lot of experience navigating and modifying large, unfamiliar codebases considering I had to work across two different teams. I learned to use AI-assisted development tools and coding agents more effectively to speedup codebase exploration, identify relevant modules for a change, and to support debugging through waveform analysis. I also strengthened my SystemVerilog skills considerably and became more familiar with verification and implementation flows, and improved my ability to interpret tool results.

Professional Skills

The placement reinforced my communication, teamwork and independent problem-solving skills. I learned to investigate issues thoroughly before approaching colleagues, allowing me to ask more focused questions and have more productive technical discussions. Code review and collaboration with engineers from different teams taught me to explain design problems clearly and how to adapt the level of detail to the audience. The placement also improved my ability to manage uncertainty, learn new systems quickly and to take ownership of debugging and implementation tasks.

Tags

Hardware (Digital)