Problem checklist
If something doesn’t work and you’re puzzled as to why - go through this checklist to see if any of these points apply in your case:
Make sure that you use
awaitwhen calling async functions in tests - e.g.TestbenchIOfunctions.Make sure you don’t do
.eqon two structures with different layouts. Useassignfromtransactron.utilsinstead.Make sure all Amaranth statements are added to some domain.
Check if your code doesn’t have any combinational loops - especially if your simulation hangs. Tracing with Verilator may help in complex cases.
Make sure you are not copying Signal object instances instead of creating new ones - easy to make mistake:
[Signal(...)] * 42should be[Signal(...) for _ in range(42)].
Please extend this list if you spot yourself doing an easy-to-fix mistake.