• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Verilog $random seems to be not random

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 17638
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Verilog $random seems to be not random

HoWei
HoWei over 5 years ago

Hi,

I want to generate a random number between -1 and 1 in Verilog-A by using "$rdist_uniform" or "$random", but the behaviour is not as I expect it.

My code is something like:

@ ( initial_step ) begin

for (1=0; i<10; i=i+1) begin

   myvar[i]= $rdist_uniform(seed,-1,1)

end

end

When "seed=123" ( a constant) i always get the same value in myvar[0:9].

When "seed=i" the values in myvar[0:9] are increasing linearily.

I am missing the "randomicity" in the values.

If I would need to scramble the seed, I also could use the scrambled value instead of the random function.

How can I generate randomly distributed values ?

  • Cancel
  • HoWei
    HoWei over 5 years ago

    Okay, I found that (for whatever reason) it works when I place the seed variable outside of the for loop:

    @ ( initial_step ) begin

    seed=32134

    for (1=0; i<10; i=i+1) begin

       myvar[i]= $rdist_uniform(seed,-1,1)

    end

    end

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to HoWei

    You shouldn't give a new seed every time you call it as that would give a very non-random sequence. The original sequence was indeed random, but it's just that you're starting from a fixed seed (which is usually a good idea for reproducibility of results; it would be very annoying if each time you ran the simulation you got a different answer, as otherwise you couldn't reproduce a previous observation).

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information