SeanChou Posted December 23, 2011 Report Share Posted December 23, 2011 All, It should be a simple mistake with message below, please help and thanks a lot! $uvm_type_name(r, ral); | ncsim: *E,MSSYSTF (./uvm_type_utils.svh, 32:22): User Defined system task or function registered during elaboration and used within the simulation has not been registered during simulaton. Quote Link to comment Share on other sites More sharing options...
SeanChou Posted December 23, 2011 Author Report Share Posted December 23, 2011 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 Quote Link to comment Share on other sites More sharing options...
uwes Posted January 13, 2012 Report Share Posted January 13, 2012 (edited) 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 January 17, 2012 by uwes Quote Link to comment Share on other sites More sharing options...
arno Posted January 17, 2012 Report Share Posted January 17, 2012 (edited) 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 January 17, 2012 by arno Quote Link to comment Share on other sites More sharing options...
KathleenMeade Posted January 17, 2012 Report Share Posted January 17, 2012 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 Quote Link to comment Share on other sites More sharing options...
uwes Posted January 17, 2012 Report Share Posted January 17, 2012 (edited) 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 January 17, 2012 by uwes Quote Link to comment Share on other sites More sharing options...
arno Posted January 17, 2012 Report Share Posted January 17, 2012 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. Quote Link to comment Share on other sites More sharing options...
uwes Posted January 17, 2012 Report Share Posted January 17, 2012 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 Quote Link to comment Share on other sites More sharing options...
SeanChou Posted January 19, 2012 Author Report Share Posted January 19, 2012 uwes, Thanks you for letting me know this option is only needed temporarily and hope we could remove this option in the next UVM revision. Quote Link to comment Share on other sites More sharing options...
sega Posted October 15, 2012 Report Share Posted October 15, 2012 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 Quote Link to comment Share on other sites More sharing options...
uwes Posted October 15, 2012 Report Share Posted October 15, 2012 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 Quote Link to comment Share on other sites More sharing options...
sega Posted October 15, 2012 Report Share Posted October 15, 2012 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); Quote Link to comment Share on other sites More sharing options...
uwes Posted October 15, 2012 Report Share Posted October 15, 2012 please state your versions of uvm, ius and your full command line. /uwe Quote Link to comment Share on other sites More sharing options...
sega Posted October 15, 2012 Report Share Posted October 15, 2012 version of uvm is uvm-1.1a and i tried for 1.1b also, ius version is 11.10 command is : uvm-1.1a/examples/simple/hello_world$ irun -access rw -uvmhome ../../../ -quiet +define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR -incdir . hello_world.sv Quote Link to comment Share on other sites More sharing options...
uwes Posted October 15, 2012 Report Share Posted October 15, 2012 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. Quote Link to comment Share on other sites More sharing options...
sega Posted October 15, 2012 Report Share Posted October 15, 2012 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, Quote Link to comment Share on other sites More sharing options...
uwes Posted October 15, 2012 Report Share Posted October 15, 2012 hi, i cant see see the issue here. please validate your install, upgrade to latest ius or provide more info via a request in the cadence support system regards /uwe Quote Link to comment Share on other sites More sharing options...
sega Posted October 15, 2012 Report Share Posted October 15, 2012 ok thank you ,,I will check through cadence support system. Quote Link to comment Share on other sites More sharing options...
sega Posted October 16, 2012 Report Share Posted October 16, 2012 hi uwes, I checked with lib installation,,there was having some problem,, that got resolve by support team. Now I am able to run.. thanks again for your inputs. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.