From RTL written by AI agents to a physical die on silicon - notes from an end-to-end tapeout of a VGA bouncing-text demo using TinyTapeout, the IHP 130nm PDK, an iCEstick FPGA, a Saleae logic analyser, and an honestly embarrassing amount of Claude conversations.
My notes on building a serverless allowance tracker for my 10-year-old; where I owned the architecture and the constraints, and an army of AI agents did most of the typing. An account of what we built and what we learned.
I thought building a RISC-V processor with Chipyard would be straightforward - clone, build, run. Instead, I spent days debugging a halt failure that took me deep into RocketCore's CSR implementation. Here's everything I learned along the way, including the fix you'll need to actually get debugging working.
My notes from building a scalable and production-ready infrastructure in AWS. This post covers the basics of setting up a load-balanced infrastructure using EC2 instances, Elastic Load Balancer, and Auto Scaling Groups.
Explore advanced techniques for interfacing complex C data structures with Python using ctypes and SWIG. Learn how to seamlessly pass complex data structures between C and Python, perform operations on them, and package the Python infrastructure as a shared library or package for streamlined distribution.
In this post, we will explore how to setup a development environment for FreeRTOS on RISCV using QEMU. this includes setting up the RISCV toolchain, QEMU, and building and executing FreeRTOS examples. We will also explore some techniques to debug FreeRTOS applications running on QEMU.
I recently had a discussion about the importance of writing about what you learn. This post delves into why this practice is essential and how it has personally benefited me and why I think you should do it too.
Device trees are typically used in Linux systems to describe the hardware components of a system. However, device trees can be used in bare-metal systems, offering great interoperability and portability. This article describes how to use device trees in bare-metal systems.
In this article we will go over the steps to build a bespoke Debian distro for RISC-V. We will use QEMU to emulate the RISC-V architecture and build a Debian distro for it.
Recently, I experienced a workplace Git incident that compelled me to refresh my understanding of Git internals and learn numerous new aspects about the system. This article is a product of that learning experience, with the hope that even my worst adversaries will never have to endure such pain. I hope you find this article useful and acquire new insights into Git.