Week 9 Codefest - zanzibarcircuit/ECE510 GitHub Wiki

Breakthrough

We have a working (mini) decoder! I went through step by step and had Gemini integrate each layer step by step and write a testbench for each until I was sure each integrated layer was working. My final working design takes 48 total cycles, and we get the following speedups: image

New Speedups

The total time for 100 Python runs of this network was 105 μs. This design takes 4.8 μs with the clock speed determined from the OpenLane run, which means we have around 100 μs to pipe the values out with our SPI interface. I've been working on that, and the initial estimate I got to transfer the 16 16-bit values out was 27.2 μs. I'm currently trying to update the design to add in an SPI interface but am having a lot of trouble. You think it would be easy, but it needs to be integrated into the state machine of the output so we can continuously pipe values out.

Ongoing Work

I had a working SPI module last week, but it's been tough integrating. I've tried integrating that specifically with no success, so am letting Gemini try to do it on its own. This has proven to be very difficult with lots of syntax errors. One thing that has helped overall is telling the LLM to parameterize or simplify where necessary so it's not doing these huge equations inline. The other thing (and maybe the primary thing) that helps it work is keeping all your modules in a single file. That way it keeps the entire scope in mind while debugging. It also causes the output to take minutes to generate, which is unfortunate, but I haven't had any better way.

Verification and Validation

This is a stretch goal. I would like to have a working accelerator first and foremost just by spot-checking it with testbenches. This has been difficult enough in its own right, and I'm not sure I'll be able to really bang on it with cocotb, but as I said, it's added to the stretch goals.