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:

  1. Make sure that you use yield from when calling generator functions in tests - e.g. TestbenchIO functions (notable exception: yield Settle() instead of yield from Settle())

  2. If a signal has an unexpected value in tests try adding yield Settle() right before you read it.

  3. Make sure you don’t do .eq on two records with different layouts. Use assign from coreblocks.utils instead.

  4. Make sure all amaranth statements are added to some domain.

  5. Check if your code doesn’t have any combinational loops - especially if your simulation hangs.

Please extend this list if you spot yourself doing an easy-to-fix mistake.