i implemented Ascon-Hash256 in Amaranth! (as well as laid the groundwork for the rest of Ascon family functions, including Ascon-AEAD128)

it comes at 1268 LUTs for iCE40 in the "compact" configuration, processing an average of 5.3 bit/cycle. a little expensive, but modern and cheaper than many better known alternatives

check out how compact it is: the entire implementation is less than 200 lines of Amaranth code, and it is fully pipelined with no wait states! (other than the ones explicitly inserted as an area/throughput tradeoff)

https://codeberg.org/whitequark/amaranth-ascon/src/branch/main/amaranth_ascon/__init__.py

Cookie monster!

@whitequark thanks! Your code is very good and I find it useful for learning. Keep it up!