Bluespec Extension for VS Code (September 2023)

I wrote an extension for Visual Studio Code to implement high-quality syntax highlighting for Bluespec on par with that of mainstream languages. I use this extension to write Bluespec in VS Code, and I’ve published it to the VS Code extensions Marketplace for others in research, education, and industry to use.

Blurred VS code screenshot with the words "bluespec system verilog for_vs_code" sharp.

A cute little display banner for my extension on the VS Code extensions Marketplace.

Bluespec Lexer (September 2023)

I wrote a comprehensive lexer for Bluespec SystemVerilog on Rouge, the syntax highlighting engine for Jekyll. My lexer can distinguish between state-changing and purely functional expressions, and it can process even the most complex Bluespec. I use this lexer to render Bluespec excerpts on my website.

Three side-by-side excerpts of Bluespec code with syntax highlighting.

My Bluespec lexer rendering my visual sample on the Rouge viewer. From left to right, the themes are github.dark, base16.dark, and gruv_box.dark.

Superscalar Processor (July 2023)

I wrote a superscalar pipelined processor in Bluespec SystemVerilog (BSV) during Summer 2023 as a continuation of a class project. It features some limited out-of-order processing, a small branch predictor, and some cache improvements. I also wrote some Python and Bash scripts for automated testing and benchmarking.

Pipeline visualization of small function call.

A small function call demonstrating some minor out-of-order behavior. ALU instructions and memory instructions are allowed to slide past each other if there aren’t dependencies. There’s no reorder buffer. [Errata: There should be.] The visualization was made with Konata.

Mini-Eclipse (Jan 2023)

I designed and built a 2D cable robot using C++ on Arduino to control a window shade that moves with the Sun. I also wrote a modest parser and scheduler to issue commands to the system. Before building, I simulated the system using Python.

A triptych of three windows. The left window has the Sun visible and a frowning viewer saying "too bright!" The middle window has the blind drawn near the bottom and a frowning viewer saying "too dark!" The right window has just the Mini-Eclipse system where a blocker covers only the Sun, and a smiling viewer saying "just right!"

In the Boston winter, the Sun hangs close to the ground and makes it difficult for a viewer to enjoy the sky. But pulling down the blind means all the sky above the Sun is blocked. One solution is to block the Sun and only the Sun. With a microcontroller, this blocker can track the Sun over the course of the day, allowing a (stationary) viewer to safely and comfortably enjoy the winter sky all day long.