In reply to Michael54:
Clocking blocks are certainly optional. There are more useful in poorly written RTL that do not properly use non-blocking assignments in sequential logic, or in gate-level simulations with inaccurate delays.
My DVCon paper “The missing link: the testbench to DUT connection” has a brief mention of them.