Hello everyone. I'm using XRUN to compile/elab and simulate a design with a single command:
This is a basic SystemVerilog design, I've also added the following statements to the top module
This, as far as I know, should dump the database to be later viewed with SimVision.
I'm able to see most of the signals, but there are some signals that are not probed and I don't know how to force dumping/probing of all available signals.If I dump a .VCD it shows all signals but then I lose abilities like proper Enumerate printing, which I need.
Can anyone please help me out? Thanks
Generally we prefer the Tcl "probe" command rather than embedding probe commands via system tasks like $recordvars, as you get more control with Tcl and it's easier to turn the probing on/off.
I don't think the system tasks have any way to control the inclusion of signals that are excluded by default, again Tcl is the preferred route as it has options to control the size of arrays and vectors that get probed.
could you please provide a piece of the TCL code, which includes the mentioned probes with on/off controls?
You could start with:
probe -create -shm [scope -tops] -all -depth to_cells
if you have large arrays that you need to probe, you might need to add the options to allow larger-than-default arrays:
probe -create -shm [scope -tops] -all -depth to_cells -packed 20000 -unpacked 20000
The numbers after the -packed and -unpacked refer to the max size of array that will be probed.The -all means probe all signal types (ports, internal signals) and the "[scope -tops]" is a short-cut to specify all top-level modules, you can replace this with the exact name of the module that you want to probe if probing everything isn't what you wanted.
Let's say the H1 is the top hierarchy, H2 hierarchy is nested to the H1, H3 is nested to H2, and so on...
So, what TCL command should be used for probing the signals in the H1 and H3 hierarchy? Should it be as following?
probe -create -shm [scope H1] -all -depth to_cells
probe -create -shm [scope H1.H2.H3] -all -depth to_cells
How can I manage a depth of the dumped signals (etc two hierarchies depth)?
Should I do something special for the signals in the testbench tasks? functions?
The "to_cells" means probe every level until you reach a cell (`celldefine or a module compiled with -y or -v).
So to only probe H1, use "-depth 1".
Have a look at the documentation for the probe command (support.cadence.com) to see all the options for probing including probing classes, dynamic arrays, tasks and functions.
Thanks a lot for your feedback Stephen! How should I include these TCL commands in the xrun commandline? I think I can execute these probe commands if I use interactive/GUI mode, but my idea is to compile/elaborate/simulate/generate waves in a single command. I think -input is the option that allows to include a TCL script, but I don't know what database should I specify etc...
Yes, use the "-input" argument to xrun to run the TCL code. Here is a simple example:
% cat probes.tcldatabase -open waves -into waves.shm -event -defaultprobe -create test -depth all -tasks -functions -all -database wavesrun
% xrun -input probes.tcl
what does the -shm switch in the XRUN command mean?
what does the .shm extension in the database name means (e.g. waves.shm)?
Is the shm related to the Shared memory?
The -shm is for the probe command, not xrun. It stands for Simulation History Manager, which is a binary format in contrast to VCD or EVCD format.