Hi,
As per my understanding race condition doesn’t happen with raw RTL simulation since there is no timing information involved in that. It happens with netlist simulation.
Clocking block inserts one D-FF. So according to library information u need to specify sampling timing window(setup & hold) in order to avoid race condition.
Together program block and clocking help us to avoid racing condition in netlist simulation.