journal · 2026-04-27

Project 01 — RTL pass on the first try

Wrote the 4-bit ALU plus an exhaustive testbench. 1024/1024 vectors match the reference model on the first compile.

Icarus did warn that top.v has no \timescale` — that’s deliberate. Putting timescale in design modules locks them to a particular sim scale; the testbench is where time lives. The warning is informational and the right answer is to ignore it.

What’s in src/top.v

What’s in test/tb.v

Pre-emptive worry

Project 01 deliberately has no clock. The LibreLane flow may not be happy about that. Set RUN_CTS: false and omit CLOCK_PORT in the config; if the floorplan/STA stages fall over anyway, the documented fallback is to wrap the ALU with a single output register and harden the wrapper.

That’s a problem for next session.

Where we are now

Repo is on master at gitlab.daringbit.com:josh/librelane-playground, GitLab CI builds the Astro site and deploys to Pages on master. LibreLane is not yet installed — that’s the next step. The Nix-based install is the recommended path per 00_environment/TOOLCHAIN_REPORT.md.

Toolchain that’s already on this box: nix, docker, yosys 0.16, iverilog 13, python3, make. Not yet installed: verilator, gtkwave, klayout, openroad, magic, netgen, RISC-V toolchain. LibreLane’s Nix flake should pull most of those.

see also: project 01_comb_logic