Difference between behavioral modeling and RTL coding? Is testbench a behavioral model?

I usually heard these two - behavioral modeling and RTL coding. I tried to research in Google and what I found out that the difference between the two is that behavioural modeling is not synthesizable but RTL coding is synthesizable. Is this correct? If it is, then by this definition, can I safely say that writing a testbench is behavioural modeling?

For example, when I create a driver I usually used fork statement, wait, events, etc. These are not synthesizable but it describe the behavior of the master.

In reply to Reuben:

Hi,

You are correct here. And yes, testbench is behavioral model of environment around RTL design. Driver when used for emulation uses RTL.

RTL is a level of abstraction to describe hardware. Lower abstraction levels are Gate Level Modeling > Circuit Level Modeling etc.

Behavioral model describes functionality of hardware as well, but it need not be synthesizable.