innologic doesn't properly allow seed specification with $random.
$random(seed) should change the value of seed so that the next call to $random(seed) will deliver a different pseudo-random value.
Currently ESP (XV v2.2.0) doesn't set the seed, so the random call returns the same value each time:
-------------------------------------------------- module top; integer seed; initial seed = 42; initial begin $write("hey %h %h\n",$random(seed),seed); $write("hey %h %h\n",$random(seed),seed); $write("hey %h %h\n",$random(seed),seed); $write("hey %h %h\n",$random(seed),seed); end endmodule --------------------------------------------------(Fixed in 2.3+)