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:
|
*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.
|
**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.