dragonlock2.github.io/_posts/2022/2022-05-14-2022-courses.md
2024-02-04 03:45:42 -08:00

29 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 2022 Courses
date: 2022-05-04
categories: school
excerpt: Finally graduated! The end of one amazing chapter and the start of another.
header:
teaser: /assets/img/2022/tapeout.png
---
This last semester was definitely a fight to complete despite taking only 3 classes. I pulled more all-nighters and EECSd it more times than all of my past semesters combined. For all of my hard work, this was certainly one of my most interesting semesters. While I am sad to be graduating, especially after all of the time lost to COVID, it will be exciting to see what the next chapter of my life has in store. That next chapter will start in July where Ill be a Tesla firmware engineer! Ill be taking a well deserved vacation in the interlude.
#### CS152 Computer Architecture and Engineering
While I didnt go to a single lecture or discussion past the first few, this was an eye-opening class in learning how modern CPUs are designed and how they can be so performant. Topics ranging from out-of-order processors, register renaming, branch prediction, to cache coherence all ended up being conceptually pretty simple and not just magic. My favorite part was finally implementing a Spectre attack in simulation and having it work perfectly. The workload was quite light and relatively rewarding. Much like CS161, its a class that doesnt consume much time and fits well into any schedule.
#### EE142 Integrated Circuits for Communications
Much like its prerequisite EE105, this was easily one of the most difficult classes Ive ever taken. The workload was manageable, but the material went over my head more times than not. Taking the class for a grade really did not help things. While the initial material on transmission lines, waves, noise, and distortion wasnt terrible to pick up, once we got to amplifiers, mixers, and oscillators I was completely out of my element. I really shouldve taken EE140 prior. Still, I learned a good amount in this class. The labs were really fun and rewarding and the TAs were amazing. I cant say much about the lectures and discussions since I didnt go to a single one past the first few, but Id wager they were solid too. Highly recommended if youre into analog circuits but this was not the class for me.
#### EE194 Advanced Topics in Circuit Design (22nm SoC for IoT)
Mostly due to its open-ended nature, this was one of the heaviest but most rewarding classes Ive ever taken. Not for the faint of heart, this class really opened up my eyes to the wonders of chip design and just how much Berkeley has contributed to the field. The goal of the class is to take a team of ~20 undergraduate and graduate students and do a chip “tapeout”. Since our class had ~40 students, we split into two teams, one doing an ML accelerator chip and one doing a mixed signal chip. In what ended up being a perfect match, I was on the RF digital team for the mixed signal chip which was tasked with validating and updating the past BLE module and adding 802.15.4 support.
Since the previous teams work was understandably rushed and poorly documented, I ended up teaching myself how the entire thing was designed and implemented. Since I hate MATLAB, I wrote Python simulations to design the DSP pathway and CDR and figure out just how low an SNR we could get away with. Transferring that design to RTL in Chisel was daunting at first but ended up being pretty straightforward. At the end of the day, I was quite proud of the work I did.
I had so much fun with Chisel that I decided to spend a couple of days not studying for the EE142 final and instead developing a workflow for deploying Chisel on FPGAs in MacOS. Since Im graduating and wont have VMware anymore, I figured out how to load Vivado in a Docker image and compile the Chisel-generated Verilog there. Check it out!
<https://github.com/dragonlock2/chivado>