Skip to content
View filmil's full-sized avatar

Highlights

  • Pro

Block or report filmil

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
filmil/README.md

Filip Filmar

I am a software engineer at Google. In my own time I build programmable hardware, and the build systems around it. Most of that work is open source, and I write about it on hdlfactory.com.

This page lists my public work from October 2025 to October 2026.

Hardware and RISC-V

  • TxHDL is a hardware description language written as a Rust library, built with Dragiša (dj3maj). A design is ordinary async Rust, and the library lowers it to Verilog and VHDL.
    • Vreteno is the RV32IMAC RISC-V core written in it. It runs at 100 MHz on an Artix-7 board with 1 GiB of DDR3. Mainline Linux boots on it to a BusyBox shell, with virtual memory on, and Doom runs on it with HDMI output.
    • Razboj is a minimal GPU in about a hundred lines of TxHDL. It reads a display list and draws rectangles and triangles into a framebuffer.
    • vreteno-conformance runs RISC-V International's architectural tests (ACT4) on the newest core every day. The Sail reference model checks each result, and each daily report is published as a PDF.
  • Cocoapuffs is a RISC-V system on chip on the same Artix-7 board, built around the 64-bit NOEL-V core. Fuchsia's Zircon kernel boots on it end to end, from OpenSBI to userspace.
  • wdbcvt reads Vivado's waveform database (.wdb), a format AMD does not document. It converts the files to FST and SQLite, and handles over 95% of the format's features, as measured on behavioral VHDL, Verilog and SystemVerilog.

Bazel for programmable hardware

I build FPGA designs with Bazel, from the toolchain up, so that a fresh machine builds a bitstream with one command.

Hermetic builds

A hermetic build uses only tools it fetched itself, pinned by checksum, and nothing installed on the host.

In that period I published 43 module releases to the Bazel Central Registry, across the rule sets above.

Contributions to other projects

  • google/rust_icu, the Rust bindings for ICU, which I maintain: 52 merged changes in that period. I moved the build to Bazel, added ICU 74 to 77, and automated the releases. I also fixed two memory safety bugs in message formatting: a read past the end of the arguments, and strings passed without a terminating null.
  • Smaller fixes: a universal macOS binary for the rain BitTorrent client, support for the Alinx AX7A200B board in fusesoc/blinky, and a documentation fix in uber/hermetic_cc_toolchain.

Other projects

  • synod is a Paxos agent in Go. It keeps a key-value store in agreement across peers that join at any time.
  • mkill watches memory use. When memory runs low, it stops the program whose use grew fastest, before the kernel's out-of-memory killer has to act.
  • chrome-auto-reload is a Chrome extension that reloads a tab on a timer. It has no access to page content and makes no network requests.

Writing

I published 38 articles on hdlfactory.com since October 2025. A selection:

Skills

  • Languages: Rust, Go, C++, Python, Starlark, shell, VHDL, Verilog and SystemVerilog.
  • Hardware: AMD 7-series FPGAs, Vivado, Yosys and nextpnr, Verilator, NVC and GHDL, RISC-V cores and boot chains (OpenSBI, Linux, Zircon).
  • Build and operations: Bazel and bzlmod, Nix, Kubernetes, GitHub Actions and Forgejo Actions.

Also

I am a licensed real estate agent in California. My real estate site is re.filmar.us.

Contact

Pinned Loading

  1. bazel-ebook bazel-ebook Public

    bazel build rules for creating ebooks in PDF, EPUB and AZW3 format

    Starlark 13 2

  2. synod synod Public

    A distributed Paxos coordination agent

    Go

  3. lit2md lit2md Public

    A simplistic but useful literate code to markdown converter

    Go 1

  4. bazel-registry bazel-registry Public

    A Bazel registry for my work

    HTML

  5. vivado-docker vivado-docker Public

    Docker installation of Vivado tooling

    Dockerfile 61 13

  6. bazel-bats bazel-bats Public

    bazel-bats: bazel test rules for the BATS testing framework (based on bats-core)

    Starlark 12 5