Skip to content
View filmil's full-sized avatar

Highlights

  • Pro

Block or report filmil

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
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 60 13

  6. bazel-bats bazel-bats Public

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

    Starlark 12 5