Product Documentation
Spectre AMS Designer and Xcelium Simulator Mixed-Signal User Guide
Product Version 22.09, September 2022

probe

   Controls the values being saved to a database. You can

You cannot use the probe command to probe VHDL objects to a VCD database. You can create a VCD database for VHDL objects by using the call command to call predefined CFC routines, which are part of the NC VHDL simulator C interface. See call for details on the call command. See Appendix B, "VCD Format Output," in NC VHDL Simulator Help for information on VCD files.

With an SHM database, you can probe all VHDL signals, ports, and variables that are not declared inside subprograms unless their type falls into one of the following categories:

You can create probes for digital objects only if the objects have read access. (Analog objects have read access by default.) If you specify a digital object as an argument to the probe command, and that object does not have read access, the software reports an error. If you specify a scope as an argument to the probe command, the software excludes from the probe any digital objects within that scope that do not have read access and reports a warning.

probe Command Syntax

probe_command ::=
     probe probe_params

probe_params ::=
    [-create] ports_to_probe | object create_params ... db_format
    |-delete { probe_name | pattern } ...
    |-disable { probe_name | pattern } ...
    |-enable { probe_name | pattern } ...
    |-save [ filename ]
    |-show [{ probe_name | pattern } ...] [-database dbase_name ]
    |-emptyok

ports_to_probe ::=
     -all [depth] [{-flow | domain}] [-variables] [-vspice_cell]
    |-inputs [depth] [{-flow | domain}]
    |-outputs [depth] [{-flow | domain}]
    |-ports [depth] [{-flow | domain}]

depth ::=
     -depth { n | all | to_cells}

domain ::=
     -domain {analog | digital}

object ::=
      instance_name [{-flow | domain}]
    | port_name [{-flow | domain}]

create_params ::=
    |-aicms
    |-noaicms
    |-inhconn_signal global_signal
         |-rnmnets
    |-nettype nettype

    |-name probe_name
    |-screen [-format format_string ] [-redirect filename ] objects
    |-variables
    |-waveform

db_format::=
     -shm
    |-vcd
    |-evcd
    |-database dbase_name

For detailed syntax information for the probe Tcl command, see "probe Command Syntax" in the "probe" section of "Using the Tcl Command-Line Interface" in the Xcelium Simulator Tcl Command Reference.

probe Command Options

This section describes the options that you can use with the Tcl probe command.

[-create]
[{ object | scope_name } ...]
[ options ]

Places the values of the specified simulation objects in a database. The simulation objects must have read access.

You can only probe simulation objects that have read access. You can also probe signals inside the SPICE scope. For the list of probe options that are supported in SPICE, see Probe Options Supported in SPICE Scope.

If you are probing an SHM or VCD database, you can add an argument to the -create modifier that specifies the following:

  • The object or objects you want to traceIf you specify -create with the -inhconn_signal option, the object must be an instance (not a terminal) and must have a full hierarchical name.
  • The scope or scopes you want to trace
  • A combination of objects and scopes

If you do not specify an argument, the software uses the current debug scope. However, you must include an option that specifies the objects to include in the trace. For more information, see ports_to_probe in the syntax description for the probe command.

If more than one database is open, you must use one of the following options to specify the database into which you want the software to dump the values:

  • -database dbase_name
  • -shm
  • -vcd
  • -evcd

You can specify the following options for the -create modifier when you use the Xcelium simulator with mixed-signal option:

  • -all [-variables]
  • -database dbase_name
  • -depth {n|all|to_cells}

    The software does not probe currents through inherited connections when processing the all argument.

  • -domain {analog|digital}
  • -emptyok
  • -evcd
  • -name probe_name
  • -outputs
  • -ports
  • -screen [-format format_string ] [-redirect filename ] objects
  • -shm
  • -vcd

-aicms

Probes automatically-inserted connect module (AICM) scopes exclusively. By default, -aicms uses -depth all for the AICM scope search. You must also specify -all, -domain, -variables, -ports, -outputs, or -inputs.

You cannot use the following options when you specify -aicms:

  • -inhconn_signal global_signal
  • -screen [-format format_string ] [-redirect filename ] objects

Here are some examples:

The following command probes inputs of all AICM scopes relative to the current scope:

probe -create -aicms -depth all -inputs

Specifying -depth all is optional because the default behavior is -depth all. So, you could use the following command instead:

probe -create -aicms -inputs

The following command probes inputs of all AICM scopes relative to the scope top.i1.i2.i3:

probe -create -aicms -depth all -inputs top.i1.i2.i3

Again, you could use the following command instead, because specifying -depth all is optional:

probe -create -aicms -inputs top.i1.i2.i3

-noaicms

