Jump to content

[irun *E,MSSYSTF] when using uvm-1.1a, any suggestion and thanks!


Recommended Posts

  • 3 weeks later...

hi,

the main way to run uvm+cadence tools should be "irun -uvmhome `ncroot`/tools/uvm ....".

i assume the issue you bring up is because of two things:

1. a recent change which now requires -uvm or -uvmhome to be present (and not just +UVM_TESTNAME) for irun

2. you are running in 3step mode (ncvlog,ncelab,ncsim) which requires that you are handling all uvm specific switches such as the -loadpli manually

(ps: obviously you can use it together with you own uvm version: irun -uvmhome <your-uvm-distribution-dir> ....)

/uwe

Edited by uwes
Link to comment
Share on other sites

Hi Uwe,

in my view the preferred way to use UVM is to download the release and compile it oneself : .sv and pli code. This way a user can play with it.

A while back one of the goals was to keep OVM SystemVerilog only. But all the pli calls introduced have prevented this. Too bad.

You seem to advise, as a Cadence representative, to use mandatorily the UVM release and pre-compiled libraries in the cadence tools release and I would like to object to this.

I think that the recommendation should be to use the release and compile it oneself :

- the SystemVeirlog code

- the pli calls

That's what I do anyway, since I support several simulators and may need to play with the code of the release.

I would like to see the makefiles supplied in the release examples, which are simulator specific, include the compilation of all the .sv and pli code of the current release only, and ONLY of the current release. It shouldn't rely on anything from the tools install directory.

Especially for Cadence where the compil/elab/run can be done with irun or in 3 steps with ncvlog/ncelab/ncsim.

Edited by arno
Link to comment
Share on other sites

Hello Arno,

Uwe's suggestions are to make it easy to use UVM without the extra work.

You have the option to specify the UVM library independent of the simulator by placing the files/options directly on the command line.

For example - when using irun, set UVM_HOME to your version of the UVM library and the command-line options are:

$UVM_HOME/src/uvm_pkg.sv

$UVM_HOME/src/dpi/uvm_dpi.cc

-incdir $UVM_HOME/src

+UVM_TESTNAME="my_test"

That should be all you need to run independent of the files installed in a particular software release.

Using -uvmhome $UVM_HOME allows you to skip the first three options above and you only need to specify UVM_TESTNAME.

I hope this helps.

Kathleen Meade

Link to comment
Share on other sites

hi arno,

let me answer some of the points you raise

>in my view the preferred way to use UVM is to download the release and compile it oneself : .sv and pli code. This way a user can play with it.

first of all its your choice if you go with the version coming with ius or if you use the native accellera version. i'll give you later some reasoning to prefer the ius version and i also accept if one wants the pure accellera version - really your choice. in the example i gave (i should have been pointing out that this is only an invocation example). all the example points out is that to use ius with uvm all you have to do is "irun -uvmhome <your-uvm-distrib-location> <eventually +UVM_TESTNAME=xyz> ....". when using the uvm versions coming with ius uvmhome should point to `ncroot`/tools/uvm-1.1.

all what is needed to compile ANY uvm distrib is the appropriate setting of -uvmhome - no compile of .cc code, no library compile, no addon incdir settings required - you only point to your distrib and i think that makes using any uvm version quite simple to use.

>A while back one of the goals was to keep OVM SystemVerilog only. But all the pli calls introduced have prevented this. Too bad.

there are a number of things in OVM/UVM which cannot be accomplished with native SV ( or only with big effort). some things to name:

- regexps

- hdl backdoors in registers

>I think that the recommendation should be to use the release and compile it oneself :

i sort of disagree that it makes sense to force anyone having them compiling c-code and the library - what IUS/irun provides is a direct frontend to develop uvm testbenches with the need to figure out compile/pli

>That's what I do anyway, since I support several simulators and may need to play with the code of the release.

fair enough, the uvm accellera code run (tested!) on all simulators (vcs,questa,ius).

>I would like to see the makefiles supplied in the release examples, which are simulator specific, include the compilation of all the .sv and pli code of the current release only, and ONLY of the current release. It shouldn't rely on anything from the tools install directory.

all examples are independent and are using the uvm release out of the distribution. for ius for instance you see -uvmhome ../../../src (or similar) which is pointing to the uvm code of the current tree. this doesnt use any UVM out of the install (and actually this would nt work if the version do not exactly match). if you do something different let me know. again: for ius all you need for compile,elab+run is "irun -uvmhome <your-uvm-dist-directory> ...."

>Especially for Cadence where the compil/elab/run can be done with irun or in 3 steps with ncvlog/ncelab/ncsim.

the UVM development uses exclusively irun as its frontend. we aim to provide to our users the fastest and safest route to run their simulation and this is the reason to use irun with its extensions for uvm. if you do require an old 3step approach using ncvlog/ncelab/ncsim we do have proper docs to show you what needs to be done in this case (you can also cheat and replace ncvlog with "irun -compile", ncelab with "irun -elaborate", .... and still use the irun extensions for uvm :-)).

