1 / 20

Migrating from OVM to UVM The Definitive Guide

Migrating from OVM to UVM The Definitive Guide. Justin Refice Warren Stapleton AMD. by Adiel Khan Senior Staff Engineer Synopsys. AMD OVM to UVM goal Prior to OVM 2.1.2 General UVM base class differences OVM to UVM config semantic diffs Other UVM improvements

markku
Download Presentation

Migrating from OVM to UVM The Definitive Guide

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Migrating from OVM to UVM The Definitive Guide Justin Refice Warren Stapleton AMD by Adiel Khan Senior Staff Engineer Synopsys

  2. AMD OVM to UVM goal Prior to OVM 2.1.2 General UVM base class differences OVM to UVM config semantic diffs Other UVM improvements Command line control changes Summary Overview:

  3. AMD OVM to UVM migration • SoC projects with multi-subsystem and many IPs

  4. OVM to UVM Transition • Areas where the users can be bitten by a simple “O->U” conversion • The sheer number of SoCs in flight makes it unrealistic to simply “convert” overnight SOC “A” SOC “B” SOC “C” SOC “D” 2011 2012

  5. Context of OVM to UVM • Convert all OVM to UVM compliant code. • ~adiel/bin/*to_uvm1*.pl • Create OVM Compatibility Plugin Package to UVM • ~adiel/uvm/distrib/plugins/ovm_plugin • Back port UVM to OVM • AMD ovm_2.1.2-trans. DVCon 2012 UVM Ready-set-deploy Tutorial • Convert OVM_RGM to UVM_REG • DVCon 2012 BroadCom & Synopsys, Migrating to UVM_REG code • Back Port UVM_REG to OVM_REG • uvmworld.org contribution

  6. Prior to OVM 2.1.2 • Many deprecated issues not highlighted by OVM • Threaded classes not in later OVM versions • Reporting API’s changed throughout OVM revisions • OVM simulation termination global_stop_request • OVM deprecated phases • Vendor specifics included within OVM library.

  7. Getting to OVM-2.1.2 • Threaded_component • Pre OVM.2.x Syntax: ovm_threaded_component • UVM Syntax: uvm_component • Printing Factory • OVM syntax: ovm_factory::print() • UVM syntax: uvm_factory::get().print() • Printing Factory Overrides • OVM syntax: ovm_factory::print_all_overrides() • UVM syntax: uvm_factory::get().print()

  8. Report on the Reporting API `message() `OVM_REPORT_INFO() `ovm_info() `dut_error() ovm_report_info(); `uvm_info() info|warn|error|fatal

  9. General UVM base class diffs • Class Inclusion Scheme • OVM syntax: `include "ovm.svh" • UVM syntax: import uvm_pkg::*; • Parameter Class Workaround • OVM syntax: ovm_template.svh • Field Macro updates • typedefenum {FOO, BAR} foo_e;foo_emy_foo;`ovm_object_utils_begin(my_object_type) `ovm_field_int(my_foo, OVM_ALL_ON)`ovm_object_utils_end • `uvm_object_utils_begin(my_object_type) `uvm_field_enum(foo_e, my_foo, UVM_ALL_ON)`uvm_object_utils_end

  10. OVM to UVM config semantics • Mantis 3731 set/get_config semantics • OVM implementation • OVM truth table • UVM 1.0 implementation • UVM 1.0 truth table • UVM 1.1 implementation • UVM 1.1 truth table

  11. OVM set_config/get_config • set_config_object would clone • If the clone bit was set to ‘1’ • get_config_object would clone: • If get_config_object and set_config_object’s clone bits were both set to ‘1’ • If either were set to ‘0’, then get_config_object would never clone • apply_config_settings simply used get_config_object • Note: This is not how it was documented in OVM, but it is how it was implemented

  12. Truth Table: OVM

  13. UVM 1.0 set_config/get_config • set_config_object would clone • If the clone bit was set to ‘1’ • get_config_object would clone: • If the clone bit was set to ‘1’ • apply_config_settingsaligned with get_config_object • Note (again): This is not how it was documented in UVM, but it is how it was implemented

  14. Truth Table: UVM 1.0

  15. UVM 1.1 set_config/get_config • A rather strange compromise • An attempt at maintaining backwards compatibility with both OVM and UVM 1.0 • set_config_object would clone • If the clone bit was set to ‘1’ • get_config_object would clone: • If the clone bit was set to ‘1’ • apply_config_settings would not use get_config_object • Instead, it manually implemented the same functionality that OVM provided

  16. Truth Table: UVM 1.1+

  17. Other Improvements • UVM new phasing syntax and semantics • Basic phasing mods • Termination of testcases • UVM reporting and messaging usage • Command line control • Reporting Classes • Printing Methods • UVM Sequence API • Debug & Objections • Port connectivity • Sequencer Relationships & Default Seqs with Libs

  18. Command line message control • Converting OVM Command line options cause UVM warnings. The format of the example below is an incorrect translation from “O”vm to “U”vm. The verbosity options are reordered under UVM. i.e: • +ovm_set_verbosity=start_of_simulation,ovm_test_top.t0.ioe_s.slave[0].*,OVM_HIGH To: • +uvm_set_verbosity=start_of_simulation,uvm_test_top.t0.ioe_s.slave[0].*,UVM_HIGH becomes : • +uvm_set_verbosity=uvm_test_top.t0.ioe_s.slave[0].*,_ALL_,UVM_HIGH,start_of_simulation

  19. Summary • Knowledge of what, how and where modification are required de-risks the migration process from OVM to UVM. • At AMD and within Synopsys there are technologies and resources that make the OVM to UVM transition painless and can even be done unbeknown to the user. • For AMD the UVM upgrade is a long term strategy that needs to coincide with project specific needs and requirements. • The process has been proven and well understood thereby enabling users to take advantage of the OVM bugs addressed by UVM and the new features UVM brings for advanced verification.

  20. THANK YOU FOR LISTENING • Question and Answer Sessions……..

More Related