The ArbitraryBodePlot() function allows you to create a Bode plot with gain and/or phase curves from reference designators or from a pair of net names on a specified graph address.
The ArbitraryBodePlot() function can create the following types of curves:
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.
The ArbitraryBodePlot() function has four forms as listed below.
Argument Name | Description |
REF IN | Reference designator for positive and negative input net (See note at bottom of table.) |
REFOUT | Reference designator for positive and negative output net (See note at bottom of table.) |
netIN+ | Positive input net name |
netIN- | Negative input net name |
netOUT+ | Positive output net name |
netOUT- | Negative output node |
curve_name | Name of the
curve as it appears in the report. Note: For your curve to
appear in the report, you must prefix the curve name with "DVM".
|
graph_name | Name for the graph as seen on test report* |
grid_index | Grid on which to place the curve* |
axis_name | Name for the axis on a particular grid* |
OPTIONAL_PARAMETER_STRING | 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.
This example generates a closed loop gain of an op-amp using the last function form listed above.
ArbitraryBodePlot(netIN+, netIN-, netOUT+, netOUT-, curve_name, graph_name, grid_index, axis_name, OPTIONAL_PARAMETER_STRING)
ArbitraryBodePlot(input, 0, out, 0, DVM Closed Loop, Closed Loop, A1, ignoreme, curve=splitphase color=Medium violet red)
Specified Curve Name | Resulting Gain Curve Name | Resulting Phase Curve Name |
DVM Loop Gain | DVM Loop Gain (as specified) | DVM Loop Phase (replaces Gain with Phase) |
DVM Loop Phase | DVM Loop Gain (replaces Phase with Gain) | DVM Loop Phase (as specified) |
DVM Loop | DVM Loop Gain (adds Gain to specified name) | DVM Loop Phase (adds Phase to specified name) |
The following syntax rules apply to the OPTIONAL_PARAMETER_STRING argument:
ylabel=Body Diode Forward Current Temp=-40In this case , the program would read this incorrectly as two optional parameters:
Spaces in values are allowed as long as no spaces are on either side of the equal sign. Thee three examples below illustrate this:
The following table lists the available formatting options for use in the OPTIONAL_PARAMETER_STRING argument.
Parameter Syntax | Value Type | Description |
xgrid=positive_integer | Any positive integer | Specifies space between the x gridlines |
ygrid=positive_integer | Any positive integer | Specifies space between the y gridlines |
xscale=lin | log | One of two options:
|
Specifies the units for the x axis |
yscale=lin | log |
O ne of two options:
|
Specifies the units for the y axis |
xlabel=string | Any alphanumeric string | Specifies a label for the x axis |
ylabel=string | Any alphanumeric string | Specifies a label for the y
axis The ArbitraryBodePlot()function ignores this option if curves are placed on multiple grids. |
xunits=string | Any alphanumeric string | Specifies the units label for the x axis |
yunits=string | Any alphanumeric string | Specifies the units label
for the y axis. The ArbitraryBodePlot() function ignores this option. |
xMinlimit=integer | Any positive or negative integer | Specifics the minimum x-axis limit |
xMaxlimit=integer | Any positive or negative integer | Specifics the maximum x-axis limit |
yMinlimit=integer | Any positive or negative integer | Specifics the minimum y-axis limit |
yMaxlimit=integer | Any positive or negative integer | Specifics the maximum y-axis limit |
showpoints=TRUE | FALSE | TRUE or FALSE | Specifies whether or not to show points on graph. |
curve=gain | phase | One of following options:
|
Generates a curve based on the graph address parameters: graph_name, grid_index, and axis_name. |
curve=splitphase | splitgain | One of the following options:
|
Generates both a gain curve and a phase curve based on the graph_name parameter only. Both grid_index and axis_name are ignored since the parameter itself determines the grid that is used. |
format=center | String value: center | Centers both the gain 0-dB and 0-degree grid lines on the gain and phase grids so that they are aligned. The maximum or minimum y axis values are not scaled, and the grid spacing is automatically selected by SIMetrix. |
format=center_m_n | Alphanumberic string that starts with center | Centers the grid lines as with format=center, but also sets the gain grid to m dB and the phase grid to n degrees. For example, format=center_20_45 sets the gain axis major grid to 20dB and the phase axis major grid to 45 degrees. |
format=alignzero | String value: alignzero | Aligns the gain 0-dB grid line with the phase 0-degree grid line and changes the gain grid to 20dB/division and the phase axis grid to 45 degrees. |
format=alignzero_m_n | Alphanumberic string that starts with alignzero | Aligns the grid lines as with format=alignzero, but also sets the gain grid to m dB and phase grid to n degrees. For example, format=alignzero_40_90 sets the gain axis major grid to 40dB and the phase axis major grid to 90 degrees. |
color=color_specification | One of three options to
specify the color:
|
Specifies the color for the
curve. Note: See the next section for information on these three methods for specifying a color.. |
You have three options for specifying the color for a curve:
color=color_namewhere color_name is one of the 16 built-in color aliases as listed in the following table with the hexadecimal code.
Color Name Alias | Hex Code | |
Red | #FF0000 | |
Green | #008000 | |
Blue | #0000FF | |
Teal | #008080 | |
Purple | #800080 | |
Maroon | #800000 | |
Navy | #000080 | |
Black | #000000 | |
Magenta | #FF00FF | |
Lime | #00FF00 | |
Salmon | #FA8072 | |
Medium violet red | #C71585 | |
Brown | #A52A2A | |
Indigo | #4B0082 | |
Medium orchid | #BA55D3 | |
Blue violet | #8A2BE2 |
color=#rrggbbwhere rr, gg, and bb are hex numbers from 00 to FF.
You can specify any color for the curve by using a hexadecimal specification.
color=SEQ:nwhere n is a positive integer between 1 and 20.
SIMetrix has eight default curve colors, starting with red, green, blue, etc.
To change and extend these colors to a maximum of 20 user-defined curve colors, follow these steps:
The ArbitraryBodePlot() function is also available as a SIMetrix script function and can be called from a PostProcess or FinalProcess script. Calling this function from a script is useful when you need to generate a large number of curves and/or if the length of the arguments makes the testplan difficult to read or edit.
The syntax for the function in a script is as follows:
SimplisDVMAdvancedUtilMeasurementArbitraryBodePlot(array, log_file)
Argument | Description |
array | A string array that contains the normal arguments to the CreateArbitraryBodePlot() function |
log_file | The DVM log file that is an argument passed into the post and final process scripts |
The Example above could be generated in a post-process script with the statement below:
Let return = SimplisDVMAdvancedUtilMeasurementArbitraryBodePlot([ 'input', '0', 'out', '0', 'DVM Closed Loop', 'Closed Loop', 'A1', 'ignoreme', 'curve=splitphase color=Medium violet red' ], log_file)