Jump to content

UVM_DEPRECATED message


Recommended Posts

I got the following UVM DEPRECATED Warning.

The problem is in the library file uvm_sequence_builtin.svh. Do I need to compile with UVM_NO_DEPRECATED ?

----------------------------------------------------------------

UVM-1.0p1

© 2007-2011 Mentor Graphics Corporation

© 2007-2011 Cadence Design Systems, Inc.

© 2006-2011 Synopsys, Inc.

----------------------------------------------------------------

UVM_WARNING /uvm/src/seq/uvm_sequencer_base.svh(1390) @ 0.000ns: uvm_test_top.testbench.tx_uvc.tx_agent.sequencer [uVM_DEPRECATED] Registering sequence 'uvm_random_sequence' with sequencer 'uvm_test_top.testbench.tx_uvc.tx_agent.sequencer' is deprecated.

UVM_WARNING /uvm/src/seq/uvm_sequencer_base.svh(1390) @ 0.000ns: uvm_test_top.testbench.tx_uvc.tx_agent.sequencer [uVM_DEPRECATED] Registering sequence 'uvm_exhaustive_sequence' with sequencer 'uvm_test_top.testbench.tx_uvc.tx_agent.sequencer' is deprecated.

UVM_WARNING /uvm/src/seq/uvm_sequencer_base.svh(1390) @ 0.000ns: uvm_test_top.testbench.tx_uvc.tx_agent.sequencer [uVM_DEPRECATED] Registering sequence 'uvm_simple_sequence' with sequencer 'uvm_test_top.testbench.tx_uvc.tx_agent.sequencer' is deprecated.

Link to comment
Share on other sites

hi,

you got three choices here:

1. ignore the deprecated msg

2. switch the deprectated msg off

3. migrate the code to the new sequence library schema

/uwe

Hi, that code is a built-in UVM code. I tried to switch off the message by using UVM_NO_DEPRECATED, but I got all kind of compilation error. So, I guess I can down to choice 1 ....

Link to comment
Share on other sites

Hi, that code is a built-in UVM code. I tried to switch off the message by using UVM_NO_DEPRECATED, but I got all kind of compilation error. So, I guess I can down to choice 1 ....

hi,

seems there is a misunderstanding. that switch apparently REMOVES all deprecated code from the library. so in that sense code which refers to deprecated features will now fail to compile.

Link to comment
Share on other sites

  • 2 weeks later...

Any description or hint of method3 available? is anything missing below? thanks!

1. replace `uvm_sequence_utils by `uvm_object_utils

2. replace `uvm_sequencer_utils by `uvm_component_utils

3. remove `uvm_update_sequence_lib(_and_item)

4. replace set_config_string("*", "default_sequence".... by uvm_config_db ...

Link to comment
Share on other sites

yes, these are the steps

# Switch uvm_sequence_utils to uvm_object_utils

# Switch uvm_sequencer_utils to uvm_component_utils

# remove the `uvm_update_sequence_lib* macros

# If your sequences use “p_sequencer†add `uvm_declare_p_sequencer(<p-sequencer-type>)

# create a new style sequence lib (if wanted)

class master_seq_lib extends uvm_sequence_library #(bus_10_transaction);
       `uvm_object_utils(master_seq_lib)
       `uvm_sequence_library_utils(master_seq_lib)

## Associate sequences with a sequence lib

add_typewide_sequence(read_modify_write_seq::get_type());

# Configure the “default_sequence†config setting to point to the library to point either to your seqeunce or your sequence library

typedef uvm_config_db#(uvm_object_wrapper) phase_cfg;
phase_cfg::set(this,"demo_tb0.whateverbus.initiator_agent.sequencer.run_phase","default_sequence",whateverbus_initiator_nested_seq::get_type());

Link to comment
Share on other sites

  • 2 weeks later...

Hi There -

It is a good idea to eventually make the code UVM1.0-compliant but here is an idea for the interim.

You can use a message catcher callback if you would like to either turn the "warning" into an "info" message - or if you would like to "catch" the message and not print it.

Here is an example for your enjoyment :)

Kathleen

Create a new class:

class my_catcher extends uvm_report_catcher;
 virtual function action_e catch();
   if (get_severity() == UVM_WARNING && get_id() == "UVM_DEPRECATED") begin
     set_severity(UVM_INFO);
     return CAUGHT;   // remove this line if you just want to turn it into an INFO message
   end
   else   // also remove this line if you just want it to be an INFO message
     return THROW;
 endfunction
endclass

Then I put this in my test build() method:

  virtual function void build();
   my_catcher catcher;
   super.build();
   // Create the tb
   demo_tb0 = demo_tb::type_id::create("demo_tb0", this);
   // KATHLEEN TEST CALLBACK
   catcher = new();
   uvm_report_cb::add(null,catcher);
 endfunction : build

It should just work! This example removes the message or you can modify your callback to turn it into a UVM_INFO message instead. YOu will see something like this in your log file at the end of simulation:

--- UVM Report catcher Summary ---

Number of demoted UVM_FATAL reports : 0

Number of demoted UVM_ERROR reports : 0

Number of demoted UVM_WARNING reports: 10

Number of caught UVM_FATAL reports : 0

Number of caught UVM_ERROR reports : 0

Number of caught UVM_WARNING reports : 10

Link to comment
Share on other sites

  • 10 months later...

can anyone clarify the root cause of these warning messages? when I use an user specified sequencer which is extended from the uvm_sequencer#(base_item), and I create instance in the agent of the user sequencer then when I run the case, I will see those warning, but when I use the uvm_sequencer#(base_item) then I will not see these warnings. why's that?

Link to comment
Share on other sites

The message is triggered by the actual registration of the sequences in the deprecated sequencer-based sequence library by the `uvm_update_sequence_lib statement.

By using uvm_sequencer#(base_item) directly, you are not using that macro in the constructor, hence you do not create populate the (obsolete) library.

Link to comment
Share on other sites

Hi There,

If you are using IRUN to compile your code, you may add following to your irun command line.

+uvm_set_action="*",UVM_DEPRECATED,_ALL_,UVM_NO_ACTION

The better things to do should be "3. migrate the code to the new sequence library schema" as Uwes mentioned.

Link to comment
Share on other sites

Hi There,

"+uvm_set_action " is build-in UVM aware command line arguments , So you could make this workable in all Vendor's Simulator.

uvm_set_action=<comp>,<id>,<severity>,<action> provides the equivalent of various uvm_report_object’s set_report_*_action APIs. The special keyword, ALL , can be provided for both/either the id and/or severity arguments. The action can be UVM_NO_ACTION or a | separated list of the other UVM message actions

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.

Guest
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...