Richard Lin

Logo

richard.lin at berkeley.edu

I'm interested in improving electronics design, by making it more accessible and usable for novices, and more efficient for experts. My primary research focuses on board-level design, emphasizing design re-use and abstraction, and blending techniques from the human-computer interaction (HCI), programming languages (PL), and electrical engineering (EE) domains. I also continue to work on chip- and FPGA-level digital logic design languages, similarly applying a blend of HCI and PL techniques to produce usable tools.

I am a postdoc at UCLA, as part of Ankur Mehta's LEMUR lab. Previously, I completed my PhD at UC Berkeley, co-advised by by Björn Hartmann and Elad Alon.

View My GitHub Profile

Research

Board-level Electronics Design

My main work is on bringing the large-scale, community-driven, library-based design processes seen in software development to circuit board (PCB) design to make electronics design easier, faster, and much more fun for everyone. The central part of this system is a hardware description language (HDL) and compiler for circuit design that adapts great ideas from software engineering to hardware design, for example using code to generate and specialize circuits to different applications, and using type systems to describe generic parts and subcircuits. These publications describe some of the individual research ideas that are part of this system.

This project is fully open-source and actively developed! Project repository and source code are here, including a getting started tutorial. Give it a try and let me know what you think!

Once in a while, updates are posted to the LEMUR lab’s blog.

Research Papers

Short papers

Chip-level Digital Design

These publications are all part of the Chisel project, an open-source and production-tested hardware description language (HDL) that provides principled generators (think metaprogramming Verilog) for digital logic design.

Related projects (without standalone publications)

Other

Teaching

EE192 (Mechatronics Design Lab), UC Berkeley

Spring 2020, co-Graduate Student Instructor
Spring 2015, Graduate Student Instructor (Outstanding GSI Award)

EE192 is an undergraduate design project class, where students build a line-following ~1:10 scale race car. Students start from a stock chassis with motor and servo, and design and assemble custom circuit boards for power conversion and logic, and write the firmware including controls loops (typically PID). Students work in groups of three, and the semester-long interdisciplinary project involves hands-on, practical mechanical engineering, electrical engineering, and computer science.

In 2015, my focus was on developing a re-usable slide deck for discussion / lab sections and on writing a live telemetry visualization system to encourage students to work with data instead of debugging by trial-and-error 🤦‍.

In 2020 and along with co-GSI Derek Chou, we focused on refactoring the course to get students to a working car as soon as possible by providing the first iteration electronics as a circuit board kit. We hoped a reference circuit board would help demonstrate the implicit knowledge of what makes good circuit boards, while going through the assembly process would provide students design-for-manufacturing (DFM) intuition when they build their own. While we didn’t know it at the beginning of the semester, this turned out to be invaluable for the pandemic: all students had working cars and controls by the time the lockdown hit, and we consider this an extremely lucky success. For the rest of the semester, we shifted focus to controls and learning (track memorization) in simulation in V-REP.

Education

Other

CalSol

I’ve been part of the UC Berkeley Solar Vehicle Team (we design, build, test, and race solar racing cars) since my first year in undergraduate. Some of our design materials are open source on GitHub, including firmware shared libraries and our hands-on electronics training lab for new members.

There is a good deal of crossover between my research projects and CalSol projects, with the active battery balancing system (on Zephyr) containing RTL written in Chisel and tested with ChiselTest, and with the lights controller and datalogger on Tachyon) having their PCBs designed in Polymorphic Blocks.

Engineering aside, I’ve served as treasurer for many years, automating reimbursements paperwork generation with Python. Unsurprisingly, it turns out that purchasing and reimbursements are kind of important for a physical project as large as CalSol.