• 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. Functional Verification
  3. Passing arguments from irun command line to top module

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 66
  • Views 22866
  • 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

Passing arguments from irun command line to top module

abhingp01
abhingp01 over 15 years ago

 Hi,

 I need to pass certain parameters to my top verilog module from irun command line.

Some thing like:

irun ------- argr1,agr2 

 

Is this possible ? 

Kindly give a small example if possible.

Thanking  you in advance.

 

Regards,

Abhishek

  • Cancel
  • TAM1
    TAM1 over 15 years ago

    You can use the built-in $test$plusargs function to read special purpose options from the command line.

     I found the following link using google which has some examples showing how that function is used.

     http://www.project-veripage.com/plusarg.php

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Mickey
    Mickey over 15 years ago
    You can use -defparam. -DEFparam parameter_pathname=value, eg. -defparam top.dut.u1.param4=8 .... Best regards, Mickey
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • abhingp01
    abhingp01 over 15 years ago

     Thanks a lot Tam1 and Mickey

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • albas
    albas over 8 years ago
    How would you pass an enum to the defparam? I get weird numbers in the parameter.

    Thanks in advance,

    Al
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tpylant
    tpylant over 8 years ago
    Is this what you're referring to:

    typedef enum bit {NO, YES} bool_t;

    module test;
    dut dut ();
    defparam dut.p = NO;
    endmodule

    module dut ();
    parameter bool_t p = YES;

    initial $display ("p is %n", p);
    endmodule


    Tim
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • albas
    albas over 8 years ago
    Uhm, interesting enough the example you are using is working correctly (tried on edaplayground.com), but this one does not work correctly:

    typedef enum bit {NO, YES} bool_t;

    module test;
    dut dut ();
    endmodule

    module dut ();
    parameter bool_t p = YES;

    initial $display ("p is %n", p);
    endmodule

    the -defparam options passed to incisive does not overwrite the locally defined parameter. Moreover I have the following situation www.edaplayground.com/.../ufn where the outcoming output of the parameter value is completely wrong.

    What is the main difference between these examples?

    Thanks for your support,

    Al
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tpylant
    tpylant over 8 years ago
    It looks like ENUMs are not getting taken from command line. If I pass the numerical equivalence (NO=0, YES=1), then it works as expected:

    irun test.sv -defparam test.dut.p=0

    p is NO

    Tim
    • 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