Uses the -noaicms option to exclude the AICM scopes from the probe set specified using the Tcl probe command. For example:

probe -create -all -noaicms

Currently, the -noaicms option is applicable for AICMs in Verilog scope only.

-flow

Indicates a current probe. You can probe current in Verilog-A and Verilog-AMS modules that are behavioral or that instantiate Spectre subcircuits, Spectre primitives supporting calculated currents, or other Verilog-A or Verilog-AMS modules. You can also probe current in Spectre subcircuit and built-in primitive instances in Verilog-AMS modules. The probed object must be a port or an instance when you use the -ports or the -all option.

Use -flow -all to save port currents and all other values and quantities covered by the -all option. You cannot probe currents through inherited connections.

Use -flow with -ports, -inputs, or -outputs to probe currents in the specified objects of the scope.

  • The software saves waveforms in Verilog modules as signal _$flow. Consequently, to plot the signal in SimVision, you need to add the _$flow extension to the signal name.
  • The software saves waveforms in SPICE or Spectre subcircuits or primitives as just signal, without the appended _$flow.

You cannot probe currents in

  • Simulations using the partition-multirate capability
  • AC analysis
  • The following Spectre built-in devices: port, delay, switch, hbt, transformer, core, winding, fourier, d2a, a2d, a2ao, a2ai. Use the analog simulation control file to probe the currents in these primitives.

If you create a current probe after the simulation starts, the value of the current becomes available only after the next time period.

-inhconn_signal

Specifies the -inhconn_signal option in the following format with the  -create  modifier:

-inhconn_signal global_signal

You must use the  -flow  option when you specify this option. These two options together specify that you want the probe to return the total current drawn from global_signal through inherited connections by the specified instance. The global_signal must have a full hierarchical name. The software generates a signal named either global_signal _$flow or just global_signal, depending on whether the instance is of a Verilog module or of a SPICE or Spectre subcircuit or primitive.

-rnmnets

Uses the -rnmnets to probe only the set of RNM nets in the specified scope. For example:

probe -create -shm -rnmnets

When you specify the -rnmnets option along with {object, scope_name}, the tool probes only the RNM nets for the target scope. Similarly, when you use the option with -aicms, -ports, -inputs, -outputs, or -depth {all, end, to_cell}, the tool probes only the RNM nets among all the scope/ports.

Using the -all option along with the -rnmnets option probe all the objects within the given scope; that is, all nets including RNM nets are probed.

You cannot use the following options when you specify -rnmnets:

  • -flow
  • -inhconn_signal global_signal

-nettype <nettype>

Prunes the selection of probes by selecting only a specific nettype. The command configures the simulator to probe a net only when the net belongs to the specified nettype. 

When you specify -nettype along with the -depth {all, end, to_cell} option, the tool controls the levels of hierarchy to be traversed while selecting probes.  Optionally, you can specify {scope_name} to further prune the probing. If scope is not specified, top level scope is used by default. This supports typical TCL scope and/or -depth semantics.

To probe multiple nettypes, multiple probe commands must be specified.

-delete { probe_name | pattern } ...

Deletes the probe(s) specified by the argument. The argument can be a probe name or a list of probe names. You can use the two wildcard characters (* and ?) in the probe name argument.

-disable { probe_name | pattern } ...

Disables the probe(s) specified by the argument. The argument can be a probe name or a list of probe names. You can use the two wildcard characters (* and ?) in the probe name argument.

-enable { probe_name | pattern } ...

Resumes the probe(s) specified by the argument. The argument can be a probe name or a list of probe names. You can use the two wildcard characters (* and ?) in the probe name argument.

-save [ filename ]

Creates a Tcl script that you can execute to re-create the current databases and probes. If you do not specify a filename argument, the script is printed to the screen.

-show [{ probe_name | pattern } ...][-database dbase_name ]

Outputs information about the probe(s) specified in the argument. The argument can be a probe name or a list of probe names. You can use the two wildcard characters (* and ?) in the probe name argument.

Add the -database sub-option to print information on probe(s) in the specified database.

probe Command Examples

The following command creates a probe on all objects in the current debug scope. All objects have read access. Data is sent to the default SHM database. If no default SHM database exists, a default database called xcelium.shm in the file xcelium.shm is created. The -create modifier is not required. The -all option (or -inputs, -outputs, or -ports) is required because no object or scope_name argument is specified.

xcelium> probe -create -shm -all

The following command creates a probe on all nets of type mynettype; and, mynettype must be a nettype.

xcelium> probe -create -shm -nettype mynettype -depth all

The following command creates a probe on all nets of type mynettype at scope top.I1.I2 and the level below.

xcelium> probe -create -shm -nettype mynettype -depth 2 top.I1.I2

The following command creates a probe on all nets of type mynettype at the top level.