BTW: i just forgot to give you some reasoning WHY to prefer the version delivered with IUS over the native accellera version

1. the ius-version has been enhanced with support for

- direct transaction recording into simvision

- extensions in the simulator interface which allow you to perform uvm specific actions in the tcl commandline

- multi language support to enable direct communication with sc and e

- some more goodies (if you look in the install you will find them :-)

(please note that all of these extensions do not change an API, you can still compile your testbench against the acellera-uvm or the cadence uvm without issues)

2. cadence provides bugfixes to uvm releases already in new simulator releases and this even before accellera cuts a new release. (well you obviously could checkout the mantis branch a fetch+overlay the fix yourself but i think its important that once an issue is known its fixed and distributed asap)

hope this clarifies

regards

/uwe

Edited by uwes
Link to comment
Share on other sites

Hi Kathleen,

the command you are giving is incomplete if you use cadence tools in 3 steps (ncvlog/ncelab/ncsim).

This is the problem that triggerred this post. Not irun.

When upgrading from uvm-1.1 to uvm-1.1a you need to add the pli load

"-loadpli ${CDS_INST_DIR}/tools/uvm/uvm_lib/uvm_sv/lib/libuvmpli.so:uvm_pli_boot"

to ncelab otherwise the new Cadence-specific pli call added in uvm-1.1a will crash.

This is not documented anywhere in the release and users need to figure it out by themselves. Note that all is fine for the other simulators.

This one example shows that having UVM integrated to the EDA vendors tools doesn't really help and will continuously be the source of compatibility issues and causes extra work.

This is why I would like to see UVM staying a separate package and not be integrated it to the vendor tool release.

Link to comment
Share on other sites

hi arno,

you are right that ius requires to add the libuvmpli for the old 3step mode for uvm11a onwards. you do not require it for irun or irun in 3 step mode. the reason is that uvm11a contains some temporary code which is implemented in this library.

regards

/uwe

Link to comment
Share on other sites

  • 8 months later...

Cadence gentlemen,

This issue could be fixed by the following irun option suggested by a Cadence local expert, however we are not sure if this is the suggested way to use uvm-1.1a ? thanks!

-loadpli1 `ncroot`/tools/uvm/uvm_lib/uvm_sv/lib/64bit/libuvmpli::uvm_pli_boot

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

I have downloaded uvm-1.1b lib and i am going to example and trying to run make file which is already exists for ius.

in example i am facing the same error.

and when i tried with giving -loadpli /auto/tools/INCISIV111/tools/uvm-1.1/uvm_lib/additions/sv/lib/64bit/libuvmpli.so::uvm_pli_boot .and i checked that path this file existance is there but still it is giving same error .

so not able to make out what actually problem is.

irun -access rw -uvmhome $(UVM_HOME) +UVM_VERBOSITY=$(UVM_VERBOSITY) -quiet +define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR -loadpli /auto/tools/INCISIV111/tools/uvm-1.1/uvm_lib/additions/sv/lib/64bit/libuvmpli.so::uvm_pli_boot -incdir . hello_world.sv

thanks in advance.

regards

Link to comment
Share on other sites

hi,

if you use irun (=the suggested path) then you dont need more than "irun -uvmhome <your-uvm>" NO pli,NO dpi, no c compile.. the default when using the uvm versionb cadence is shipping would be

irun -uvmhome `ncroot`/tools/uvm-1.1

for you this should be all:

irun -access rw -uvmhome $(UVM_HOME) +UVM_VERBOSITY=$(UVM_VERBOSITY) -quiet +define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR -incdir . hello_world.sv

Link to comment
Share on other sites

I tried with same command by setting correct uvmhome and fresh new lib downloaded from uvmworld.org but still getting below error.

ncsim: *E,MSSYSTF (/home/naveenm/Desktop/sagar/uvm/uvm-1.1a/src/deprecated/uvm_type_utils.svh,33|22): User Defined system task or function registered during elaboration and used within the simulation has not been registered during simulation.

$uvm_type_name(r,val);

Link to comment
Share on other sites

this look like a broken ius install on your side (i checked 11.10p001) and as it runs fine here

uwes@ilvnc3[none]~/src/uvm/distrib/examples/simple/hello_world$ irun -access rw -uvmhome ../../.. +UVM_VERBOSITY=UVM_LOW -quiet +define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR -incdir . hello_world.sv

(btw are you on the right architecture for your install?)

runs fine.

Link to comment
Share on other sites

yes i am on correct path in hello world example and giving the correct path for uvm home.

but 1 supprising thing i am finding is,when i have downloaded uvm-1.0 package and gone inside helloworld example and ran make command it went trough with out any trouble.

this problem is comming in package 1.1a and 1.1b.

I am not sure if it is a tool issue in between versions of uvm 1.0 and 1.1,

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