In reply to dave_59:
So it is legal to assign NBA $urandom? That is the crux of Cadence’s response to me, that it is wrong to do.
This use model of having $urandom call inside a non-blocking assignment is wrong.
The scheduling semantics of System Verilog dictates that the RHS is calculated and sampled once in the “inactive region” and then in the “NBA region” it’s assigned the ALL of the elements of the foreach at the same time!