Amaranth is a simple-but-expressive hardware description language (the type of language you use to define integrated circuits for FPGAs, ASICs, and similar hardware) implemented as a Python DSL. I’m not the biggest Python fan, but Amaranth is worth it – even though it’s in heavy development and its documentation is incomplete, it’s by far the most comprehensible HDL I’ve ever used, and I’ve tried many of them.

its documentation is incomplete since the language is under heavy development, but its language guide is still the best gentle introduction to HDL concepts I’ve read, and its tutorials are written for an older version of the language (sometimes called nMigen) but are still excellent – in particular, Robert Baruch’s tutorials combine design fundamentals with formal verification (which itself is usually considered an advanced technique, but Amaranth streamlines it), and the Vivonomicon RISC-V tutorials are worth a read too