Jump to content

uwes

Members
  • Posts

    625
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by uwes

  1. here is some info howto do that http://support.cadence.com/wps/mypoc/cos?uri=deeplinkmin:doc;src=wp;q=ApplicationNotes/Functional_Verification/OVM_UVM_AppNotes/Performance_Analysis_with_UVM.pdf /uwe
  2. "import" just makes the symbols of the package visible. doing so inside or outside of a package can change what is being included/referenced and might change initialization order and therefore randomization. in general you should - only import within a scope (such as in a package/module/program) and not use the global scope - avoid (static) initialization races - protect areas which you want rand-stable with code (or use uvm for that)
  3. Cadence IUS12.20 has been qualified to run uvm11d and is the recommended version.
  4. hi, i would do three things: 1. make the probability high that you see normal use cases (legal traffic) and the probability for illegal low. 2. you can now decide whether you want to ignore or drive the illegal traffic 3. if you decide to drive the illegal config/values you have to harden your sb. usually you also want illegal values driven in order to see they are not causing final lockups, hangs or other bad things and your device can recover. /uwe
  5. hi, either simply write a sequence which selects randomly a sequence (with a dist) from a set - or use the uvm_sequence_library base class to to accomplish that /uwe
  6. you simply dont model these fields. only modeled fields will be checked when enabled.
  7. #1 you can use a static call anywhere (in contrast non-static calls have to be invoked on an object) #2 you can enable read/write trace and audit, you can dump the whole database, you can trace via +UVM_CONFIG_DB_TRACE, you can find written-but-not-read data in the config-db. all of this should help to figure out where the issue is (mismatching key issues, mismatching type issues, ordering/prio/precedence issue)
  8. you need to set some_uvm_reg_hw_reset_seq_instance.model to your register model
  9. uvm_config_db is just a typed key-value store. the key is made from (context,path,field). context is a reference to a uvm_component (any method will do (this,null, find_component(),get_parent(),get_parent_sequencer() but also just a path like my_parent.some_subcomponent.somesubsubcomponent). you can share the handle to a uvm_event via the config db. everyone would see the same uvm_event object and therefore any event raised in there would be visible in all other places. /uwe
  10. depends what you means with RAL. RAL (the register model) has been upgraded significantly and is now part of UVM. that register model is labeled UVMREG and the cadence register generator supports that model. that means ireggen can generate output for UVMREG. RAL (the register input description) is not supported by ireggen. ireggen main input is based upon the IPXACT standard. regards /uwe
  11. hi, there are a couple of things to check. basically the sequencer-driver protocol is a two way handshake: 1. seq item waiting until it is arbitrated, randomized and send to the driver 2. the sqr waits till the driver returns with item_done() first i would check on which side it is blocking (in the sqr or the driver or inbetween) i would also check if there are special semaphores in the system which could block progress (registers for instance) which may block when a reset/phase jump was executed. /uwe
  12. it simply means you are accessing a queue on an undefined index. if this is a user error or a uvm error depends upon the rest of the environment. a stacktrace would be helpful
  13. this sounds like http://eda.org/svdb/view.php?id=4322 and is fixed in uvm11d. i dont really think this is an instance of evil macros. there has been simply a new function introduced "set_item_context" which broke the code.
  14. as the message says you cant reference an absolute hier path from within a package (dut.register). there are various solutions (use a interface/virtual interface or move the code outside of the package or...)
  15. hi, did you use a module or program block for your issue and is this a cadence simulator?
  16. hi, to have +uvm_set_config_int=*,var_size,512 work the following needs to be in place: 1. it needs to be a uvm_field_int (if you use autoconfiguration) 2. it have to be a field of a component 3. there should be no other overrides /uwe
  17. in order to use transaction recording into simvision you have to check the following: 1. running with the cadence supplied version of uvm which has the right adapter between simvision and uvm in place 2. you have to set the config variable recording_detail to something>0, there are multiple ways to do that. a simple path is at the tcl prompt "uvm_set -config '*' recording_detail 1", there is a button, you can code it, you can do this on the cmdline 3. (ensure you set the recording_detail right in the beginning (during run_phase its too late) 4. you will see the fiber hierarchy once transactions are being created/sent regards /uwe
  18. your list is of elements of test_base. it can hold arbitrary elements being at least a test_base. however you can only access the properties of test_base directly (since this is guaranteed). to access properties of derived members you either have to use a cast or use virtual access functions. /uwe
  19. well, a better solution for a couple of issues would be 1. make a uvmCoreServiceClass class with virtual members like "virtual uvm_root getUVMRoot();" ... and potentially other global reporter, resource_pool, factory ... 2. make a single const instance "const uvmCoreServiceClass uvmCoreService = `UVM_CORE_SERVICE::get();" //so you CAN override the class 3. now replace all static calls like uvm_root::bla or uvm_factory::boo with calls to the service class. (the static calls just make sure it will be this class forever and this is not really extensible and base class friendly) 4. now it would be possible to derive from uvmCoreServiceClass and reimplement getUVMRoot() returning a derived uvm_root. /uwe
  20. this smells like a broken install or an issue with your os (use "checkSysConf" to check that). if the issue persists please open a ticket with cadence support. /uwe
  21. here are some examples (the developer tests) http://uvm.git.sourceforge.net/git/gitweb.cgi?p=uvm/uvm;a=tree;f=tests/35objections/91heartbeat;h=64f960b506d9d6fc3323fdf677c96e24f6f07739;hb=refs/heads/UVM_1_1_d basically the heartbeat raises an error if there is no "ping" from a set of objects(configurable) within a window. the window is defined by trigger events of an uvm_event used to configure the heartbeat. the set of objects is determined by the <hb>.add() calls. the notification of the "ping" (the "i-am-alive-message") is done via a uvm_callbacks_objection and raise/drop.
  22. defining UVM_NO_DEPRECATED for an older environment typically leads to compile errors since the deprecated code is within ifdefs. there might be some places where the code compiles but you see a runtime warning that things are deprecated. >Mine simulation gave all the usual DEPRECATED warning and just got stuck at time 0. this typically happens with old ovm style environments. you may try the +UVM_USE_OVM_RUN_SEMANTIC define (please check the exact spelling).
  23. hi, UVM_NO_DEPRECATED defined means that no deprecated functions/code is available. while this gives you a hint where uvm is moving on it might break your code. at that point you can upgrade your code so it uses non-deprecated features. UVM_OBJECT_MUST_HAVE_CONSTRUCTOR is an additional define for a change anticipated for uvm1.2. it basically means that you have to have a constructor in any uvm_object. see http://www.eda.org/svdb/view.php?id=3770 for more info including a pointer to the script fixing this. /uwe
  24. clean your libraries (or simply remove INCA_libs) and ensure that you dont include uvm_pkg.sv in any file (nor that you include it in your files to compile)
  25. hi, the simple path is: - remove all includes of uvm_* or uvm.sv files from your sources - add a "import uvm_pkg::*;" where needed, typically followed by an include uvm_macros.svh" update irun - remove all ovm/uvm options, incdirs apart from -uvm or -uvmhome <your path to uvm> (irun takes care to compile uvm_pkg.sv so no need to add this in your filelist)
×
×
  • Create New...