--- Quote Start ---
Yes you are right I have done only basic coding so far, nothing real world. One day perhaps... if I manage to survive all the FPGA learning. It's just that I've started learning about hardware programming around 4 months ago, but I feel that I spend most of my time learning how to use tools rather than actually doing anything productive. First it was Quartus, then SOPC, then NIOS SBT, now ModelSim.... But I guess it's the way to learn step by step.
--- Quote End ---
Trust me, it does not get any easier ... the tools change almost as fast as you learn them ... and then a new FPGA comes out and you have to start reading data sheets from-scratch again ...
It does make for good job security though :)
--- Quote Start ---
Talking about learning, my current testbench in sv for my ST component doesn't do anything yet apart from just displaying a test message. I am trying to write an actual testbench with meaningful inputs.. be prepared for more beginner questions soon :)
--- Quote End ---
There are really two types of testbenches; interactive and automatic. An interactive testbench is one that exercises your design, but does not really check anything, eg., injects noise into a digital filter, writes the results to file, and then finishes. In this type of design, its up to you to check the results using say MATLAB to check the power spectrum. An automated testbench also checks the result, i.e., you have a "golden reference" output data file, and the testbench checks that the golden reference results were reproduced by the design. This last testbench is very useful as you don't need to look at the design once you've finished it, so long as you run the testbench, eg. using a makefile "make check" command. If you change a component that the design uses, and you break it, when you run the testbench it will fail, and you can go and fix the bug you just introduced.
Keep that in mind while designing.
Cheers,
Dave