xcelium> probe -create -shm -nettype mynettype

The following command creates a probe on all inputs in the current debug scope. Data is sent to the default VCD database. If no default VCD database exists, a default database called  xcelium.vcd in the file xcelium.vcd is created. The -inputs option (or -all, -outputs, or -ports) is required because no object or scope_name argument is specified.

Probing analog objects to a VCD database is not supported, so the following command should not be used for such objects.

xcelium> probe -vcd -inputs

The following command creates a probe on all ports in the current debug scope. Data is sent to the database waves. This database must already exist. The -ports option (or -all, -outputs, or -inputs) is required because no object or scope_name argument is specified.

xcelium> probe -database waves -ports

The following command creates a probe on the signal sum in the current debug scope and sends data to the default SHM database (creating one called xcelium.shm in the file xcelium.shm, if necessary).

xcelium> probe -shm sum

The following command creates a probe on sum and c_out in the current debug scope and sends data to the default SHM database (creating one called xcelium.shm in the file xcelium.shm , if necessary).

xcelium> probe -shm sum c_out

The following command creates a probe on sum in scope u1, sending data to the default SHM database (creating one called xcelium.shm in the file xcelium.shm, if necessary).

xcelium> probe -shm u1.sum

The following command creates a probe on all objects in scope u1.

xcelium> probe -shm u1

The following command creates a probe on all objects in scopes u1 and u2.

xcelium> probe -shm u1 u2

The following command creates a probe on all ports in scope u1.

xcelium> probe -shm u1 -ports

The following command creates a probe on all ports in scope u1 and its subscopes.

xcelium> probe -shm u1 -ports -depth 2

The following command creates a probe on all ports in scope u1 and all scopes below u1.

xcelium> probe -shm u1 -ports -depth all

The following command creates a probe on every signal inside spice instance spice_A1.

xcelium> probe -create -shm top.spice_A1.* -depth all

The following command creates a probe on all ports in scope u1 and all scopes below u1, stopping at modules with a `celldefine directive.

xcelium> probe -shm u1 -ports -depth to_cells

The following command creates a probe called peek.

xcelium> probe -shm sum -name peek

The following command monitors value changes on the digital signals clock and count, and an analog signal, analogsig. When either of the digital signals changes value, output for all the signals displays on the screen.

xcelium> probe -screen clock count analogsig
Created probe 1
xcelium> run 10 ns
Time: 5 NS: board.clock = 1'h1 : board.count = 4'hx
Ran until 10 NS + 0

The following command probes all the port currents of instance top.A.

probe -create -flow -shm -ports top.A

The following command probes a single port current. The command specifies, as it must, the formal port name of the instance being probed.

probe -create -shm -flow top.A1.b1

The following command probes the current drawn by the top.A instance from the \vdd! global net through inherited connections. Notice how full hierarchical names are specified for both the instance and the net. The original name of the net is cds_globals.\vdd! but preserving that name through the Tcl shell requires a second backslash, the space at the end of the name, and quotation marks.

probe -create -shm -flow top.A -inhconn_signal "cds_globals.\\vdd! "

In the following command, the -format option is included to format the output of probe -screen.

xcelium> probe -screen -format "clock = %d \ncount = %b" clock count
Created probe 1
xcelium> run 10 ns
clock = 1'd1count = 4'bxxxx
Ran until 10 NS + 0

The following example illustrates the simulator output when you use probe -screen to monitor signal value changes, and then disable the probe at some later time.

xcelium> probe -screen clock count
Created probe 1
xcelium> probe -disable 1
xcelium> run 10 ns
Time: 5 NS: board.clock = <disabled> : board.count = <disabled>
Ran until 10 NS + 0

The following command displays the state of all probes.

xcelium> probe -show

The following command displays the state of the probe called peek.

xcelium> probe -show peek

The following command disables the probe called peek.

xcelium> probe -disable peek

The following command enables the probe called peek , which was disabled in the previous command.

xcelium> probe -enable peek

The following command deletes all probes beginning with the characters pe.

xcelium> probe -delete pe*

The following command deletes all probes beginning with the characters v and w.

xcelium> probe -delete {[vw]}

The following command shows the error message that is displayed if you run in regression mode and then probe an object that does not have read access.

xcelium> probe -shm d
xmsim: *E,RDACRQ: Object does not have read access: hardrive.h1.d.

The following command produces a warning message for attempting to probe an analog object to a VCD database.

xcelium> probe -create -vcd top.analogResult -waveform

The error message is

xmsim: *W,PRALOB: Cannot probe analog object:
         top.analogResult. This object ignored.

xmsim: *E,PRWHAT: no items specified in probe -create command.

Related Topics



 ⠀
X