6.6.3 Using the ArbitraryBodePlot() Function

The ArbitraryBodePlot() function can create  the following types of curves:

  • The ratio of two complex voltages
  • The gain and phase curves of the complete feedback loop
  • The gain and phase of various portions of the loop, such as the error amplifier.

Although the Bode Plot Probe - w/ Measurements schematic symbol has similar functionality, the ArbitraryBodePlot() testplan function includes formatting options that increase the flexibility of this function. One such option makes it possible to probe between schematic hierarchical levels.

For example, plotting the gain and phase of the compensation error amplifier in the LTC3406B circuit is difficult with the schematic-based probe because the output of the error amplifier is not at the top level of the hierarchy. Bringing the output of that error amplifier to the top level would require a modification to the LTC3406B symbol. Using the ArbitraryBodePlot() function, however, solves this problem because with this function, you can directly probe the nets in the schematic hierarchy and generate the curves without making any changes to the schematic.

6.6.3.1 Identifying Nodes

The ArbitraryBodePlot() function has four different forms which are described in the testplan documentation. This example uses the last form which specifies the four node names directly  and has the following syntax with the arguments explained in the table below:

ArbitraryBodePlot(netIN+, netIN-, netOUT+, netOUT-, curve_name, graph_name, grid_index, axis_name, OPTIONAL_PARAMETER_STRING)
Arg # Argument Name Description
1 netIN+ The positive input node
2 netIN- The negative input node
3 netOUT+ The positive output node
4 netOUT- The negative output node
5 curve_name The names for the curve
6 graph_name The name of the graph as seen on test report*
7 grid_index Identifies the grid on which to place the curve*
8 axis_name Identifies the axis on a particular grid*
9 OPTIONAL_PARAMETER_STRING Contains the optional curve formatting parameters**

* For additional information about graph_name, grid_index, and axis_name, see Graph Address System.

** For additional information about OPTIONAL_PARAMETER_STRING, see Optional Parameters

The ArbitraryBodePlot() curve function has differential voltage inputs. In this example, the negative nodes are the global ground where node =0, which means that both  netIN- and netOUT- equal 0.

The positive input nodes can be derived from the pin names on the symbols. For example, the positive input to the probe is the SENSE pin on the load I1. Since the load is a top-level symbol, the net attached to the pin name uses the reference designator and the pin name separated by a period: I1.#SENSE.

To find the net name for the output of the error amplifier, which is not at the top level, follow these steps:

  1. Open the schematic from  SIMPLIS_dvm_tutorial_examples.zip at this path: LTC3406B/6.6.2_LTC3406B - DVM ADVANCED.sxsch.
  2. Left click to select U1 at the top level of the LTC3406B.
  3. Right click and select Descend Hierarchy from the pop-up menu (or use the keyboard shortcut Ctrl E).
    Result: A new tab opens in the Schematic Editor, showing the next level down in the hierarchy.
  4. Left click on the error amplifier U3, and type Ctrl E.
  5. Place the mouse cursor over the output of the error amplifier U1, and look in the bottom left portion of the window for the net name and hierarchical path as shown below highlighted with a red box.
  6. Make note of the net name, which in this case is U1.U3.#OUT.
    Note: Based on the symbol nearest to the mouse cursor, the keyboard shortcut Ctrl S shows a message such as the following in the SIMetrix/SIMPLIS command shell:
    Net name at cursor is U1.U3.#OUT
    You have now identified the first four arguments for the ArbitraryBodePlot() function:
    ArbitraryBodePlot(I1.#SENSE, 0, U1.U3.#OUT, 0, ...)

6.6.3.2 Assigning Curve and Graph Names

For this example, use the values for each argument as listed in the table below:

Argument Name Value Notes
curve_name DVM Error Amplifier Using the curve_name that you specify, the function appends "Gain" or "Phase" to generate unique names for the gain and phase curves. In this case, the names will be
  • DVM Error Amplifier Gain
  • DVM Error Amplifier Phase
graph_name E/A Gain and Phase Title in the graph legend box on the individual test reports.
grid_index ignoreme Since these two arguments are optional in this form of the function, this value is a placeholder.*
axis_name ignoreme

* In other forms of the ArbitraryBodePlot() function that generate one curve, these arguments are both required to specify the curve locations.

6.6.3.3 Defining the Optional Parameter String

In this example, you specify the curve locations with the final argument, OPTIONAL_PARAMETER_STRING, which has multiple formatting options documented in the testplan documentation. For this example, use the following options:

  • curve=splitgain, which places the curves on two grids with the gain curve on the upper grid.
  • color=blue, which forces both curves to be blue.

The syntax of the final argument is: curve=splitgain color=blue

Note: No commas are used between curve=splitgain and color=blue. This is the general format of the OPTIONAL_PARAMETER_STRING since the program is expecting a space-separated string of individual options for this argument.

The complete ArbitraryBodePlot() function is as follows:

ArbitraryBodePlot(I1.#SENSE, 0, U1.U3.#OUT, 0, DVM Error Amplifier , E/A Gain and Phase, ignoreme, ignoreme, curve=splitphase color=blue)

6.6.3.4 Creating the Testplan

To add this function to a testplan, follow these steps:

  1. Open the testplan from  SIMPLIS_dvm_tutorial_examples.zip at this path: testplans/6.6.3_arbitrarybodeplot_start.testplan.
  2. Add a column between Objective and Source.
  3. Type Create in the header row of the new column.
  4. In the last row of the testplan, add the following in the Create column:
    ArbitraryBodePlot(I1.#SENSE, 0, U1.U3.#OUT, 0, DVM Error Amplifier , E/A Gain and Phase, ignoreme, ignoreme, curve=splitgain color=blue)
    Result: The testplan should now look similar to the following with the changes in red This testplan  is available from SIMPLIS_dvm_tutorial_examples.zip at this path: LTC3406B/6.5.2_arbitrarybodeplot.testplan
***
*** 6.6.3_arbitrarybodeplot.testplan arbitrarybodeplot testplan for DVM tutorial section 6.6.3
***
*?@ Analysis Objective Create Source Load Label
***
Ac BodePlot(OUTPUT:1) ArbitraryBodePlot( I1.#SENSE, 0, U1.U3.#OUT, 0, DVM Error Amplifier, E/A Gain and Phase, ignoreme, ignoreme, curve=splitgain color=blue) SOURCE(INPUT:1, Maximum) LOAD(OUTPUT:1, 100%) Ac Analysis|Bode Plot|Vin Maximum|100% Load

6.6.3.5 Running the Testplan

To run the testplan from the schematic in section 6.5.1, follow these steps:

  1. Open the schematic from  SIMPLIS_dvm_tutorial_examples.zip at this path: LTC3406B/6.6.2_LTC3406B - DVM ADVANCED.sxsch.
  2. Select DVM ▶ Run ▶ Choose Testplan... from the main menu of the schematic editor.
  3. Navigate to the testplans directory where you extracted SIMPLIS_dvm_tutorial_examples.zip , and select 6.6.3_arbitrarybodeplot.testplan.
  4. Check Ac Analysis to select the tests to run.
    Result: The test report contains curves for the error-amplifier gain and phase. The curve=splitgain option creates two grids with the gain curve on the upper grid. The color=blue option makes both curves blue.
Note: Because the large number of arguments in the ArbitraryBodePlot() function can make composing the function on a typical monitor difficult, an ArbitraryBodePlot() script function can be called from a post-process script. This script function behaves almost exactly as the testplan version except it does not keep the simulation vectors. For more information, see 7.2 Post-Process Scripts and the individual Create function topics in the testplan documentation..