4 ms·
First of all, that's not a GPU, it's just a simple video interface. While an impressive feat (a complex picture in just a few lines of C++) it's sadly very mis
by FullyFunctional 4y ago
First of all, that's not a GPU, it's just a simple video interface.
While an impressive feat (a complex picture in just a few lines of C++) it's sadly very misleading. His design relies on evaluating one big expensive logic cloud for every pixel. That same design would be only fractionally more complex in an HDL (like SystemVerilog). However this naive approach doesn't scale at all as the time window for the logic window is fixed and there's only so much you can do in each step. You quickly need to start pipelining which Vivado can do, but where the abstraction falls apart completely is when datapaths have loops or the pipeline has complicated control (even a simple five-stage cpu pipeline).
I'm been waiting for a better approach for 20+ years. Examples that I think better handles complex pipelines (without just sticking together the whole thing manually, like Verilog, Chisel, MyHDL, etc) include Handel-C and Silice. I hope some HNers will tell me I'm wrong and share a much better option. (I would love something that fells like Rust but can describe complex pipelines).