Blog
Technical writing on hardware design, programming languages, and systems thinking.
2026-09-29
macro_gen Dev Log #2: Sizing Combinational Logic by Logical Effort
macro_gen now sizes arbitrary combinational CMOS logic by logical
effort, relative to the inverter characterized in part 1, and buffers
outputs to log4(F) stages. Method with a fully worked example,
calibration of the model constants, and a comparison against SPICE on
eleven SKY130 benchmarks.
2026-09-20
macro_gen Dev Log #1: Teaching a Computer to Size an Inverter, Honestly
Part 1 of an ongoing series on macro_gen, an automated
cell-characterization tool. Why automate this space, how today’s sizing
loop actually works in Rust, real ngspice results from varying Vinv, and
where evolutionary search, game theory, and GNNs come in next.
2025-05-13
How to shift verification, exploration, and design entry left, catching
bugs at spec time instead of silicon time.
2025-04-08
Scheduling, ILP, and a Bluespec Bug That Ate 64 GB of RAM
From the formal theory of scheduling in architectural synthesis to a
production bug where an O(n²) ILP solver consumed 64 GB and 15 hours on
10,000 BVI signals.
2024-11-17
IP-XACT: The Hero We Need, the Villain We Deserve?
A deep dive into IP-XACT, exploring its role in modern SoC design and
why it’s both loved and feared by engineers.