Jump to content

uvm_cmdline_processor get_arg_value/s to receive hex

Recommended Posts

SPOILER ALERT:  I figured this one out, but since I'd already typed up most of the question, here it is anyhow posted to the public domain.   Comments welcome.



Who can tell me how to pass a hex value into Systemverilog using uvm_cmdline_processor?


My current code is shown below as well as the command line option that is supplied.

code snippet: 
   bit [31:0] stimulus_xyz_min = 32'h12121212;             // *** setting default here works fine

      `uvm_info(get_type_name(), $psprintf("1st TEST-SETTINGS.  xyz_min=%8h",stimulus_xyz_min), UVM_LOW)
      if (cmdline_proc.get_arg_values(.match("+xyz_min="), .values(arg_values))) begin  
		stimulus_xyz_min = arg_values[$];  
      `uvm_info(get_type_name(), $psprintf("2nd TEST-SETTINGS.  xyz_min=%8h",stimulus_xyz_min), UVM_LOW)


command line option:   //** this value passed in from cmdline is not properly recognized
The edited (for clarity) output is here (where you can see that the above +xyz_min did not 'take'):
1st TEST-SETTINGS. xyz_min=12121212
2nd TEST-SETTINGS. xyz_min=30393039


More +options/results data points listed here:
2nd TEST-SETTINGS. xyz_min=30393039
2nd TEST-SETTINGS. xyz_min=30303030
2nd TEST-SETTINGS.  xyz_min=30303031
2nd TEST-SETTINGS.  xyz_min=30303032
2nd TEST-SETTINGS.  xyz_min=30303230


Woo-hoo.  I looked at some other code I was using, which used


stimulus_lkj = arg_values[$].atoi();

and then in the sv spec found atohex.

Using the following worked (emphasis on .atohex()).


      `uvm_info(get_type_name(), $psprintf("1st TEST-SETTINGS.  xyz_min=%8h",stimulus_xyz_min), UVM_LOW)
      if (cmdline_proc.get_arg_values(.match("+xyz_min="), .values(arg_values))) begin
             stimulus_xyz_min = arg_values[$].atohex();  
      `uvm_info(get_type_name(), $psprintf("2nd TEST-SETTINGS.  xyz_min=%8h",stimulus_xyz_min), UVM_LOW)


2nd TEST-SETTINGS.  xyz_min=1acecafe


Even thoe I initially thought I was seeing the ASCII values, I mistakenly looked at an ASCII table of decimal-to-char, instead of hex-to-char, which further confused me.
I'd even tried this (as a wild hope that cmdline_processor would recognize it):


Link to comment
Share on other sites

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.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...