Jump to content

About This File

UVM-ML Open Architecture - version 1.10.2
Enabling Multi-Language and Multi-Framework Verification
Nov, 2018


General Overview
Universal Verification Methodology Multi-Language (UVM-ML) provides a modular solution for integrating verification components written in different languages into a unified and coordinated verification environment. It consists of an open source library that enables such integrations, and can be extended to support additional languages and methodologies.


This release of the UVM-ML implementation is the result of collaboration work between Advance Micro Devices, Inc., and Cadence Design Systems, Inc. It expands on the mature technology provided by Cadence in Incisive and in previous UVM-ML postings on UVMWorld. It is provided as open source under the Apache 2.0 license.


This distribution includes the following main elements

  • Backplane implementation and API
  • Example frameworks and adapters (three provided: UVM-SV, UVM-e, and UVM-SC)
  • Several demos and high level examples (showing all frameworks interacting) and a few smaller feature examples (tests)
  • Docs directory with a Reference manual, User Guide and reference HTML docs

Information on all news and features can be found in the ml/docs/ directory.


This UVM-ML package is intended to serve as a basis for the verification community to collaboratively expand and evolve the multi-language verification methodology. Please read the “Status, Use, and Disclaimers” section below for full details.


Where to Find Information

  • Where to start reading: point your web browser to ml/README.html
    The landing page provides links to installation directions, release notes, user guide, and more.
  • For feedback or questions: send email to support_uvm_ml@cadence.com
  • An easy installation and Setup video guide is available
  • You can checkout the update of David I. Long form Doulos at DVCon 2016 in the US. It relates to UVM-ML (along with other updates).

Blog series:

Platforms and Simulators
This release of UVM-ML should run on any simulator supporting one or more of the standard languages: IEEE 1800 (SystemVerilog), IEEE 1647 (e), and IEEE 1666 (SystemC). It was tested on the Linux operating system with various combinations of simulators and languages.




UVM-ML Open Architecture: Status, Use, and Disclaimers
This section provides guidance and status regarding the use of the UVM Multi Language Open Architecture solution.


The UVM-ML Open Architecture package is an open source solution, developed jointly by AMD and Cadence. We welcome feedback including suggestions for improvements. For any feedback or questions, please contact support_uvm_ml@cadence.com


Use and Disclaimers:

  • Licensing: This package is an open source library, protected under the Apache license (see legal clause at the bottom).
  • Access: This package is available as early access to the verification community, and therefore changes to its content and behavior should be expected.
  • Backward compatibility cannot be guaranteed. Changes are expected to take place when the verification community jointly refines the solution, to fit user requirements. We will aim, however, to provide help in adjusting to changes.
  • Quality: this package is still under development. It is being tested and regressed with all active versions of Incisive and with the Accellera OSCI simulator before being released. The user needs to be aware of the simulator version on which the solution is tested. AMD tested the open source solution on other commercial simulators. Issues reported to AMD and Cadence will be addressed.
  • Standardization: This package is not a standard. However, it is available as open source to all potential users.
  • Support: Since this is not a product, it does not have a committed level of product support. We will provide help via the UVMWorld community on Accellera where the source code is posted. For Cadence customers, Cadence will provide direct support as needed.

