jeff.schroeder Posted March 12, 2019 Report Share Posted March 12, 2019 In uvm_create_random_seed() (in uvm_misc.svh) is the following code that returns different seed values for a given {type_id, inst_id}: seed_map.seed_table[type_id] = seed_map.seed_table[type_id]+seed_map.count[type_id]; seed_map.count[type_id]++; return seed_map.seed_table[type_id]; The problem is that this can return a seed of 0, which is not a valid seed value to srandom(). Am I missing something, or is this really a bug? Thanks, Jeff Schroeder Quote Link to comment Share on other sites More sharing options...
dave_59 Posted March 13, 2019 Report Share Posted March 13, 2019 Where did you read 0 is not a valid seed? Yesire-Lincoln 1 Quote Link to comment Share on other sites More sharing options...
Yesire-Lincoln Posted March 7, 2022 Report Share Posted March 7, 2022 On 3/13/2019 at 11:48 AM, dave_59 said: Where did you read 0 is not a valid seed? Hi, Dave, I guess he get the UVM warning as following which i also encountered recently. would you please figure out what is the reson ? Quote Link to comment Share on other sites More sharing options...
dave_59 Posted March 12, 2022 Report Share Posted March 12, 2022 This is a warning from one particular tool, not the UVM code. srandom(seed) is a SystemVerilog language feature and there is no restriction on value of the seed Quote Link to comment Share on other sites More sharing options...
Yesire-Lincoln Posted April 18, 2022 Report Share Posted April 18, 2022 (edited) On 3/12/2022 at 3:27 PM, dave_59 said: This is a warning from one particular tool, not the UVM code. srandom(seed) is a SystemVerilog language feature and there is no restriction on value of the seed Dave, much thanks for your reply! I have tried, it turns out as you said to be a warning by tools. My demo code in EDA Playground: pass 0 to process.srandom(); process srandom - EDA Playground class touseprocess; process proc = process::self(); function procsrandom(int unsigned seed); proc.srandom(seed); return $urandom; endfunction endclass program test; touseprocess up; integer x, y, z; initial begin up = new(); fork //set a seed at the start of a thread begin x = up.procsrandom(0); $display("x = %0d", x); end //set a seed during a thread begin y = up.procsrandom(200); $display("y = %0d", y); end // draw 2 values from the thread RNG begin z = $urandom + $urandom; $display("z = %0d", z); end join end endprogram When i use vcs, i will get the warning, but will not when using other simulators. Edited April 18, 2022 by Yesire-Lincoln Insert code snippet directly Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.