.KEEP

The purpose of the .KEEP statement is to instruct SIMPLIS in a generic way to produce and save voltages/currents for printing/plotting in the subcircuits/child components. Using the .KEEP statement thus enables you to debug the sucbircuits/child component schematics through random probing without knowing in advance which voltages/currents need to be produced and kept for printing/plotting.  Similar to the .PRINT statement, the .KEEP statement in the SIMetrix/SIMPLIS environment specifies the data to be saved in a binary file but does not create an ASCII tabular output.

The format of .KEEP is as follows:

 .KEEP keep_var1 keep_var2 ... 

where keep_var1, keep_var2, and ... are legal .KEEP variables.  

Multiple .KEEP statements may be defined in a subcircuit/schematic.  Forms of legal keep variables and their meanings are listed below:

Keep Variable Definition
*V

All node voltages in the current circuit/schematic.  With this .KEEP variable specified, all node voltages in the current/schematic are produced and saved for printing/plotting.  This variable is allowed only if node 0 is present in the top-level circuit/schematic because the node voltages are measured with respect to the voltage of node 0 in the top-level circuit/schematic.

The SIMetrix vector names for the node voltages generated by the *V keep variable will be the same as the SIMetrix vector names for the node voltages generated through .PRINT statements:

  • A node with a node number of NodeNum without any node mapping will result in a node voltage whose SIMetrix vector name is NodeNum plus a path prefix if this node is not in the top-level schematic.  
  • Similarly, a node mapped to a name of NodeName will result in a node voltage whose SIMetrix vector name is #NodeName plus a path prefix if this node is not in the top-level schematic.
*I

All printable/plottable currents for the current circuit/schematic.  With this .KEEP variable specified, all branch currents through two-terminal devices in the current circuit/schematic and all pin currents for subcircuit devices in the current circuit/schematic are produced and saved for printing/plotting.

The SIMetrix vector names for the currents generated by the *I variable will be the same as the SIMetrix vector names for the currents generated through .PRINT statements.  

  • The SIMetrix vector name for a branch current will have the form of DName#pinname, where DName is the device name and pinanme will be p for the first pin and n for the second pin.
  • If the device is not in the top-level schematic, the SIMetrix vector name will have a path prefix.  
  • Similarly, the SIMetrix vector name for a subcircuit pin current will have the form of DName#pinname where DName is the device name and pinname is either a pin number or a mapped pin name.  This SIMetrix vector name will have a path prefix if the device DName is not placed in the top-level schematic.
**V This is similar to the *V variable used for producing node voltages.  Specifying **V as a .KEEP variable in the current circuit/schematic is equivalent to specifying *V in the current circuit/schematic and in all of its descendant subcircuits/schematics.  Hence, it will produce node voltages for the current circuit/schematic and all its descendant subcircuits/schematics for printing/plotting.  Similar to the *V keep variable, this variable is allowed only if node 0 is present in the top-level circuit/schematic.  For a large hierarchical design, having the **V variable defined in the top-level schematic could result in a large number of print/plot variables, leading to substantially slower simulations.
**I This is similar to the *I .KEEP variable used for producing branch and device pin currents.  Specifying **I as a variable in the current circuit/schematic is equivalent to specifying *I in the current circuit/schematic and in all its descendant subcircuits/schematics.  Hence, it will produce branch currents through two-terminal devices and subcircuit pin currents for the current circuit/schematic and all of its descendant subcircuits/schematics for printing/plotting.  For a large hierarchical design, having the **I variable defined in the top-level schematic could result in a large number of print/plot variables, leading to substantially slower simulations.

To learn more about placing .KEEP statements in a schematic hierarchy, see the Advanced SIMPLIS Training topic: .KEEP Statement in the Hierarchy.