An extract from "Embedded systems dictionary" by Jack Ganssle and Michael Barr:
"Unfortunately, as hardware design more and more resembles software development, the hardware inherits all of software's evils: late delivery, bugs and misinterpreted specs."
If that is the case, the problem of software doesn't lie in the instrinsic properties of software components but in the development process.
Hardware blocks developed as parts of FPGAs have the same functional characteristics as discrete equivalent hardware parts. If they suffer from software evil's, this is only due to the development process.
Is it be possible to improve the development process of harware blocks so that they don't suffer from these evils and would it be possible to apply these techniques to software? Is it a problem of costs only?