Designing a CPU in VHDL, Part 2: Xilinx ISE Suite, Register File, Testing
labs.domipheus.com
labs.domipheus.com
- Verilator (Verilog) -- http://www.veripool.org/wiki/verilator
- Icarus Verilog -- http://iverilog.icarus.com/
- GHDL (VHDL) -- http://home.gna.org/ghdl/
- GTKWave (waveform viewer) -- http://gtkwave.sourceforge.net/
- For people who want to be a bit more cutting edge, there's also Chisel: https://chisel.eecs.berkeley.edu/
If you're an emacs person and using Verilog, I'd also recommend Verilog Mode: http://www.veripool.org/wiki/verilog-modeI invoke the vendor FPGA synthesis tools from the command line with my makefiles, which saves me the hassle of using their GUIs
The one case where I think the GUI is useful is is the netlist viewer, which can help you understand what the synthesis tools are producing. This is especially helpful when starting out.
The free versions of Modelsim are "crippled" by slowing down interpretation after crossing a threshold of executable lines but they no longer impose a 3x slowdown for code under the threshold. It is quite usable for the scale of designs most people would do on their own and you have to work to hit the LOC threshold. Other missing features are the price you pay for not paying anything.
Some tools are faster than others, but eventually as your design grows they are all slow.
At least then you can use whatever tool you please.
I find the post place-and-route netlist viewer inscrutable. I have debugged some synthesis issues by generating the post synthesis simulation model in Verilog and digging through that in a text editor. Maybe that's a weird way to do it, but I find it much faster and easier, especially when I know the signal names I'm looking for.
My main problem is with the Altera GUI tools. It's a personal preference thing obviously, but I'm pretty attached to my editor, as are most people.
I am amazed with the functionality of the free version of ISE (both in simulation and floor plan design). I have used this software to prototype and implement a 3rd order pipelined sigma-delta modulator on a FPGA, and several simple CPLD projects which didn't require simulation.
The simulator is far from crippled. I was able to read input from a binary test vector file into the simulator, run it though the model, and save the output to file. I found this very useful during development to compare the VHDL implementation with the prototype I had written in C.