|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
The Virtuoso® UltraSim™ simulator interactive circuit debugging mode allows you to obtain design data, such as circuit elements and parameters, circuit topology, and instantaneous signal values. It can also be used to probe dynamic circuit behavior, including voltage and current waveforms simulated to the current time step.
The UltraSim[I]*> prompt is displayed (I is an integer) in interactive mode, indicating the Virtuoso UltraSim simulator is ready to receive interactive mode commands. The interactive commands shell allows you to apply any Tcl commands and constructs, and to redirect output of interactive shell commands to a file. All system commands supported by Tcl are also supported in the interactive mode.
To invoke the Virtuoso UltraSim simulator interactive mode:
|
Use -i in the command line |
|
Use -cmd <command_file_name> in the command line |
|
Type Ctrl-C at any time after DC initialization |
You can generate different types of output files in interactive mode:
|
Lists the history of all Virtuoso UltraSim simulator commands used. |
|
|
Contains a list of commands and simulator outputs (copy of stdout file). |
The Virtuoso UltraSim simulator supports the following interactive simulation general commands:
This command is used to create the alias name (alias_name) for the existing interactive command cmd_name. If the command is used without arguments, the existing list of aliases is printed.
Note: Existing interactive mode commands cannot be used as an alias name.
tells the Virtuoso UltraSim simulator to create an openlog alias for the interactive mode command open.
provides a list of existing aliases.
prints the command aliased to openlog.
Allows you to execute any UNIX or Linux command.
Lists all of the files in the current working directory.
This command is used to stop the Virtuoso UltraSim simulator and exit the simulation.
Log file "./simulation.ilog" closed
tells the simulator to end the simulation and exit (interactive log file is automatically closed).
Use this command to display the cmd_name syntax and description. If cmd_name is not specified, a list of all interactive commands is printed. If the -all option is specified, the syntax for all interactive commands is printed.
tells the simulator to display the read command syntax and description.
The history or h command prints out a list of the last 30 interactive commands used. You can use !! to recall the last command in the interactive shell. To recall a previously used interactive command with an index, use !index.
1 history
flush
history
1 history
2 flush
3 flush
4 history
tells the simulator that history is the first Virtuoso UltraSim command (section [1]), flush is the second command (section [2]), and !! prints out the last command used (section [3]).
Note: Use !1 to print out the first command in the history list.
The run_cmd command reads the cmd_file and executes the sequence of interactive mode commands defined in the file. Multiple command files can be used, but run and stop commands are only executed from the main file (main file is the command file called from the Virtuoso UltraSim simulator command line or first read in by the runcmd file). To display the commands, set the -v option.
tells the simulator to read and execute interactive commands from the chip.icmd file.
The Virtuoso UltraSim simulator supports the following interactive simulation log file commands:
This command is used to close the active log file.
Log file "./simulation.ilog" closed
tells the simulator to close the active log file.
Opens the logfile_name file in the current working directory in which interactive mode commands and results can be recorded (Tcl interface and log file outputs are the same). If the -a option is set, the print out is appended to the existing log file (otherwise the existing log file is overwritten).
Note: Using this command automatically closes the previous log file.
tells the simulator to open the chip.log file and writes all interactive mode information into the file.
The Virtuoso UltraSim simulator supports the following interactive simulation analysis commands:
This command is used to report connectivity information for the node specified by name or node index. The amount of information reported is controlled by level and num and is used to dump elements (default=50). The conn command is generally used in conjunction with the describe and node commands to trace connectivity. For more information on node, element, or instance index, see the index command.
The level argument consists of:
|
level 0 generates a summary of elements connected to the node, number of R/C/MOS/DIODE devices, and a description of each device. This is the default setting. |
|
level 1 generates a summary of elements connected to the node, number of R/C/MOS/DIODE devices, and shows all terminals. |
The ith argument defines the current threshold to be applied, which is used as a criteria for listing channel-connected elements. When specified, UltraSim lists only those channel-connected elements that have current more than the ith value. The default value of ith is zero (all elements are listed).
generates the following level 0 summary:
RES: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_0, ID=0, res=1.10887
RES: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_1, ID=1, res=22.7632
CAP: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_4, ID=6, cap=9.37962e-16
Summary of devices connected to node wl<5>
generates the following level 1 summary:
RES: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_0, ID=0, res=1.10887
NODE1: xpost0.xi0.xi5.xinv3.$#R43.$#R43_4
RES: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_1, ID=1, res=22.7632
NODE1: xpost0.xi0.xi5.xinv3.$#2
CAP: Name=xpost0.xi0.xi5.xinv3.$#R43.$#R43_4, ID=6, cap=9.37962e-16
Summary of devices connected to node wl<5>
3 Channel connected and 0 Non-channel connected elements
The describe command is used to print detailed information for given element or instance names, including element type, parameters, terminals, terminal voltages, element currents, conductances, and capacitances. If -ei elem_index is used, detailed information for the element with the index of elem_index is printed. If -ii inst_name is used, the detailed information for the instance with the instance_name index is printed. If -subckt subckt_name is used, the elements included in the subckt_name block are printed.
describe xpost0.xi0.xi5.xinv3.xp0.m0
prints the following information:
MOS: Name=xpost0.xi0.xi5.xinv3.xp0.m0, TYPE=pmos, ID=2
+ m = 1.000000e+00 ad = 1.756000e+00 as = 1.178000e+00 l = 1.300000e-01 pd = 1.084800e+01
+ ps = 6.960000e+00 w = 6.200000e+00
DRAIN:vdd voltage = 3
GATE: xpost0.xi0.xi5.xinv3.$#0 voltage = 2.99998
SOURCE: xpost0.xi0.xi5.xinv3.$#2 voltage = 7.19185e-05
tells the Virtuoso UltraSim simulator to output the following information:
returns the following information:
returns the following information:
The elem_i command is used to print the instantaneous current for all branches of the specified elements at the current simulation time, or return current through the terminal if specified. MOS transistors, resistors, capacitors, inductors, diodes, and bipolar junction transistors are some of the supported elements.
tells the Virtuoso UltraSim simulator to print the instantaneous current for all branches of the *.mm11 MOSFET at the current simulation time, and generates the following report:
tells the simulator to return the terminal current (-term option is used).
tells the simulator to return only the static (dc) current, and generates the following report
The exi command reports the elements for the specified element name that have a current greater than the specified threshold current value (in amperes). The default value is 5e-5A and wildcards (*) are supported. For more information about wildcards, see "Wildcard Rules".
The results are printed either as a list of element names or indices. If -v is defined, the element indices are printed in a list called usim_index_list (if -v is not defined, the element names are printed). These lists are helpful when performing additional analyses on elements.
This command can also be used in a Tcl script. For example, the list can be reprinted using the puts $usim_index_list Tcl command.
Note: You can use the name command to find the element name that corresponds to an element index.
tells the Virtuoso UltraSim simulator to print out elements with the names that match x1.m* with a current greater than 1.0e-12A, and generates the following output:
UltraSim[3]*> exi -ith 1.0e-12 x1.m*
MOS: Name=x1.mm1, MODEL=pmos, ID=1 ElemKey(0x18e492a8), ModelCard(0x18b407b8)
+ w = 4.000000e-06 l = 1.800000e-07 m = 1.000000e+00
DRAIN: current = 4.68577e-12
GATE: current = 0
SOURCE: current = -4.68577e-12
BULK: current = -3.10931e-21
MOS: Name=x1.mm12, MODEL=nmos, ID=2 ElemKey(0x18e49d58), ModelCard(0x18b406b8)
+ w = 2.000000e-06 l = 1.800000e-07 m = 1.000000e+00
DRAIN: current = -4.68597e-12
GATE: current = 0
SOURCE: current = 2.88485e-12
BULK: current = 1.80068e-12
tells the simulator to print out the usim_index_list, and generates the following output:
UltraSim[3]*> exi -ith 1.0e-12 -v x1.*
This command is used to end a pseudo-transient simulation and start a transient simulation.
tells the simulator to exit the dc analysis (warning message is also generated).
This command forces the node voltage of specified nodes to a specific voltage value. Nodes can be specified by name (net_name1 net_name2 ...) or index (-ni index1 index2 ...). Voltage is applied until released or the end of the simulation is reached. If several force statements are activated, the current one overwrites the previous commands. The -rt ramp_time option defines the transition time from original value to the forced value. The default value of this option is 10ps.
|
The equal (=) sign is optional. |
|
The force operation is not performed if the net is connected to a static vsource dc=0 and one vsource port is connected to the solver ground. One solution is to replace the static vsource dc=0 with a PWL type vsource. |
|
To check if a net is connected to the static vsource dc=0, use the Virtuoso UltraSim .usim_opt nodecut_file=1 option. |
Once the simulation starts, a netlist.nodecut file is created. Open the file and check the net in the node cut list. The net is shorted to solver node 0, so the force command is not applied to the net.
|
|
|
Start Virtuoso UltraSim interactive mode and use force my_net1 2. |
|
|
|
Setup a short simulation time (for example, 1 ps) to run force in the solver. |
|
|
|
Run 1p -relative and check the values using value my_net1. |
force xi0.xi3.gate 3.0 net12 2.0
tells the Virtuoso UltraSim simulator to force v(xi0.xi3.gate) to 3.0V and v(net12) to 2.0V.
tells the simulator to force nodes with index 113 to 1.05 V.
This command is used to force nodes specified by the vector of node indices to a logic value. The threshold voltage for the logic 0 and 1 is defined by vl and vh options, respectively. The -rt ramp_time option defines the transition time from the original value to the forced value. The default value of this option is 10ps.
set add [index -n add<3> add<2> add<1> add<0>]
tells the Virtuoso UltraSim simulator to create a vector (set v) and then forces 'b01X10 to the vector (forcev). Given that vdd is 2.5V, add<3> and add<1> are forced to logic 0, corresponding to voltage 0.75V (vl is default 30% of vdd). add<2> and add<0> are forced to voltage 1.75V.
The hier_tree command is used to print the hierarchical tree for the specified subcircuit instances. If no subcircuit or instance name is specified, the Virtuoso UltraSim simulator starts from the top level of the design.
UltraSim[2]*>hier_tree -a -def
> xpost2.xi0.xi4.xinv2.xn0(nmos)
> xpost2.xi0.xi4.xinv2.xp0(pmos)
UltraSim[3]*>hier_tree -a -def -subckt xpost2.xi0
> xpost2.xi0.xi4.xinv2.xn0(nmos)
> xpost2.xi0.xi4.xinv2.xp0(pmos)
tells the simulator to print the full hierarchical name for the levels defined by a number (section [1]), subcircuit name for each instance (section [2]), and the hierarchical tree for xpost2.xi0 (section [3]).
This command provides an index for net, element, or instance names. If -e elem_name is used, the elem_name index is printed. If -n net_name is used, the index of the net with net_name is printed. If -i instance_name is used, the instance_name index is printed.
index -e xpost0.xi0.xi5.xinv3.xp0.m0
tells the simulator to return an index for the xpost0.xi0.xi5.xinv3.xp0.m0 element.
returns an index for the xi1.xi9.xi7.net12 net.
returns an index for the x1.xi134 instance.
This command is used to find all elements or nodes with names matching a specific pattern.
UltraSim[1]*> match -e xpost0*
UltraSim[2]*> match -n xpost0.*
xpost0.xi7.xi7.xinv1.xp0.inh_vpb
xpost0.xi7.xi7.xinv2.xn0.inh_vnb
tells the simulator to print all elements and nodes with the xpost0* pattern.
The meas command is used to add measurements (SPICE syntax).
UltraSim[1]*> meas tran period trig v(out) val=0.8 rise=2 targ v(out) val=0.8
rise=3
Succeed to set up the measure:
.meas tran tosc trig v(out) val=0.8 rise=2 targ v(out) val=0.8 rise=3
tells the simulator to use the meas command and measurement statement to obtain the period for the out signal.
Use this command to find the name of nets, elements, or instances by index. If -ei elem_index is used, the name of elements with elem_index is printed. If -ni net_index is used, the name of nets with net_index is printed. If -ii instance_index is used, the name of the instance with instance_index is printed.
index -e xpost0.xi0.xi5.xinv3.xp0.m0
tells the Virtuoso UltraSim simulator to return the name of nets with net index 5338.
tells the simulator to return the name of instance index 0.
Allows you to individually view all elements in the circuit. You can use nextelem 0 to view elements starting with the first one and nextelem <index> to view the elements directly.
name:v0 type:vsrc node0:vdd! node1:0
name:c4 type:cap node0:net12 node1:0 capacitance:1.00000e-13
name:v0 type:vsrc node0:vdd! node1:0
name:xil5.mn type:nmos drn:net12 gate:net40 src:0 bulk:0 W:4.0000e-06 L:2.5000e-07
This command is used to print voltage information for given nets, including voltage, voltage slope (dv/dt), and node capacitance. Nets can be specified by name (net_name) or by index (-ni net_index).
node xpost0.xi7.xi7.xinv3.xp0.s
ode xpost0.xi7.xi7.xinv3.xp0.s : voltage = 7.16334e-05; (dV/dT) = 0
Ctot=1.037e-14
node xpost0.xi7.xi7.xinv3.xp0.s : voltage = 7.16334e-05; (dV/dT) = 0
Ctot=1.345e-15
If val is specified, nodecon finds any nodes with connections greater than val. If val is not specified, nodecon finds nodes with the most connections, based on the netlist file. The report for each node contains the subcircuit name, node name, number of connections, and a Vsrc flag indicating if it is a voltage source.
tells the Virtuoso UltraSim simulator to report any nodes with more than 100 connections.
This command is used to write the operating point (OP) at the current time to the op_file. If a pattern is specified, only the OP of nodes matching the pattern are printed. If multiple patterns are specified, only the last one is processed.
|
|
|
The pattern syntax is only supported through the Tcl op statement. This syntax is not supported with the .op statement that is specified in the netlist. |
tells the simulator to print the OP for all nets into the chip.ic file.
tells the simulator to match the o?t pattern and print the voltage of nodes (for example out) in the chip.ic file.
The probe command is used to add analog waveform v(net_name1) and v(net_name2) to the waveform data list file. The added signal starts at the time it was added. You can also specify a node index using the -ni option.
Note: The probe command cannot be added when parameter storage format (PSF) is specified.
tells the simulator to add fosc<1> and fosc<2> to the fast signal database (FSDB) output file.
adds the analog waveform for nets with index 255 to the FSDB file.
This command is used to release forced voltage from specific nodes. Nodes can be specified by name (net_name1 net_name2 ...) or by index (-ni index1 index2 ...).
tells the Virtuoso UltraSim simulator to release v(xi0.xi3.gate) and v(net12).
tells the simulator to release nodes with index 113 and 105.
releases nodes specified by $v vector.
The restart command allows you to load a previously saved intermediate state (save) and to continue the simulation starting at the saved time point. To restore the database results from a previously saved file (in netlist or interactive mode) and continue the simulation, use filename. When restarting the simulation from interactive mode at an earlier time, the output file contains an .rs# suffix with # representing the number of restarts.
UltraSim[1]*> restart time@1.000000e-08
tells the simulator to restart the saved time@1.000000e-08 file.
Note: The time@1.000000e-08 file can be derived from .usim_save in the netlist file or from the save interactive command.
This command is used to continue the simulation. If arguments are not specified, the simulation continues until the next break point or the end of the simulation is reached. The run arguments can be used to specify the following actions:
|
-absolute specifies the next break point by time, starting from the beginning of the simulation. |
|
-relative specifies the next break point from the current time. |
|
-absev and -relev specifies the next break point by the number of events (absolute or relative, respectively). |
The next break point cannot occur before the current time or number of events (this condition is always true for relative arguments). If the break point is specified by a stop command or by any other means, and is closer than specified in the run command, the simulation stops at the nearest break point.
tells the Virtuoso UltraSim simulator to continue the simulation for 25 ns and then stop.
stop -create -time 20n -relative
continues the simulation, starting from the current time, and stops after 20 ns.
continues the simulation, starting from the current time, and stops after 1000 events are processed.
The save command allows you to stop during the simulation and take a snapshot of the database. To save the simulation database at the current time to the filename@time file, use the filename argument.
Note: If filename is not specified, a file with the name design name.save@time is automatically generated.
UltraSim[1]*> stop -create -time 10n
UltraSim[3]*> save time
Simulation state has been scheduled for the current time point.
tells the simulator to stop at transient time point 10 n (section [1]), continues the simulation (section [2]), saves the time point time (section [3]), and then continues the simulation to completion (section [4]). After the simulation ends, the time@1.000000e-8 file is created.
Note: You can use the restart interactive command to continue the simulation by loading the saved file.
To save memory, Ultrasim uses compact names for stitched elements and nodes. The compact names follow the format $#.$#RXXX, such as in $#.$#R0_0. The spfname command prints the corresponding names as used in the DSPF/SPEF file and vice versa. To enable this command, set the following option in the netlist:
.usim_opt spfenablenameutil = 1
The default value for spfenablenameutil is 0.
|
The compact name for the element with the name element_spf_name in the DSPF/SPEF file is printed. |
|
|
The compact name for the node with the name node_spf_name in DSPF/SPEF file is printed. |
|
|
The name of the element whose compact name is element_internal_name is printed. |
|
|
The name of the node whose compact name is node_internal_name is printed. |
UltraSim[4]*> spfname -sn xi3852:n1
tells the simulator to print the compact name for the subnode xi3852:n1 in the DSPF file.
This command is used to pause the simulation if any of the following conditions are met:
|
-show prints a list of break points. |
|
-delete deletes a break point. |
|
-create -time (time [absolute]|dtime -relative) sets a break point at <time|dtime>. |
|
-create -event (events [-absolute]|devents -relative) sets a break point after <events|devents> events are triggered. |
If arguments are not specified, all existing break points are automatically listed.
tells the simulator to delete all break points with index=15 and 29.
The time command is used to print the current and final simulation time in seconds. If the -v option is specified, the current and end time are printed as a string. If unspecified, only the value of current time is printed, and it can be used as the Tcl variable.
tells the simulator to print the current time=4.679620e-08 and end simulation time=1.000000e-07.
The value command prints the voltage or logic value of selected nodes. The format option supports the following values:
|
%g (default) and %e - floating numbers |
|
%d - integer |
|
%b - binary |
|
%o - octal |
|
%h - hexadecimal |
Formats %e, %g, and %d represent the analog node values and %b, %o, and %h the logic values. Logic values are calculated for the base of L0 and L1, where L0 = 0.0 v and L1 = 5.0 v (default). The default L0 and L1 values can be changed using .usim_opt vh=new value vl=new value.
UltraSim[6]*> value %e 14
5.019798e+00
tells the simulator to find the value of node 14 for each format defined by %b, %o, %h, %d, and %e.
The vni command prints the voltage source node with a current greater than or equal to the threshold value (default is 0).