← Back to All Placements

Achira Waduge

Chip Verification Infrastructure Intern

Imec Cambridge UK
Cambridge, UK

Summary

I completed a 6-month industrial placement where I worked in a research and development environment focused on advanced electronics. During the placement, I was involved in a project aimed at improving the way chips are tested before they are manufactured. The testing process is a key aspect of chip design because it ensures a chip works correctly and safely before the expensive process of manufacturing it. The tool I designed automates a large part of the testing process which makes it faster, more reliable and more reusable. It can also be used to test chips at different stages, from simulations on a computer to the real life chip when it is printed. The experience gave me a valuable insight into working in an industrial setting and showed me how engineering teams develop practical tools that support real-world hardware design.

Role and Contributions

My main role was to design and develop the software infrastructure that is used to support the testing of demonstrator chips. The design was created with the aim to be used for multiple chips being designed by the company, and for different verification stages. I worked primarily in Python and created a modular design which meant the design had a very clear organisation and different aspects were cleanly separated. The core of the design was a set of functions that performed fundamental register-level operations, like reading or writing, and complex testing algorithms were built by using these basic operations. An important role of mine was developing the design and applying a rigorous approach to the testing and debugging aspects of it. To do this, I created a simulation environment which allowed me to test the communication of my design with a chip and ensure data was being sent and received correctly. Once this was verified, I moved on to implementing my design with some hardware that would emulate how the chip operates and performed the same testing procedure at this stage. Throughout the process, I also documented my work and decisions, discussed improvements with my colleagues and presented my work to members of various teams.

Technical Skills

During the placement, I applied and developed technical skills in programming, digital electronics and verification. My main programming language was Python, which I used to build a modular framework for carrying out automated chip-testing operations. I learned how to design software with clear separation between reusable parts and project-specific parts. This involved creating simple building blocks that could be combined to perform more complex tasks. I also gained experience working with structured configuration files, including YAML which was used to describe the register map, and learned how software can interact with models of electronic hardware. I also used a simulation tool (cocotb) to connect my Python code to a simulated chip and learnt how to control signals during testing. When transferring my design to test with hardware emulations I also used tools like Vivado and PYNQ, which helper me create the correct testing environment. Overall, I also developed skills like debugging, code organisation and analytically approaching a technical problem to build towards creating the final design.

Professional Skills

The placement significantly improved my ability to work independently. I was responsible for most of the project I worked on so I had to organise my own time, plan out my tasks between meetings and work towards agreed deadlines without constant supervision. I also learned to recognise when I did need support and to seek help early, without wasting time trying to solve problems by myself. I also developed communication skills by discussing my work in regular meetings with various team members. These meetings allowed me to explain technical concepts and consider alternative approaches to my work. I also gave some presentations about my ongoing work which increased my confidence to speak to larger groups and allowed me to talk about my project using different levels of technical knowledge. My ability to collaborate with team members also improved, both in person and virtually, which was enhanced by the fact that Imec is based in Leuven, Belgium, so I had to utilise Microsoft Teams for the majority of this.

Tags

Software Hardware (Digital)