PyCon JP 2025 Logo
広島国際会議場
JPEN
Daniel Moisset

Daniel Moisset

How I Built a CPU for Fun (and Didn’t Learn Verilog)

ダリア2EN
02:05 - 02:3530min
DAY 2
09/27
SAT

Python can run on a regular computer or on a general purpose microcontroller. But as a hobbyist, I was curious about how to design a completely custom device, which led me into the FPGA world. Traditionally, FPGA programming requires learning VHDL or Verilog, but there’s a Pythonic alternative: Amaranth. This powerful open-source library lets you describe digital circuits in Python and load them into affordable FPGA boards. In this presentation, I’ll share a high-level look at the development process using Amaranth, as well as provide demos, including one of a simple CPU built from scratch. If you’re curious about hardware or eager to explore beyond software, this talk will show how Python can open that door.


トーク詳細 / Description

This talk is an invitation to explore hardware through the lens of Python. I'll share my journey as a software engineer stepping into the world of FPGAs — not through Verilog, but via Amaranth, a Python-based hardware description library. I’m approaching this as a hobbyist curious about expanding my knowledge and building fun toys, rather than polished products — though Amaranth is certainly powerful enough for “real” projects.

I’ll walk through the tools and process I used to build a small homebrew CPU, inspired by the SAP-1 from Malvino & Brown’s “Digital Computer Electronics.” We’ll look at how to write and integrate design components, interface with a Tang Nano FPGA board, and connect to external hardware. I’ll share photos, videos, and — live-demo gods willing — a real working device.

This session isn’t a step-by-step tutorial, but a guided tour meant to spark your curiosity. If you enjoy Python and like building things, you might just discover a new playground.

Daniel Moisset

Daniel Moisset

プロフィール

I'm a Latin American expat in London. After 20ys of background as an entrepreneur, software engineer and project leader, I'm currently training engineers. Most of my professional career has been marked by a love for Python and good engineering. I'm deeply interested in compiler and language design, and places were CS theory and engineering practice touch each other closely.

Non professionally, I'm a self-taught maker with electronics, a bad piano player, a husband, a Dungeon Master, and a cat herder. Preferred pronouns are he/him.