1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Verilog - generate random delay time in testbench

  1. Jul 14, 2012 #1
    1. The problem statement, all variables and given/known data
    Hi, I would like to generate a random delay time and value in testbench. This is what I did:

    Code (Text):
      j = i + {$random} % (300 - i) // MIN + {$random} % (MAX - MIN )
      #j b = {$random} %3;
      #3ns b = 3'b000;
    I want to generate random value in random time. int i give me the range of random time. j is the actual random delay timing and b is the random value.
    What I want to do here is generate a range -> generate delay time-> use value b in the the generated delay time -> recover value b after 3ns.

    But it comes out error with:
    **near "#": syntax error, unexpected '#', expecting ';'

    Is that mean I can only use a actual value for the delay? Like #30, #20...but not a unknown value #j ? I have google it but cannot find any useful information about my problem..

    Thank you very much for the help
    Last edited: Jul 14, 2012
  2. jcsd
  3. Jul 14, 2012 #2

    I like Serena

    User Avatar
    Homework Helper

    Hi hoheiho!

    Looks like you have it right.
    Suppose you create a for-loop up to j and wait #1 each time?
  4. Jul 14, 2012 #3
    Thank for your reply
    Sorry for my poor english, I didnt get what you mean by wait #1ns? I would like to create a for loop and get the random delay timing between 0 ns to 300ns. It will generate a random delay time each 30ns. (i=0;i<300;i=i+30).
    For example
    0 ns to 30ns:
    j = 20ns -> inject value b at time 20ns -> recovery back to b = 3'b000 at time 23ns -> start next for loop cycle ->
    30ns to 60ns:
  5. Jul 14, 2012 #4

    I like Serena

    User Avatar
    Homework Helper

    Now that I look again, didn't you forget a ';' on the line before your error?

    Btw, instead of waiting with #j, you can also wait with:
    Code (Text):
      #1ns ;
  6. Jul 14, 2012 #5
    Sorry for the typing error again :(.

    When I do the simulation, the code doesnt work what I prefer. I think I need to use two for loop together to change the MAX and MIN value. I am trying to fix it now.

    Thanks :)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook