> Related: https://electronics.stackexchange.com/questions/15811/where-to-start-when-considering-making-a-gpu

I'm a pretty strong programmer, but I'm very new to hardware design, so apologies if I use strange terminology.

My long-term goal is to write a custom GPU, but I'm starting out with a basic framebuffer to get comfortable with hardware design. Here's a rundown of what I'm expecting to do with my project:

1. Receive a frame of pixel data on a bus
2. Store frame in a stack on the hardware
3. Output frames at the monitor refresh rate

I can figure out #1 and #2, but I've never done anything like #3. I'm thinking the optimal development setup would be to have a virtual display that connects to the output pins of my design (VGA or DVI) and displays it in a window on my computer. I could probably do this with an FPGA and a small LCD, but I'm thinking it will be easier for development (esp. travelling) to have it all simulated.

Is there already a solution for this? If so, what can I search for to get more information about it? If not, what is the usual development setup for something like this?

I'm developing on Linux using Icarus Verilog, so a solution that works with that would be preferred.