As designs get more complex and design cycles fail to lengthen to accommodate them, the idea of developing hardware and software in parallel starts to seem like a good idea. But as with many good ideas, implementation is the tricky part.
One problem has been that hardware simulation runs so much more slowly than instruction set simulation that it's hard to crank though enough cycles to learn anything useful. A number of products have come to market to address the problem, but there are no clear winners.
While this problem exists almost exclusively in the realm of system-on-chip design, the inexorable flow toward higher integration will eventually sweep in a great many design projects.
For educational purposes, we are offering an article on virtual prototyping, which addresses the issue of how to develop hardware and software in parallel. The author is the CEO of a company that provides system-level design tools. Let me know if you'd like to see more articles of this type.