Doubt regarding Simvision:

Hello friends,
I have declared my protocols signals in class, here my question is …
“i am not getting how to view my declared signals in simvision which are defined inside the class?”
“is this possible?”

Regards
Raghavendra

How are you running simvision?

If you’re using Systemverilog dynamic-objects (queues, dynamic-arrays, associative arrays, class instances), and it sounds like you are, then I don’t think you can view the dynamic-object’s activity from a postprocess simvision session. (In other words, if you run ncsim/irun in batch/command-line mode, exit, then run simvision separately.)

I think dynamic-objects are only debuggable inside a live simulator session. I use (IUS62s004) irun to call my simulation: irun -gui … (ncsim -gui works ok, too.)

Please see the response from pjigar listed below:
http://cdnusers.org/Forums/tabid/52/forumid/66/tpage/1/view/topic/postid/8560/Default.aspx#8562

SimVison now has a SV Class Data Browser that is available during simulation. You can enable it with an environment variable.

% setenv SIMVISION_ENABLE_DATA_BROWSER 1

When you start SimVision, you can open the browser from Windows->New->SV Data Browser.

There is also a SystemVerilog Class Browser that is a tab in the Design Browser (the bottom tab).

Tim

% setenv SIMVISION_ENABLE_DATA_BROWSER 1

Wow, I learn something new every day! I just tried this on my testbench, and I immediately ran into a simvision (6.2s004) bug on associative-arrays.

The data_browser works fine for queues/arrays which use a numerical index:

ncsim> value tb_me.dram1.queue_rdata[0]
16'h0006
ncsim> value tb_me.dram1.queue_rdata[1]
16'h7002
ncsim> value tb_me.dram1.queue_rdata[2]
16'h0006
ncsim> value tb_me.dram1.queue_rdata[3]
16'h7000

But the data_browser fails on arrays that use enum-indexing.

package pkg_x1;
// typedef_clients: create an "human-readable" indexing-system
  typedef enum bit [2:0] {
    TOT_hs = 3'd0, TOT_uplc=3'd1, TOT_disk=3'd2, ... } typedef_clients;

  class cls_queue_elements; // 
  // ...
  endclass : cls_queue_elements
endpackage : pkg_x1

...

module tb_me;

// throttle[]: index this array using <typedef_clients>
**cls_queue_elements throttle[ typedef_clients ];**

...

ncsim> value -keys tb_me.throttle
TOT_hs TOT_uplc TOT_updw TOT_disk TOT_host TOT_diskrfm TOT_UNKNOWN
ncsim> **value tb_me.throttle[TOT_hs]**
<font color=Red>ncsim: *E,TCLERR: invalid command name "TOT_hs".
    while executing
"TOT_hs"
    invoked from within
"value tb_me.throttle[TOT_hs]"</font>
ncsim> **value tb_me.throttle[TOT_uplc]**
<font color=Red>ncsim: *E,TCLERR: invalid command name "TOT_uplc".</font>
...

At the console, I tried manually typing:

ncsim> **value { tb_me.throttle[TOT_hs] };**
<font color=Red>ncsim: *E,ILLNUM: Expecting an integer numeric literal ([TOT_hs] )</font>

So the above attempt failed, but my next try worked:

ncsim> **value tb_me.throttle[ value pkg_x1::TOT_hs ];**
@280_1

…unfortunately, @280_1 isn’t very descriptive :)

Thank you All,
I didn’t find SV Data Browser option, i am using “SIMVision 06.20-s004”, i got this error message when i am tryting to view my class signals in waveform window.
ncsim: *E,PRDNIY: Probes through class handles not yet implemented: *_tb_top._smp::m_fields_checked.
If possible can i have the snapshot of the path “Windows->New->SV Data Browser”

Regards
Raghavendra

Thanks alot…finally i got it…

There is also a handy application note that you can read to learn more about dynamic data debugging on Sourcelink entitiled, " Viewing Dynamic Objects with Simvision". You can find it here → http://sourcelink.cadence.com/docs/files/Application_Notes/2008/Viewing%20Dynamic%20Objects%20with%20Simvision%20.pdf#xml=/en/search/DisplayDocument.jhtml?VdkKey=http://sourcelink.cadence.com/docs/files/Application_Notes/2008/Viewing%20Dynamic%20Objects%20with%20Simvision%20.pdf&QueryText=SystemVerilog+simvision

signalscan4ever, thanks for reporting the issue with viewing associated arrays with enum-indexing. We will look into it.

Another technique that I find useful is the describe command for printing dynamic data interactively. You can use it with class handles as follows:

ncsim> describe @280

Hope this helps.

Umer

signalscan4ever, thanks for reporting the issue with viewing associated arrays with enum-indexing. We will look into it.
Umer

Thank you. A Cadence Application Engineer told us the associative-array bug was corrected by a recent hotfix (s006 or s007?)

I just tried IUS 6.20s007, and the Systemverilog object-browser correctly parses & displays my associative arrays. Thanks!

Another question for Simvision 8.1s004:

In a simvision session, I created a breakpoint on a class’s randomize() method. After the simulator breaks on the randomize() call, the stack command fails.

The stack command appears to work on most other types of breakpoint (line, object, timestamp, etc.)

ncsim> stop -create -randomize -always cls_tx_updw
<font color=RoyalBlue>Created stop 2</font>
ncsim> run
<font color=RoyalBlue>57524.000 ns   tb_xyz.post_tx_transaction_stub(): <cls_tx_updw>(#924) ctr==78 write0=84c5
57524.000 ns   retire_compare_objects( <cls_tx_updw>(#924) ): ADDR  WRITE count(1): sb_compare[(#925) TOT_updw] @0x001b9f1  GOOD done
57524.000 ns   retire_compare_objects( <cls_tx_updw>(#924) ): DATA  WRITE count(1): sb_compare[(#926) TOT_updw] @0x001b9f1  GOOD done</font>
ncsim> stack
<font color=Red>ncsim: *E,STKRVL: Command works only in the running scope in verilog.</font>

I’m not using any solver equations, so my randomize() method always succeeds.