White box and black box functional coverage

I 've referred some online material for this, but i could not get clear idea on it.

In reply to bhaskar_tzp:

“Black box” testing means you have no visibility into, nor knowledge of the implementation of your DUT. Your tests cover the same requirements given to the designer.

“White box” testing allows some visibility into your DUT to verify certain aspects of the implementation. Typically used on internal memories, FIFOs and state machines.

In reply to bhaskar_tzp:

Dave has already given a basic idea about it.

I would like to add one more dimension to it.

Functional coverage “definition” and “implementation” can both be distinguished as black box and white box.

Dave’s definition is more towards the definition. Basically functional coverage focused on requirements specifications is black box. Functional coverage focused on the micro-architecture or implementation level details is white box.

However please note in terms of functional coverage implementation that is “what to sample” and “when to sample” the black box coverage items can also be implemented in a white box way. For example in a communication protocol whether all the types of packets are transmitted can be covered either using some signals from DUT or test bench callbacks/ports.