In reply to dave_59:
Playing a bit more, I think my problem is more fundamental. By involving a function call in the constraint, the constraints no longer “interact bidirectionally”. I think this is where things are falling down. The do_sum() operation which selectively sums my random variables breaks the bidirectional nature of the constraints (As 18.5.12 in the SystemVerilog spec notes.)
I’m still stuck but think I understand what is happening…
Regards,
Mark