# Introduction Like many others, we had the whole family working and schooling from home during the peak of the COVID-19 pandemic in 2020/2021. The performance of my home network was somewhat inconsistent during multiple video calls happening concurrently. This prompted a complete rethink of the network, helped along by the fact that we were also planning some home remodeling at the time. I am not a network engineer, but have played around enough over the years to have a good grasp of basic concepts.
A typical System-on-Chip (or SoC) in a modern smartphone, tablet, or a laptop will have a structure like this:
You may have one ore more CPU cores, some number of GPU cores, a multimedia controller (for hardware accelerated video encode/decode). Modern SoCs may also include a neural network engine (NPU) for inferencing. The chip will also include one or more memory controllers (for DRAM) and several I/O controllers (for WiFi, Bluetooth, cellular modem, etc.
As a hardware engineer, most of the code that I write is either in assembly or low-level C (apart from the shell scripts to run simulation jobs or Perl/Python to parse log files). I am therefore very familiar with the volatile type qualifier in the C language. Referring to my well-worn copy of the Kernighan and Ritchie “The C Programming Language” book, the section on volatile states:
The purpose of volatile is to force an implementation to suppress optimization that could otherwise occur.
Recently, I had a big debate with a few friends about teaching programming to kids. I was talking to them about a Python coding exercise that I was working on with my son. Several of these friends insisted that there is no point in learning programming anymore, since AI is going to write the code. Now, these are all very smart people, some of whom are in the tech industry, and whose opinions I value a lot.
In my very first “real” job after graduate school, a few of us who had joined recently were given an overview of the server processor chip we were going to work on. In that overview session, the principal architect of the chip said, “No matter what area you are working on, 85% of your time will be spent on debugging something that isn’t working the way it was intended. So get good at debugging to root cause.
This is a blog to document some of my personal projects and writings about chip design topics. I am trying out Hugo static site generator to create and maintain this blog. Let’s see how this journey unfolds …