Note: the model described above is similar to how the very successful OVM and UVM-1.0ea (early version) were provided in the beginning. We believe you can gain significant value from access to this solution, and also be able to participate in developing it to ensure it addresses your needs.
What's new in each version
For the full listing and more details please see the release-notes.txt file at the top of the release package.
Please note that the items in red might require some changes on the user's side while upgrading to this version, please read these items carefully in the release notes.


  • Supporting TCL 8.6 as of Xcelium 18.11


  • Fully qualified with IES version 15.2 and Xcelium 17.10-18.09 (the earlier version:1.10 has an issue with 18.09, which is fixed in this version).
  • Questa 10.6b is supported


  • Fully qualified with IES version 15.2 and Xcelium 17.04-18.03.
  • ASI (OSCI) 2.3.2 is supported. Support for OSCI 2.2 was dropped.
  • Open source version can be accessed by pre-processor macros (SystemC only: UVM_ML_CURRENT_NUMERIC_VERSION  and  UVM_ML_NUMERIC_VERSION) or by a method (get_numeric_version)
  • Enhancements and fixes in event propagation between frameworks
  • Improved error handling 
  • Other fixes


  • Fully qualified with IES version 15.2 and Xcelium 17.04-17.10. In order to make it work with Xcelium 18.03, you can just comment the patch header in ml/adapters/uvm_e/sn_uvm_ml.e.
  • Runtime phase synchronization between UVM-e to UVM-SV is now supported in UVM-ML OA (only with Xcelium 17.10).
  • System C TLM2 convenience sockets (including passthrough_initiator/target_socket) are now supported by UVM-ML OA.


  • Fully qualified with IES version 15.2 and Xcelium 16.11-17.04.
  • New debug command for tracing serialization in SV and e : uvm_ml trace_ser
  • Moving from one Xcelium agile version to the other requires reinstallation of UVM-ML (running install_xclm.csh again) against the respective version) and no additional manual steps are needed


  • Fully qualified with IES version 15.2 and Xcelium 16.11-17.02.
  • New debug command for observing matching types was added: "uvm_ml print_type_match".
  • Support for multiple ML connections for SystemC TLM2 sockets.


  • Fully qualified with IES versions 14.2,15.1 and 15.2.
  • UVM-SV 1.2 is now fully supported (please read RELEASE_NOTES.txt under ml directory for more details).
  • When working with Incisive 15.2, the user can take some steps in order to skip compiling the e part of the adapter (this might be important for users that compile other
    e code on top of Specman, like VIP). The steps are documented in the UVM-ML OA user guide under:
    "Linking the Specman UVM-e Adapter From Incisive Version 15.2 On".
  • OSCI 2.3.1 is now supported instead of OSCI 2.3, meaning that the supported OSCI versions are: 2.3.1 and 2.2.
  • gcc 4.8.3 is now supported


  • Fully qualified with IES versions 14.1,14.2 and 15.1.
  • Early adopters UVM-SV 1.2 support for IES (please read RELEASE_NOTES.txt under ml directory for more details).
  • UVM-ML tcl commands are now available from Specman with all supported simulators.
  • UVM-ML tcl commands are renamed (they all start with uvm_ml prefix, followed by a space and the command name, e.g uvm_ml print_tree). The old names are still supported.
  • Pre-compiled UVM-SC parts for IES were eliminated.
  • Examples are enhanced and extended.
  • Updated the Backplane API version number.
  • New debug commands in IES to print the UVM-ML tree, port connections, and port registrations.
  • Brand-new documentation including User Guide, Reference Manual and more.
  • Support for IES reset in UVM-ML environment.
  • Support for sharing uvm_events and uvm_barriers between UVM-SV and UVM-SC.
  • Support for +UVM_TESTNAME in all simulators and languages.
  • Passing tlm_generic_payload transactions via analysis ports.
  • Several ASI SystemC enhancements: Automated synchronization, ML-registering of SC TLM2 sockets.
  • Reorganized examples to make them more useful.
  • Enhanced and simplified installation and setup.


  • Fully qualified with IES versions 13.2, 14.1, and 14.2.
  • "Phase Debug" feature, for setting breakpoints at the beginning or end of UVM-ML phases (see the Integrator User Guide for details). Currently this works only for IES.
  • Added support for the generic UVM SV syntax, uvm_config_db#(T), so that it now works also for ML configuration
  • Improved the way to run the demo examples and to learn how to run UVM-ML
  • Reduced the amount of ML enabling modifications introduced into the local version of UVM-SV (1.1d), by enhancing the UVM-SV adapter implementation


  • The e macro uvm_ml_stub_unit now directly sets unit attributes hdl_path() and agent(), thus saving the user a need to add auxiliary string fields
  • Improved the handling of UVM-ML bitness (once users select 32 or 64 bit mode, the library and all examples will run in that mode)
  • Enhanced sequence layering capabilities
  • Enhanced the test_env.csh script to provide more validity testing of the user's environment and to provide better suggestions how to fix issues
  • irun_uvm_ml.*.f option files were reorganized (including a name change): IES irun invocation options were grouped into several option files, reflecting the usage context, and adding comments to clarify their meaning
  • This release might require some changes on the user's code while upgrading to this version, see details in the release_notes.txt”


  • Fully qualified with IES version 14.1
  • Enables usage of Cadence UVM extensions on top of UVM-ML OA
  • Support for UVM ML configuration tracing on the SV side, activated by the +UVM_CONFIG_DB_TRACE command-line option
  • Added new backplane API functions enabling the time notification (wakeup) service and updated the backplane API version number
  • Updated the sequence layering examples. The code is simplified and type conversion using mltypemap is demonstrated
  • Eliminated the UVM SV warnings
  • Mechanism to recognize whether OSCI was compiled with pthreads and compile the custom sc_simcontext.cpp accordingly


  • New examples showing basic TLM communication
  • Default installation is 32bit instead of 64bit
  • Setup and install scripts renamed
  • UVM-SC has been updated with a standalone phase controller that can run through the common and UVM phases. In addition user defined schedules, which can be synchronized with the standard UVM phases, are supported as well.
  • Enhanced UVM-SC to support run_test() in the SC-standalone mode (not collaborating with other frameworks)
  • Methodology and examples for sequence layering across languages
  • Enhancements in how unified hierarchy works


  • Support for uvm-1.1d (in place of uvm-1.1c)
  • Addition of a portable UVM-SC adapter.
  • Simulator independent and tested to run on several simulators
  • Architected to be highly modular and extensible
  • A new architecture providing a Backplane that connects Frameworks (where Frameworks can be of different languages or methodologies)
  • Three examples of language frameworks are provided: UVM-SV, UVM-e, UVM-SC
  • Enables creating a unified hierarchy of components of different frameworks


  • Multi-Language configuration
  • Support of TLM1 and TLM2 communication between all the provided frameworks
  • Enhanced synchronization of test phases and delegation of phasing control to a designated framework

