Design For Verification holds the key here. Nothing would be far more
important than leveraging the designers intention to value add on verification efforts.
There are lots of technology and tools to help in that area which add value to this
effort. Mainly focusing on assertions, multilevel design. Also formal techniques which
are suitable for white-box testing eliminate simple functional bugs at block level.
An interesting paper by Synopsys on this topic.