3 ms·
FPGAs are heterogeneous, and the tools are all about getting the maximum utilization of a given chip's features while also routing signals to get the fastest re
by mikewarot 2y ago
FPGAs are heterogeneous, and the tools are all about getting the maximum utilization of a given chip's features while also routing signals to get the fastest reliable cycle times. Compile times sometimes stretch out into overnight sessions.
By making each cell identical you remove most of the floor planning concerns. By latching the data from each cell, you remove timing concerns, and deliver deterministic performance.
This has other benefits like being possible to route around a bad cell, or to build a "wall" around a given section of code.
The emulator will always give correct output baring hardware failure.
I hope to get through tiny Tapeout and have a chip before the end of the year.
As for programming, the code has to compile to a directed acyclic graph of boolean logical operations. I suspect that it would be fairly easy to use as a backend for tinygrad or perhaps LLVM as a stretch goal.
- jeffreygoesto 2y agoAh thanks! Reminds me of systolic arrays somehow. Good luck and hopefully there are no bugs in your design!