Verifcation lies at the core of designing and packaging RTL designs, whether IPs or physical chips. UVM lies at the heart of this, being one of the main formal verification methodologies utilized in industry. This aims to provide an introduction to those starting out from my own experiences.
The Limitations of 8-bit
When I started building my custom synthesizer, I realized the ATmega328P simply didn't have the processing power or the ADC resolution I needed for high-fidelity audio.
"Transitioning to ARM Cortex-M architecture felt like taking off training wheels. It was daunting, but the control it afforded was unparalleled."
Setting up the Toolchain
Instead of relying on the Arduino IDE, I moved to STM32CubeIDE. Here is a quick example of how setting up a GPIO pin looks radically different when manipulating the registers directly:
// Enabling GPIOA clock
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
// Setting PA5 as output
GPIOA->MODER |= GPIO_MODER_MODER5_0;
GPIOA->MODER &= ~GPIO_MODER_MODER5_1;
It requires more boilerplate, but understanding the hardware at this level is exactly what I am at university to learn.