What's New in Version 05/30/2013 10:33 PM   See changelog


No changelog available for this version.

User Feedback

Recommended Comments



I just tried to run the example in the package, but there are a lot of link error, can't find "ml_uvm_pkg.sv", etc. Could you give me some help for that, after read whole documents and can't get the example run is really depressed.




Share this comment

Link to comment
Share on other sites

Dear Han, 
This is probably some environmental issue we can easily solve together.

We will follow up with you offline (on the other thread you opened with support_uvm_ml@cadence.com).

Guy Mosenson @ Cadence

Share this comment

Link to comment
Share on other sites



Thank you very much for the quick support, the problem has been solved. It's indeed an environment issue and reason is the newest GCC version not support really well with NCSC. I can get the example running and will dig into it now. Thanks!


Best regards,


Share this comment

Link to comment
Share on other sites



Below is the error generated while running the demo.sh for the prod_cons/sv_e/ or unified_hierarchy/e_sv/


irun: *E,BADSNL: The library /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/libs/uvm_e/12.2/4.4/64bit/libsn_sn_uvm_ml.so does not exist.
make[1]: *** [ies_proc_proper] Error 1
make[1]: Leaving directory `/sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/examples/demos/prod_cons/sv_e'
make: *** [ies] Error 2


And the irun command options are:

TOOL:   irun(64)        12.20-s005: Started on Jan 27, 2014 at 15:07:53 CST
        -l irun_ncsc_proc.64.log
        -f /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/tests/irun_uvm_ml.64.f
                -gcc_vers 4.4
                -spec /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/tools/specfiles/12.2/specfile.lnx86.gnu
                -Wcxx,-I/sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/frameworks/uvm/sc/ -Wld,-Xlinker
                -Wld,-rpath -Wld,-Xlinker
                -Wld,/sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/libs/ncsc/12.2/4.4/64bit/ -Wcxx,-I/sim/d
                -sv_lib /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/libs/backplane/4.4/64bit/libml_uvm.so
                -sv_lib /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/libs/backplane/4.4/64bit/libuvm_ml_bp
        -access rw
        -uvmhome /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/frameworks/uvm/sv/uvm-1.1c
        -snshlib /sim/debug_ip/user/x0012346/UVM_ML-1.3/ml/libs/uvm_e/12.2/4.4/64bit/libsn_sn_uvm_ml.so
        -top topmodule
        -define USE_UVM_ML_RUN_TES


basically Its not building the snapshot libsn_sn_uvm_ml.so at above dir, if any one knows about the cause for the above pls let us know.


Nagaraj Jaka

Share this comment

Link to comment
Share on other sites

For easy installation and setup - take a look at the new video guide (recorded for UVM-ML 1.4.4):


     UVM-ML Library Installation and Setup - in under 10 minutes.


You can find this video here (



It provides a step-by-step walk through of downloading and installing the UVM-ML OA library.

This is followed by giving some details on where to find the documentation, as well as showing how to run one 
of the examples delivered with this library.
Guy Mosenson @ Cadence

Share this comment

Link to comment
Share on other sites

Hi all,

some problem with the package, maybe someone can help...

i'm missing "tcl.h" file that is being include in ./ml/facilities/debug/uvm_ml_debug_if.cpp


can someone asssit?


Here below the error lines when i run the install script:


make[1]: Entering directory `/home/jonyc/UVM_ML-1.4.4/ml/facilities/debug'
Makefile.debug:71: uvm_ml_debug_if.4.4.d: No such file or directory
/tools/cadence/INCISIV132/13.20.017/tools/cdsgcc/gcc/bin/g++ -MM -MQ uvm_ml_debug_if.4.4.o -o uvm_ml_debug_if.4.4.d uvm_ml_debug_if.cpp
uvm_ml_debug_if.cpp:1:17: error: tcl.h: No such file or directory
make[1]: *** [uvm_ml_debug_if.4.4.d] Error 1
make[1]: Leaving directory `/home/jonyc/UVM_ML-1.4.4/ml/facilities/debug'
make: *** [debug32] Error 2

Share this comment

Link to comment
Share on other sites

I just tried UVM-ML Open Architecture - version 1.10.2.  I can't get the demo example working with XCLM. Since I am not interested in E part,

decided to try sc_sv example, ml/examples/use_cases/side_by_side/sc_sv.

Following README.txt

       % ./demo.sh Xcelium --dry-run > do.sh

      % chmod +x do.sh

      % ./do.sh

make: *** [xcelium.d/run.lnx8664.18.09.d/xmsc_run/xmsc_obj/sc_0.o] Error 2

xmsc(64): 18.09-s001: (c) Copyright 1995-2018 Cadence Design Systems, Inc.

xmsc: *F,BADOPT: unknown or ambiguous options ( -o -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/frameworks/uvm/sc -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/adapters/uvm_sc -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/adapters/uvm_sc/common -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/adapters/uvm_sc/ncsc -I$TESTDIR -DSC_INCLUDE_DYNAMIC_PROCESSES -I$CDSROOT/tools/include -I$CDSROOT/tools/inca/include -DXMSC -DNCSC -I$CDSROOT/tools/systemc/include_pch -I$CDSROOT/tools/tbsc/include -I$CDSROOT/tools/vic/include -I$CDSROOT/tools/methodology/OVM/CDNS-2.1.2/sc/src -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/frameworks/uvm/sv/1.1d-ml/sc/sc -I/home/chilai/ARMFM_11_5/SystemC/Accellera/UVM_ML-1.10.2/ml/frameworks/uvm/sv/1.1d-ml/ml/sc -I$CDSROOT/tools/systemc/include/cci -I$CDSROOT/tools/systemc/include/factory -I$CDSROOT/tools/systemc/include/tlm2 -fPIC -c -x -Wall).

xmsc_run: *E,TBBLDF: Failed to generate object ./xcelium.d/run.lnx8664.18.09.d/xmsc_run/xmsc_obj/sc_0.o

This error message seems to be caused by Makefile.xmsc in sc_sv/xcelium.d/run.lnx8664.18.09.d/xmsc_run.

CXX = ncsc -COMPILER /edatools/XCELIUM/tools/cdsgcc/gcc/4.8/bin/g++

ncsc does not allow arguments like -I, -o. Can you point out what I did wrong? Thanks.

Share this comment

Link to comment
Share on other sites
On 1/29/2019 at 11:58 PM, Chilai said:

I just tried UVM-ML Open Architecture - version 1.10.2.  I can't get the demo example working with XCLM. Since I am not interested in E part,

decided to try sc_sv example, ml/examples/use_cases/side_by_side/sc_sv.

Following README.txt

       % ./demo.sh Xcelium --dry-run > do.sh

      % chmod +x do.sh

      % ./do.sh

make: *** [xcelium.d/run.lnx8664.18.09.d/xmsc_run/xmsc_obj/sc_0.o] Error 2


ncsc does not allow arguments like -I, -o. Can you point out what I did wrong? Thanks.


If still relevant, can you please post the full content of your do.sh and the values of any UVM-ML-related environment variables, or alternatively, send it to support_uvm_ml@cadence.com?

Two points instantly drew my attention in the output you have posted:

- do.sh runs 64-bit while demo.sh is expected to be 32-bit by default

- Compiler is set to g++ 4.8; 6.3 is expected to be the default with 18.09.

Thanks in advance. 

Share this comment

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.

Add a comment...

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