Product Documentation
Virtuoso ADE Assembler User Guide
Product Version IC23.1, November 2023

10


Selecting Data to Save and Plot

From the Outputs Setup tab of the Outputs pane, you can specify nets, terminals, and measurements you want to save and plot. You can save all node voltages and terminal currents or specify a set of voltages and currents you want to save. You can select output nodes and terminals on your schematic and build expressions using the expression builder to analyze or measure particular results.

Each item that appears on the Outputs Setup tab has a Plot check box and a Save check box. You can select the check box for those outputs you want to plot or save, or deselect the check boxes of those items you do not want to plot or save.

See the following topics for more information:

Opening the Outputs Setup Tab

You can use the Outputs Setup tab of the Outputs pane to add a new output signal/expression/OCEAN or MATLAB script or to change an existing output.

In a new test, the Outputs pane is not visible by default. To open the Outputs Setup tab, do the following:

See the following topics for more information:

Selecting Output Signals on the Schematic

You can select outputs on the schematic and specify whether you want to save or plot them.

To select an output on the schematic, do the following:

This procedure allows you to select only one output on the schematic. If you want to select multiple outputs on the schematic at a time, see Selecting Outputs to Save and Selecting Outputs to Plot.
  1. On the Outputs Setup tab, click .
  2. In the drop-down list, select a test and choose Signal.
    A new row is added for the test with the output type signal.
    You can double-click the test name or output type to select a different test or output type from the drop-down list that appears in the Test or Type column.
  3. (Optional) In the Name field, type the name for the output.
    This name appears in the Waveform window.
  4. Double-click the Details field and click the ellipsis button.
    The schematic window appears in a tab.
  5. In the schematic, select a signal.
    The signal name appears in the Details field on the Outputs Setup tab.
    Alternatively, you can manually enter a signal. In this case, the type of data to be saved—current, voltage, or both— is decided through the terminal selection type specified in the Printing/Plotting Options form.
    By default, the current data is saved for all selected terminals. However, you can choose to save or plot voltage data, or both current and voltage. For more details, refer to Specifying the Type of Data for Signal Outputs.
  6. (Optional) You can select or deselect either or both of the following check boxes:
    • Plot — The program plots the specified signal output after simulation.
    • Save — The program saves the signal output to the simulation results file.

Related Topics

defaultOutputColumns

Specifying the Type of Data for Signal Outputs

Selecting Outputs to Save

Selecting Outputs to Plot

Selecting Nodes, Nets, and Terminals

Selecting a Digital Bus or a Bundle of Buses

Searching for Conditional Results

Viewing and Editing Output Signals or Expressions in Calculator

Specifying the Type of Data for Signal Outputs

This feature is not supported for the AMS simulator.

By default, ADE Assembler saves the current values for all selected terminals, but you can choose to save or plot voltage data, or both current and voltage.

To control the type of data to be saved for the selected terminals, do one of the following:

Using the two ways specified above, you can choose to save either current, voltage, or both types of data for all selected terminals. If you need flexibility to choose the type of data to be saved while selecting a terminal, you can set these settings to "prompt". This setting displays the Choose Type message prompt for every terminal output selection. In this message prompt, you can select the type of data to be saved or plotted for the output.

Depending on your selection, ADE Assembler saves the desired type of data. The data type of a signal output is indicated by its name and output type. For signals with current type of data, ADE Assembler adds the _I suffix in the name and (I) in the output type. Similarly, it adds the _V suffix in the name and (V) in the output type for the outputs that save the voltage data.

If you choose to save both, ADE Assembler creates two outputs, one for current and the other for voltage.

The following example shows the signal outputs created for all of these choices.

Indicators are also added to the schematic view, as described below.

The following figure shows two examples.

The revised output names and types, and the visual indicators on schematic are helpful in identifying the purpose of signal outputs in maestro views as well as in plotted graphs.

Important Points to Note

Selecting Outputs to Save

To select outputs to be saved, do the following:

  1. On the Outputs Setup tab of the Outputs pane, right-click a test and choose To be saved.
    The schematic window appears in a tab.
  2. On the schematic, select one or more nodes, nets, or terminals.
    You can set the terminalSelectionType environment variable to define the default type of data to be saved for each signal output selected on the schematic. When the variable is set to "prompt", the Choose Type form is displayed for each selected terminal. For more details, refer to Specifying the Type of Data for Signal Outputs.
  3. Press the Esc key when you are done.
    The name of each selected item appears (such as /out or /I2/PLUS) in different rows in the Outputs Setup tab. The Save check box is selected.

Selecting Outputs to Plot

To select outputs to be plotted, do the following:

  1. On the Outputs Setup tab of the Outputs pane, right-click a test and choose To be plotted.
    The schematic window appears in a tab.
  2. On the schematic, select one or more nodes, nets, or terminals.
    You can set the terminalSelectionType environment variable to define the default type of data to be saved for each signal output selected on the schematic. When the variable is set to "prompt", the Choose Type form is displayed for each selected terminal. For more details, refer to Specifying the Type of Data for Signal Outputs.
  3. Press the Esc key when you are done.
    The name of each selected item appears (such as /out or /I2/PLUS) in different rows in the Outputs Setup tab. The Plot check box is selected.
    For nets, both the Plot and Save check boxes are selected.
    The program plots the selected items in a waveform window at the end of the simulation.

See also Searching for Conditional Results.

Selecting Nodes, Nets, and Terminals

A circle appears around each pin when you choose a terminal and wires appear highlighted when you choose a net. You can alternate between selecting a terminal and selecting the wire to which it is connected.

You can

Selecting a Digital Bus or a Bundle of Buses

In the Outputs Setup pane, you can specify a digital bus output to be saved or plotted. The digital bus output can include a single bit or multiple bits bundled together in one output.

To add a single bit or a bundle of bits from a bus as outputs in the ADE Assembler Outputs Setup pane, perform the following steps:

  1. Add a new output row of type signal. Then double-click in the Details column and click the ellipses button.
    Alternatively, right-click the output row and choose To Be Saved or To Be Plotted. The schematic of the design is opened in a new tab.
  2. In the schematic, click the bus.
    The Select bits from bus form appears.
    Perform one of the following steps to specify bits from the bus as outputs to be saved or plotted:
    • To add a single bit as an output, select the bit and click OK.
    • To add multiple bits bundled together as an output,
      • Press the Ctrl key and select the bits.
      • Ensure that the Include as bundle check box is selected and click OK.

      The selected bits appear in one row in the Outputs Setup pane.
      If the Include as bundle check box is not selected while you are adding or editing an output, an error message is displayed.
    • To add multiple bits to individual outputs, right-click the output row and choose To Be Saved or To Be Plotted. The schematic of the design is opened in a new tab.
      In the schematic, click the bus to open the Select bits from bus form and perform the following steps:
      • Press the Ctrl key and select the bits.
      • Clear the Include as bundle check box and click OK.

      Each selected bit appears in a different row in the Outputs Setup pane.
      You can also click the Select All button to select all the available bits. Or use the Deselect All button to clear the selection.

    The following image shows how the selected bits appear as outputs in the Outputs Setup pane in ADE Explorer.

  3. In the Name field on the Outputs Setup pane, type the name for the signal output. This name appears in the graph window.
  4. You can click or clear the Plot or Save check box corresponding to the output as required.
  5. If you have used the To Be Saved or To Be Plotted command to open the schematic, press the Esc key to end the selection.

Specifying Whether a Result Will Be Saved or Plotted

You can specify whether an item will be saved to the results database or plotted in a waveform window on the Outputs Setup tab of the Outputs pane by selecting or clearing the Plot or Save check box for the item. Selecting the Plot check box causes the selected item or items to appear in a waveform window at the end of the simulation.

If none of the outputs specified for a test are selected for plotting, the following warning message is displayed in the CIW:
Following tests do not have any outputs selected for plotting:
<testname1>
<testname2>
...

Adding or Modifying an Output Expression

You can use the Outputs Setup tab of the Outputs pane to add or modify an output expression. You can type an output expression directly in the Details field or use the expression builder to build an output expression.

You can view a video demonstration for this feature at Expression Builder in ADE Assembler & Explorer.

To add an output expression, do the following:

  1. On the Outputs Setup tab, click .
  2. In the drop-down list, select a test and choose Expression from the sub menu.
    A new row is added for the test with the output type expr.
    You can double-click the test name or output type to select a different test or output type from the drop-down list that appears in the Test or Type column.
  3. (Optional) In the Name field, type a name for the expression.
    This expression name appears in the Virtuoso Visualization and Analysis XL window.
  4. (Optional) The default value in the EvalType column is point. This signifies that by default the expression will run for the given data point. If you want to run the expression for all corners across the design point, double-click in the EvalType cell and select corners from the pull-down list.

When you set the EvalType as corners, the color of the row is changed to blue. For more details, refer to Creating Expressions to be Measured Across Dimensions.

Similarly, you can choose other values in Eval Type to evaluate expressions across sweeps, all dimensions, or any specific dimension.

  1. Double-click the Details field.
  2. Type an output expression directly in the Details field or use the expression builder to build an output expression. To add the output expression using the expression builder, do the following:
  3. Click Open expression builder ( ).
    The expression builder appears.
    Build an output expression in the space given on the expression builder. For example, you can build an expression for the 3 dB point of an output signal as shown below.
    To refer to the temperature value in an output expression or specification, use VAR("temp") instead of VAR("temperature"). Even if the temperature for a particular test is specified using the temperature design variable, you can access it as VAR("temp")in the results.
  4. Click on the expression builder to copy the expression to the Details field of the output.
    The expression appears in the Details field. If the expression uses a signal or net that does not already exist in the outputs table, a new row for an output of type Implicit is added to the table. For more details, see Viewing Implicit Signals in Outputs.
    While performing the division of two integer or floating point values, if denominator is greater than numerator, the division results are truncated. For example, if you perform the division of 1/2, the int function displays the result as 0 instead of 0.5.

For more information about how the integer and floating point division is performed using SKILL, see Integer vs. Floating-Point Division in the Arithmetic and Logical Expressions chapter of the Cadence SKILL Language User Guide.

  1. (Optional) Change the Plot and Save options for the expression, if required. See also Specifying Whether a Result Will Be Saved or Plotted.
  2. (Optional) In the Spec and Weight columns next to the expression, define the specification and the weighting factor for the specification for the output expression. For more information, see Defining a Specification.
  3. (Optional) In the Units column next to the expression, specify the unit value to be used for displaying the measured results for the expression in the Results tab of the Outputs pane.
    For example, if you specify the unit value as dB for an expression named Gain, the measured results for the expression is displayed with the unit value dB in the Results tab of the Outputs pane.
  4. (Optional) In the Digits column next to the expression, specify the number of significant digits in which the measured results for the expression needs to be displayed in the Results tab of the Outputs pane. Valid values are 2 to 15.
    If you do not specify the number of significant digits, the default number of significant digits specified in the Default Formatting Options form will be used to display the measured results for the expression in the Results tab. For more information, see Specifying the Default Formatting Options.
  5. (Optional) Double-click in the Notation column next to the expression. From the drop-down list that appears, choose the notation style in which the measured results for the expression needs to be displayed in the Results tab of the Outputs pane.
    Choose To

    default

    Display results using the default notation style specified in the Default Formatting Options form. For more information, see Specifying the Default Formatting Options.

    eng

    Display results in the engineering notation.

    sci

    Display results in the scientific notation.

    suffix

    Display results in the suffix notation.

    If you choose suffix, double-click in the Suffix column next to the expression and choose the suffix from the drop-down list. If you specify the suffix as auto or do not specify the suffix in the Suffix column, the suffix is automatically assigned.

    If you do not specify the notation style, the default notation style specified in the Default Formatting Options form will be used to display the measured results for the expression in the Results tab. For more information, see Specifying the Default Formatting Options.

Viewing Implicit Signals in Outputs

When you use signals in an expression and those signals are not already added in the outputs table, ADE Assembler automatically creates new outputs of type Implicit to save those signals.

As shown in the example below, when you create average(VT("/net06")) as an output expression, an implicit output is created for signal /net06.

Please note the following points for implicit signals:

Related Topics

Creating calcVal Expressions Using calcVal Wizard

You can directly edit the calcVal expressions in the editing fields of the variable expressions or the Expression Builder. However, in large setups, calcVal expressions can become complex when you need to compare parameter values in multiple points. In such scenarios, calcVal Wizard is helpful in editing and debugging expressions.

The calcVal wizard fetches information from the source test and history and populates the details in the form controls for a convenient expression editing. You can focus on the inputs for the expression while the wizard manages the correctness of the syntax. For example, it automatically adds the names of key arguments and creates lists of values for the ?matchParam argument.

To use the calcVal wizard for a local test variable, perform the following steps in ADE Assembler:

  1. Add a new design variable in the Design Variables tree of the Data View assistant.
  2. Double-click in the Value column for the variable and click Click Open expression builder to open Expression Builder for the variable.
  3. Click calcVal Wizard in the title bar of Expression Builder to open the calcVal Wizard form.
    The calcVal Wizard form is displayed with the default values populated from the active setup, as shown below.
  4. To use the result of a particular output of a test from the current simulation run, keep the default value, Active Setup, selected in the Get Results From drop-down list.
    Alternatively, to use the results from a specific history, choose Specify History from the Get Results From drop-down list.
    An additional subsection, History Details, is displayed in the Data Source section of the form. In this section, choose a history and corner to be used as the source of results data.
  5. From the Test drop-down list in the Data Source group, select the name of a source test.
    The Output drop-down list is populated with the outputs defined for the selected test.
  6. From the Output drop-down list, select the name of an output. The results of this output of the selected test are used in the calcVal expression.
  7. (Optional) In the Default Value field, specify a default value to be returned in case calcVal does not return a valid result.
  8. In the Corner field, specify the name of the corner for which the results are to be used in calcVal.
    If the setup of the current test and the test in data source do not have any common corner, it is mandatory to specify a corner in the Corner field.
  9. If the setup contains local swept variables and you choose to use the result from the first sweep point, select Get first sweep point in the Sweep Details section.
    Alternatively, click Match Swept Values from Data Source to display the Action for Swept Variables in Source Test or calcVal table. This table lists all swept variables from the source test. The swept values from the chosen test or global variables or the corners are listed in the Data Source column. Values of the local design variable for the test with calcVal expression are given in the calcVal Expr column. If the complete test name and corner name information is not visible in the header, you can view the details in the tooltip of the column headers.
    For each variable listed in the table, do the following:
    1. In the Action field, specify an approach to get the result from the point with a matching parameter or from a point that matched the value in the calcVal test to build the ?matchParams argument of calcVal.
    2. Use the drop-down list in the Match Value column to scroll and choose the desired value. This field is editable. You can either type in a value or scroll through the list to select an existing value. If the list of available values is extremely long, type in characters to filter the list. Only those values in which the specified characters are found are displayed in the drop-down list to make selection convenient. In the example shown below, all values that contain 2 are filtered and displayed.
      If the specified value is not found in the drop-down list, it is considered as invalid and the expression cannot be generated.
      If the chosen source test does not contain swept variables, Match Swept Values from Data Source and the corresponding table are disabled.
  10. After completing values in the form, click Generate Expression to create the calcVal expression and send it back to Expression Builder and close this form.
    The Generate Expression command is disabled by default. Depending on your setup, enter a corner name in the Corner field or details in the Action for Swept Variables in Source Test or calcVal table. The tool automatically enables Generate Expression after you have entered valid values in all the mandatory fields. If this command is not enabled, review the form for valid and ensure that all values are complete and valid.
    After the form is closed, the calcVal expression is displayed in the Expression Builder. Note that if ?matchParams is added, the tool automatically adds ?ignoreParams "rest" to the expression.
  11. If required, you can make further edits in the expression and click Ok ( ) to send the expression to the setup.
    The calcVal Wizard form is of modal type. You must close the form to access the Virtuoso session for which you are creating the calcVal expression.

Related Topics

calcVal

calcVal Wizard Form

calcVal Wizard Form

The calcVal Wizard form lets you create and edit calcVal expressions.

Field Description

Data Source

This section provides fields that define the source of data to be used in an expression.

Get Results From

Specifies the source of data to be used in a calcVal expression.

  • Active Setup: Gets the data from the setup of the current simulation run.
  • Specify History: Gets the data from the results saved for the selected history.

This field corresponds to the ?historyName argument of calcVal.

History

Specifies the name of the history to be used as a data source. You can choose a test from the drop-down list that shows all the test names from the active setup.

This field corresponds to the ?testName argument of calcVal.

Corner

Specifies the name of the corner to be used as a data source. This field corresponds to the ?cornerName argument of calcVal.

Test

Specifies the name of the test to be used as a data source. You can choose a test from the drop-down list that shows all the test names from the active setup.

This field corresponds to the ?testName argument of calcVal.

Output

Specifies the name of the output from the selected test. You can choose an output from the drop-down list that populates all output names from the selected test.

This field corresponds to the ?outputName argument of calcVal.

Details

This section provides fields that define the source of data to be used in an expression.

Default Value

The default value to be returned if calcVal fails for any reason.

This field corresponds to the ?defaultVal argument of calcVal.

Corner

Specifies the name of the corner for which the results are to be used in calcVal. When not specified, the value of nominal is used.

This field corresponds to the ?cornerName argument of calcVal.

Sweep Details

This section provides options to specify sweep points and the matching values to be considered while fetching results from the data source.

Get First Sweep Point

Specifies that when sweep values are used, the result of only the first swept point is to be used for calculation.

This field corresponds to the ?getFirstSweepPoint argument of calcVal.

Match Swept Values from Data Source

Opens the Action for Swept Variables in Source Test or calcVal table where you can specify the approach to match parameters when the variables in source test have swept values.

This command creates the ?matchParams argument of calcVal.

Action for Swept Variables in Source Test or calcVal

A table that is dynamically generated to shows a list of all variables that have swept values either in the source test or the test for which you are creating the calcVal expression. This table is displayed when you click Match Swept Values from Data Source and contains the following columns:

  • Variable: Name of the variable that has swept values in the source test.
  • calcVal Expr [TestName: cornerName]: Displays the value of the variable from the selected corner in the test for which you are creating the calcVal expression.
  • Date Source [TestName: cornerName]: Displays the swept values of the variable from the source test.
  • Action: Lets you choose from the two approaches: - Match Specific Value: Matches a specific value from the swept set of values - Match calcVal Test: Matches the value of the same variable in the current point of the calcVal test.
  • Match Value: Specifies the specific value of the swept variable corresponding to which the output value is to be used in the calcVal expression. This column is disabled when the Action column is set to Match calcVal Test.

Generate Expression

Generates a calcVal expression using the information provided on this form, sends it back to Expression builder, and closes this form.

Cancel

Discards the provided information and closes the form.

Related Topics

Creating calcVal Expressions Using calcVal Wizard

calcVal

Creating Dependent Expressions

You can create expressions based on other expressions. For example, assume that you have an expression named s1 with the expression 5. If you want another expression, say, s2 to be ten times the value of s1, type s1*10 in the Details field as shown in the figure below.

Note the following when you create dependent expressions:

Plotting Dependent Expressions

When sweep includes dependent design variables, scalar expressions outputs are plotted as continuous line.

For example, consider the ADE Explorer setup in which you have the following design variables:

Here, the variable vdd1 is dependent on another variable vdd.

Now, if you run simulation and plot the /OUT signal, the following waveforms are generated for the three values of vdd, as shown in the figure below.

Creating a Combinatorial Expression

A combinatorial expression is one created using more than one output from one or more tests. For example, you might want to create an expression such as

Test1_Output1/Test2_Output2

To use values from another test, it is required to use the calcVal function.

To create a combinatorial expression such as the one above, do the following:

  1. On the Outputs Setup tab, click .
  2. In the drop-down list, select a test and choose Expression.
    A new row is added for the test with the output type expr.
    You can double-click the test name or output type to select a different test or output type from the drop-down list that appears in the Test or Type column.
  3. (Optional) In the Name field, type the name for the expression (such as Out1DivOut2).
    This name appears in the Waveform window.
  4. Double-click the Details field.
  5. Click Open expression builder ( ).
    The expression builder appears.
  6. Type calcVal in the given editing area.
    The expression builder identifies the function and displays help for that. In addition, it also helps with the possible argument values from the active setup. This enables quick function editing.
    Instead of typing or choosing argument names and editing their values in the expression editing area, you can also type calcVal in the Locate Function textbox and choose the function name from the displayed list. A form showing the fields for all arguments is displayed. You can edit the values in that form.
  7. Select the name of output from the given argument list that appears and specify other required arguments.
  8. Type the / operator.
  9. Type calcVal again and complete the other calcVal expression.
  10. Click on the expression builder to add the expression to the Details field of the output.

A expression using results from two tests in the setup has been created.

Creating Expressions to be Measured Across Dimensions

Measurements across dimensions are supported only for the following run modes: - Single Run, Sweeps, and Corners - Monte Carlo - Local Optimization - Global Optimization

Simulation results data is spread across multiple dimensions—sweeps, corners, or Monte Carlo iterations. Therefore, at times, it is required to measure outputs across these dimensions. You can do this by specifying the dimension across which you want to evaluate a result. The tool keeps only your chosen dimension across which the result is to be calculated and flattens the remaining dimensions.

ADE Assembler provides the following ways to evaluate expressions across different dimensions:

You can choose a dimension in the EvalType column of the Outputs Setup tab.

How is expression evaluation different when measured across dimensions?

When evaluated across dimensions, the results of data access functions, such as VF, VT, VAR, or getData, are different in comparison to their evaluation for a single point. This is because the data access functions read data for all the points selected by the tool depending on the evaluation type, for example, evaluation across corners or sweeps.

Consider the following example expression:

value(mag(VF("/OUT")) 20000000)

When this expression is evaluated for a single point, the result is a scalar value. However, when it is evaluated across corners, the tool gets a list of points corresponding to the leaf point directories for which evaluation has to be done and then returns a waveform output.

A constant output expression that does not need to access results data always returns the same value when evaluated for a single point or across dimensions.

When the expressions contain data access functions, you can use one of the following functions to run a second level of consolidation of the expression evaluated across dimension:

The tool automatically adds the ?overall t argument to these functions when they are written in the measurements to be evaluated across dimensions.

average(value(mag(VF("/OUT")) 20000000) ?overall t)

After consolidation, the tool returns a scalar value.

Related Topics

Results Data Access Functions

You can view the following video demonstrations related to this feature in ADE Assembler:

Measurement Across Corners

By measuring an output across corners, you evaluate an expression once for every sweep point across all the corners. It results in a single output value that is displayed in the column for the Nominal corner.

To evaluate expressions across corners, perform the following steps:

  1. Right-click in the Outputs Setup tab and choose Add Expression.
    A new blank output row with output type expr is added to the outputs table.
  2. In the new row, double-click in the Test column and select a test name.
  3. Double-click in the EvalType column and specify the evaluation type as corners.

The color of the row changes to blue.

Outputs of type Signal, Matlab script, Area Spec, and Op Region Spec are always evaluated for design points, that is, when evalType is equal to point.
  1. (Optional) Add a name for the expression in the Name column.
  2. Enter an expression in the Details column.

When the evaluation type is set as corners, the tool automatically adds an additional argument, overall and sets it to t.

You can calculate measurements across corners only for the following functions:

An example is shown in the following figure.

When the argument overall is set to t and the evalype is corners, it performs the calculation on the results of corner simulations for each design point that are treated as discrete values for evaluation and not waveforms.

For more details on how the measures are calculated across corners, refer to Calculations of Measurements Across Corners.

The argument, overall, has been added to only five most-frequently used Calculator functions for which measurements across dimensions are supported. Usage of this argument in any other function might generate erroneous results.

There are some more ways in which you can create expressions to be measured across corners. For more details, refer to Alternate Ways to Create Measurements Across Corners.

  1. (Optional) Add specification details in the Spec column.
    The Override Specification command in the popup menu on the Output Setup tab is disabled for measurements across corners.

When you run simulations, results of the expressions measured across corners are displayed on the Results tab, as shown in the following figure.

Note the following on the Results tab:

Other important points to note:

Alternate Ways to Create Measurements Across Corners

Alternate ways in which you can create expressions to be evaluated across corners are:

While creating an OCEAN measure in one file, you can also use an expression defined in another OCEAN file. For example, ocean1.ocn is defined as given below.

BW=bandwidth(VF("/net1") 10 "low")
axlOutputResult(BW "BW")

In ocean2.ocn, you can create another measure that uses BW that was defined in ocean1.ocn. This is shown in the example given below.

MAC_ocn1=ymax(calcVal("BW" "testLib:top:1") ?overall t) 
axlOutputResult(MAC_ocn1 "MAC_ocn1")
If you want to create an OCEAN measure of both the types, point and corners, you need to create separate OCEAN script files where one file contains functions of a single type only. Use a separate axlOutputResult statement for each output.

Calculations of Measurements Across Corners

When the evalType column is set to corners, the measurements are calculated across corners. This section describes how different scalar and waveform expressions are calculated to measure the outputs across corners.

Measurements of Scalar Expressions

When the evalType column is set to corners, by default the overall argument is set to t. With this default value of overall, the measurement is calculated by using the result values obtained for each corner, irrespective of the number of sweep variables. This gives a scalar value as result.

In the example shown below, average of risetime is calculated by adding the risetime calculated for all the sweep variables and then dividing the sum by the count of values.

rt_avg = average of risetime scalar values calculated for each corner

See the results of rt_avg in the figure given below.

If you change the default value of the overall argument and set it to nil, this returns a scalar value in case of a single sweep variable, but a waveform output in case of multiple sweep variables.

In the example given above, for rt_max_nil, ymax is calculated across vdd at each temperature value and a waveform is plotted for each temperature. The result is shown in the figure given below.

Getting a waveform in case of multiple sweep variables is not the desired output for measurements across corners.

Measurements of Waveform Expressions

For the default value of the overall argument, a measurement is first calculated on the waveform for each corner thereby resulting into a set of values. The measurement is further applied on this resulting set, thereby giving a scalar value as a result.

Consider the example shown below.

In this example, for wave_avg_t, first average of VT("/OUT") is calculated for each corner individually and then discrete average of the resulting values is taken, as shown below.

average = average values obtained for corners

Similarly, for wave_pp_t, first, ymax and ymin are calculated for VT("/OUT") for each corner. Next, ymax and ymin of the resulting values is calculated.

ymax_all = ymax of the ymax values of individual waveforms
ymin_all = ymin of the ymin values of individual waveforms

Next, peakToPeak is calculated using the resulting ymax_all and ymin_all values, thereby giving a scalar result.

peakToPeak = ymax_all - ymin_all

However, if you set the overall argument to nil, a measurement is calculated on the waveform for each corner and the resulting values are plotted. This is not the expected result for measurements across corners. In the example shown above, for wave_avg_t1, average is calculated for each combination of VDD and temperature and the resulting values are plotted, as shown in the figure shown below.

Measurements Across Corners for Functions that Run on a Single Corner Variable

Some of the calculator functions that do not support the new argument, overall, give correct results when calculated across corners. For example, functions such as xmin, xmax, deriv, cross, and value, that work on a single dimension, give correct results when calculated across corners, as shown below.

The results for these outputs are shown below.

However, it is not recommended to measure outputs across corners for other functions that work on multiple dimensions and do not support the overall argument.

Measurement Across Sweeps or Measurement Across All

By measuring an output across sweeps, you evaluate an expression once across all the sweep points for each corner.

Similarly, by measuring an output across all the sweep points and corners, you evaluate an expression once across all the results for the available sweep points and corners. These measurements provide a single resulting value.

The results for both the types of measurements are displayed in a separate table displayed at the top of the Detail results view.

To evaluate expressions across sweeps or anything, perform the following steps:

  1. Right-click in the Outputs Setup tab and choose Add Expression.
    A new blank output row with output type expr is added to the outputs table.
  2. In the new row, double-click in the Test column and select a test name.
  3. For a measurement to be evaluated across sweeps, double-click in the EvalType column and specify the evaluation type as sweeps.

For a measurement to be evaluated across all, specify the evaluation type as all.

The color of the row changes to blue.

  1. (Optional) Add a name for the expression in the Name column.
  2. Enter an expression in the Details column.

You would notice that if you use any of the following functions, ADE Assembler automatically adds an additional argument, overall and sets it to t:

When you run simulations, results for the outputs measured across sweeps are displayed in a separate table on top of the detailed results.

The following example shows how the results are displayed:

Important Points to Note

Creating Expressions to be Measured Across Any Dimension

The expressions that can be measured across any dimension give you the flexibility to specify a dimension or a combination of dimensions across which you want to evaluate outputs. Accordingly, ADE Assembler slices the result data and evaluates expressions.

To create an expression that is measured across any dimension:

  1. Right-click in the Outputs Setup tab and choose Add Expression.
    A new blank output row with output type expr is added to the outputs table.
  2. In the new row, double-click in the Test column and select a test name.
  3. Double-click in the EvalType column and choose any from the drop-down list.

The tool adds a new function measureAcross(nil ?parameters list()) in the Details cell for this new row. The color of this row is changed to dark purple to indicate its type.

  1. Edit the measureAcross function. Remove nil from the first argument and add an expression. In the ?parameters argument, specify a list of dimensions across which the expression is to be calculated. You can specify a list of corners, swept variables, device parameters, or aliases as a dimension.
    Currently, the following aliases are supported in ?parameters:
    • Sweeps: to specify that the calculation is to be done across all swept variables
    • Corners: to specify that the calculation is to be done across all corners
    • mc_iteration: to specify that the calculation is to be done across the Monte Carlo parameter monteCarlo::param::sequence. This alias is valid for the Monte Carlo Sampling run mode only.

A few examples of measureAcross are shown below.

The following expression calculates the average phase margin across two dimensions, the vdd design variable and Monte Carlo iterations.

measureAcross(average(PhaseMargin ?overall t) ?parameters list("vdd" "mc_iteration"))

The following expression calculates the average phase margin across two design variables, the vdd and temperature swept variables.

measureAcross(average(PhaseMargin ?overall t) ?parameters list("vdd" "temperature"))

The following expression calculates the average phase margin across the vdd design variable and all corners.

measureAcross(average(PhaseMargin ?overall t) ?parameters list("vdd" "Corners"))

The following expression calculates the average phase margin across the device parameters PM4/w and PM4/l and all corners.

measureAcross(average(PhaseMargin ?overall t) ?parameters list("PM4/w" "PM4/l" "Corners"))

The following expression calculates the current across the varying values of a parameter M3/fw that is swept as 5.1u:0.1u:5.5u:

measureAcross(Current ?parameters list( "M3/fw"))
; In this example, Current is another expression, Current=abs(IDC("/V1/PLUS"))

The following expression calculates the average phase margin across all Monte Carlo iterations.

measureAcross(average(PhaseMargin ?overall t) ?parameters list( "mc_iteration"))

A new output expression is created.

If you use average, ymax, ymin, peakToPeak, or stddev function in measureAcross, the tool automatically adds an additional argument, ?overall, and sets it to t. With this argument, the tool performs the calculation on the results across the swept conditions. If this is not required for your expression, you can set ?overall to nil.

The expressions with Type set to any are evaluated after all simulations are run and other expressions are calculated.

Related Topics

measureAcross

Viewing Results of Outputs Measured Across Any Dimension

Viewing Results of Outputs Measured Across Any Dimension

The results of expressions evaluated across any dimension are highlighted in dark purple in the results table. In the example shown below, output MAA_wave has been evaluated across parameter R0.

The results of outputs with type any are calculated across different dimensions that might not match the row and column combination of the Results table. As a result, the values for these outputs are repeated for the dimensions across which they are not measured.

In the following example, output calibVal calculates a cross of PhaseMargin across the variable calibC0.

The cross function runs on the PhaseMargin result across all values of calibC0 when other dimensions are constant. The resulting calibVal value remains constant for each varying value of calibC0 while other dimensions remain constant. The same is visible in the calibVal column in the Detail-Transpose results view.

Similarly in the following example, the output acrossVddMC is measured across two dimensions, vdd and mc_iteration, and the resulting value is constant for all varying combinations of these two dimensions when other dimensions are constant.

For any invalid expression in measureAcross, the tool displays eval error in results.

calcVal expressions can also refer to outputs that are measured across any dimension. However, you might need to use the ?matchParams or ?getFirstSweepPoint argument to use the desired result of that output. For example, calcVal("calibVal" "AC_test" ?getFirstSweepPont t) where calibVal is an expression with EvalType as any.

Related Topics

measureAcross

Creating Expressions to be Measured Across Any Dimension

Viewing and Editing Output Signals or Expressions in Calculator

You can send the outputs from the Outputs Setup tab of the ADE Assembler Outputs pane to the Expression Editor in Virtuoso Visualization and Analysis XL Calculator. In the Calculator window, you can copy an expression from the Expression Editor to the buffer, make changes, and send it back to the Outputs pane.

Depending on your requirement, you can either send a single output (signal or expression), a set of outputs, or all the outputs to the Calculator.

This feature is not supported for other output types such as OCEAN script, MATLAB script, area spec, violation filter, and .measure.

To send a single or a selected set of outputs to the Calculator, do the following:

  1. On the Outputs Setup tab, press the Ctrl key and click the expressions or signals that you want to copy to the Calculator.
  2. Right-click any one of the selected output and choose Send to Expression Editor.
    The selected outputs are copied to the Expression Editor in Virtuoso Visualization and Analysis XL Calculator window, as shown below.
    If the Expression Editor is not visible, you might need to expand the Calculator window.
    The names of expressions are the same as those mentioned in ADE Assembler. If no name is given for the source output in ADE Assembler, a default name E<count> is used, as shown in the following figure.
    In the above figure, the signals have been copied from the ADE Assembler Outputs Setup tab to the Expression Editor. These signals have been assigned default names and they have been converted into expressions.
    If more than one analysis is enabled for the ADE Assembler test, a separate expression is created to get the signal data from each analysis. In the example shown above, the test ACGainBW contains two tests, ac and dc. When the signal /OUT is sent to the Expression Editor, two separate expressions are created to get the result data for /OUT from the two analysis. The ?result argument indicates the name of the analysis from which the data is taken.

To send all the output expressions or signals from the ADE Assembler Outputs Setup tab to the Expression Editor in Calculator, do the following:

  1. Click the drop-down arrow to the right of the Send to Expression Editor command to view the command options.
    By default, Expressions is selected, which implies that only the expressions will be copied to the Calculator.
  2. To copy all the expressions and signals, select All.
    You can change the default selection by setting the value of the sendOutputsToEEFilter environment variable.
  3. Click Send Outputs to Expression Editor.
    All the expressions and signals, are copied to the Expression Editor in Calculator.
    The Send to Expression Editor command is also available on the right-click menu of the Output Setup pane of the ADE Explorer.

Using MATLAB Expressions in Outputs

Fast, accurate, and efficient analysis of simulation results is one of the key requirements for circuit simulation and verification. Integration of MATLAB® with ADE Assembler provides the capability to apply various data slicing and querying methods for advanced data analysis and waveform processing using a high-level language.

To use MATLAB® in ADE Assembler, you can add MATLAB expressions as outputs that are evaluated in the MATLAB engine. The MATLAB engine runs independent of ADE Assembler, but there is a channel through which ADE Assembler exposes the circuit simulation data. This provides MATLAB a capability to access both the scalar and waveform data that can be used in measurements for single points, sweeps or corners as well as for Monte Carlo analysis. The results of these expressions are returned by MATLAB and displayed on the Results tab in ADE Assembler.

To evaluate MATLAB expressions, you need to run MATLAB vR2020b or later. You also require the Virtuoso MATLAB Integration Option (95252) license.

The following topics describe how you can use MATLAB expressions in ADE Assembler:

Adding Outputs of Type MATLAB Expression in ADE Assembler

To add a MATLAB expression in ADE Assembler, perform the following steps:

  1. On the Outputs Setup tab, click , and then the test for which you need to add the expression.
  2. Choose MATLAB Expression from the drop-down list.
    A new row with matlabexpr as Type is added to the outputs table.
  3. Double-click the Details column for this row to enable editing.
  4. Enter a MATLAB expression or a function already defined in MATLAB. This function can be a built-in function in the MATLAB engine or the additional functions provided by Virtuoso for integration of MATLAB with ADE. If you need to perform a custom calculation, you can also define a function in the MATLAB window and use that in the MATLAB expression.

Alternatively, click Open MATLAB (…) in the Details column to open the MATLAB window. Create a MATLAB expression, copy it to the clipboard, and paste it in the new row added in step 2.

By default, EvalType for MATLAB Expressions is set to all, which indicates that the MATLAB expression is to be evaluated after the simulation results for all the points are ready. These expressions can be measured for a single point or across all data points or corners. If an expression needs to be evaluated using the simulation results of a single design point, change the EvalType to point.

Related Environment Variables:

Example: If you have defined a function in MATLAB, as shown below,

function result=myFunction()
result=100
end

you can call this function from the matlabexpr type of output in ADE Assembler, as shown below.

Using an Interactive MATLAB Session Opened from ADE Assembler

Instead of passing on MATLAB expressions to the MATLAB engine for evaluation during simulation run, you can open the MATLAB application from the ADE Explorer or ADE Assembler environment, and define a function or expression in that to query the already available simulation data.

For this, perform the following steps:

  1. Click Open MATLAB ( ) on the toolbar of the Results tab.
    Note the following:
    • The following default libraries are imported in this interactive session:
      • cadence.*
      • cadence.srrdata.*
      • cadence.calculator.*
      • cadence.help
    • The adeInfo object is automatically added to MATLAB. This is an object of the AdeInfoManager class defined for the integration of ADE with MATLAB. It contains a reference to the current history in ADE Assembler.
  2. Use the properties and functions of the adeInfo object to access the history results.
    For example, you can define a function to use the simulation results as shown below.
    function result=myMeasurement()
      adeInfo.loadResult;
      rdb = adeInfo.adeRDB;
      rdb.corners;
      ...
      ...
    end

    By default, the result context for the loadResult function in the MATLAB window is set to the current ADE simulation history. You can change the context to another history by setting the history argument of the loadResult function.
    adeInfo.loadResult('history', 'Interactive.2')

    The functions used in a MATLAB expression must be found in the location specified by the MATLABPATH environment variable.
  3. Save the function in a file. By default, the file is saved in the MATLAB working directory, which is the same as the current working directory for Virtuoso. The MATLAB files are saved with the .m extension.
    A MATLAB function can return the following types of values to ADE Assembler:
    • Scalar values: A single value is returned. When a MATLAB expression that returns a single value is added as an output expression, a single value is returned for each point and displayed on the Results tab of ADE Assembler.
    • Waveform objects: When a MATLAB expression that returns a single waveform is added as an output expression in ADE Assembler, a waveform icon is displayed for each point on the Results tab.
      If you run a MATLAB function from the MATLAB window, you can use the cdsPlot function, which is included in the cadence.utils package, to plot a waveform result, as shown below.
      import cadence.utils.cdsPlot
      %Load results of simulation data point #1
      adeInfo.loadResult('test','tran','DataPoint', 1);
      wave = VT('/I0/I2/a');
      cdsPlot(wave)
      If the returned value contains multiple waveforms, you can refer to the individual waveform by using the dot (.) operator.
      cdsPlot(waves.wave(1))
      cdsPlot(waves.wave(2))
    • String Values: These are helpful in returning string values from a MATLAB expression.
    • MATLAB structs: These are helpful in returning multiple results from a single MATLAB function call. You need to use the dot (.) operator to access individual values from the struct. In case of errors, the MATLAB expressions return Error.
      A sample MATLAB function that returns multiple values is given below.
      function result = multresults1()
        res1 = 1;
        res2 = 200;
        result = struct('result1', res1, 'result2', res2);
      end 
      To refer to individual values in the struct returned by this object, you need separate expressions on the Outputs table of ADE Assembler, as shown below.
      To get a hint about the individual members of a struct, move the mouse over a struct type of result. A tooltip displays the details of the struct, as shown below.
    For more example, refer to Examples of MATLAB Expressions.

Evaluating MATLAB Expressions Across All Dimensions

By default, the MATLAB expressions have EvalType set to all. Therefore, these expressions are evaluated across all dimensions, and their results are displayed in a separate section at the top of the Results tab, as shown below.

The outputs to be measured across all are evaluated only after the simulation run is complete, and the results for all the points and corners are available.

Evaluating MATLAB Expressions for a Data Point

Similar to other output types, if a MATLAB expression is to be evaluated for a data point, set the EvalType value for that expression to point, as shown in the example given below.

While running a simulation, ADE sends this expression to the MATLAB engine and also shares the reference of the current test and data point for the expression. In addition, it sets the context for the session and history in MATLAB to the current session and history in ADE Assembler.

If MATLAB returns a scalar value, the value is displayed on the Results tab. If MATLAB returns a waveform, a wave icon is displayed. Click that icon to view the result, as shown below.

The outputs to be measured for a single data point are evaluated only after each point is simulated. It is possible that when an expression is evaluated for a data point, the results for that point are not available, which can be due to multiple reasons, such as the scheduled job to run the simulation for that point is waiting or is not complete, or the results are not received from a remote computer. In such cases, the expression might return an error. It is recommended to be careful when using point as an eval type for MATLAB expressions.

Related Environment Variables

Examples of MATLAB Expressions

A MATLAB expression can be used to perform different types of calculations on the input data. A few examples are:

To create these MATLAB expressions, you can use the built-in functions in the MATLAB engine or the additional functions provided by Virtuoso for integration of MATLAB with ADE. The additional functions are provided in a package named cadence, which contains various sub-packages. You can also define custom functions using the available functions.

The following table shows a summary of the packages included in the cadence package.

cadence

srrdata

Query

calculator

utils

Contains functions to access data

Contains constraints that you can use to filter results based on certain criteria

Contains calculator functions for waveforms

Contains special functions to query or group simulation results saved in RDB

The following examples show how you can create MATLAB expressions for the different types of calculations:

Example 1: MATLAB Expression that Uses a Waveform from the Current Simulation

To access the waveform of a signal, say /OUT, from the current simulation results, use the VF function.

VF('/OUT')
; returns a waveform for each data point

For a waveform value returned by a MATLAB expression or function, a waveform icon is displayed on the ADE Results tab. Similar to the other waveform results, you can double-click that icon to view the plot. However, if you are running the command in the MATLAB window, you can use the cdsPlot function of the cadence.utils.cdsPlot library to display the graphs.

Now, to get the maximum Y-axis value for waveform /OUT, you need to use VF('/OUT') inside ymax function.

ymax(VF('/OUT'))
; returns a scalar for each waveform returned for each data point

In the example given above, VF returns a waveform of the ac sweep net voltage. This waveform is an input for ymax, which returns a scalar value—the maximum value on the Y-axis of a waveform.

The ymax(VF('/OUT')) expression is equivalent to max(VF('/OUT').y), where VF('/OUT') returns an object of cadence.Waveform and VF('/OUT').y returns the Y-axis data of VF('/OUT') in the form of a column vector in MATLAB. max, which is a native MATLAB function, returns the maximum value from that column vector.

VF is defined in the cadence.srrdata package and ymax is defined in cadence.calculator. Both the packages are imported by ADE while sending a request to MATLAB for expression evaluation.

In addition, ADE internally shares with MATLAB the details of the current ADE session. It also calls the cadence.AdeInfoManager.loadResult function to load the simulation results for the current test and the current data point by internally running the following commands:

import cadence.srrdata.*
import cadence.utils.cdsPlot
%Load results of simulation data point #1
adeInfo.loadResult('test','<name-of-current-test>','DataPoint', 1);

Therefore, by default, an expression is evaluated for the current point.

For more details about loadResult, run the adeMatlabHelp command in the MATLAB window to open the help describing the integration of MATLAB with ADE, and read the Loading Simulation Results section.

As the commands given above are run internally by ADE while sending a request to MATLAB, you can avoid adding these explicitly in your MATLAB expressions or custom functions written in ADE.
To read more about a package in MATLAB, use the doc <package-name> command in the MATLAB window.

Example 2: MATLAB Expression that Uses a Scalar Value from Another Output in the Current Simulation

If you need to access a scalar value of another output from the current simulation result, you can create a dependent MATLAB expression in the same way as for other types of expressions.

In the example shown below, ymaxVtoAllm10 is dependent on the result of a pre-defined MATLAB function ymaxVtoAll.

In dependent expressions, ADE automatically analyzes the dependency between MATLAB expressions, and evaluates those according to their dependency order.
MATLAB expressions are independent of SKILL expressions. They cannot be used together in a MATLAB function.

Example 3: A MATLAB Expression to Group the Results of Sweep Points

You can use the functions provided in the cadence.utils package to work on the results of sweep points.

For example, you run a simulation by sweeping the values of parameter M3.fw. To find ymax of output /OUT for certain specific sweep points, you can create a MATLAB expression as shown below.

cadence.utils.measureWaveGroupBySweeps( @ymax, @VT, '/OUT', 'M3.fw', 'test', 'TRAN')

The above example returns a waveform that plots the ymax value of /OUT for each value of M3.fw.

Example 4: To return selective values from the results by using query constraints

For the case explained in example 3, if you need to consider only selected data points that meet the following criteria:
- temperature is 0
- M3.l
equals to 350e-09
- M3.fw
is not equal to 4.25e-06

To run the measureWaveGroupBySweeps function on a selected set of values from the simulation results, you can specify query constraints, as shown below.

cadence.utils.measureWaveGroupBySweeps( @ymax, @VT, '/OUT', 'test', 'TRAN' ...
'constraints', cadence.Query.Parameter('temperature') == 0 &
cadence.Query.Parameter('M3.l') == 350e-09 & ...
cadence.Query.Parameter('M3.fw') ~= 4.25e-06)

The measureWaveGroupBySweeps function is run for all the data points. Therefore, MATLAB executes the function only after the entire simulation run is complete. When ADE calls the cadence.AdeInfoManager.loadResult function, it sets the context to the current ADE session and the current test. The context for data point is set to -1, which implies that the calculation is to be done across all.

The example returns a waveform that plots the ymax value of /OUT for each value of M3.fw where the given criteria is met.

Additional reference materials:

Example 5: A MATLAB Expression to Perform Calculations on the Grouped Results of Corners

If you need to group the scalar results for corners and then perform some mathematical calculations on the grouped data, you can use the cadence.utils.measureGroupByCorners function.

For example, you need to find the maximum value for an output, SettlingTime, across all the data points in each corner group. For this, you can use the measureGroupByCorners function, as shown below.

cadence.utils.measureGroupByCorners(@max, 'constraints', cadence.Query.Output() == 'SettlingTime');

In measureGroupbyCorners function runs on scalar values saved in the results database. Similar to measureWaveFormsBySweeps, for this function too, ADE sets the context to the current ADE session and the current test.

The example returns a waveform that plots the max value of SettlingTime for each corner, as shown below.

Additional reference materials:

For more details and examples, refer to the Virtuoso ADE MATLAB Integration rapid adoption kit on Cadence Online Support.

Debugging MATLAB Expressions in the MATLAB Window

If the simulation results for a MATLAB expression do not return the required result or show errors, you can edit those and re-evaluate without running the simulation again. Expressions can be edited in the Outputs Setup pane or in the MATLAB window.

To edit and debug an expression in the MATLAB window:

You can also access operating point parameters from an extracted view in MATLAB.

For example, after launching MATLAB through the Open MATLAB option on the Results toolbar, let us run the following commands.

import cadence.srrdata.*
adeInfo.loadResult('datapoint',1,'test','testLib:buf_sim:1');
psfdir = adeInfo.adeCurrentResultsPath
    cds_srr(psfdir)
    dcinfo=cds_srr(psfdir,'dcOpInfo-info')
    op = dcinfo.bsim4;  %This is a cell array in this testcase

In case you wish to filter a large cell array, you can also use the following commands.

opi1 = find(contains(op, 'PM0'));  %Find index that contains PM0
opi2 = find(contains(op, 'vdsat'));  %Find index that contains vdsat
opi = intersect(opi1, opi2); % index common to opi1 and opi2
opf = op(opi)  %Filtered list
val1 = DATA('I0.PM0\(1\):vdsat', 'dcOpInfo-info', 'OP')

Or

val1 = getData('I0.PM0\(1\):vdsat', 'result', 'dcOpInfo')
val2 = DATA('I0.PM0\(0\)_1__rcx:vdsat', 'dcOpInfo-info', 'OP')

Or

val2 = getData('I0.PM0\(0\)_1__rcx:vdsat', 'result', 'dcOpInfo-info')

On using the above commands, the following output is displayed.

mytest1
psfdir =
        '/home/user/simulation/testLib/buf_iter/maestro/results/maestro/Interactive.0/1/testLib:buf_sim:1/psf'
    ans =
      11x1 cell array
        {'tran-tran'                 }
        {'finalTimeOP-info'          }
        {'dcOp-dc'                   }
        {'dcOpInfo-info'             }
        {'modelParameter-info'       }
        {'element-info'              }
        {'outputParameter-info'      }
        {'designParamVals-info'      }
        {'primitives-info.primitives'}
        {'subckts-info.subckts'      }
        {'variables'                 }
    dcinfo =
      struct with fields:
           signal_info: {1x14 cell}
                  prop: {23x1 cell}
            sweep_info: {}
                 bsim4: {1020x1 cell}
        bsource_2b273e: {60x1 cell}
             capacitor: {43x1 cell}
              resistor: {236x1 cell}
               vsource: {9x1 cell}
    opf =
      8x1 cell array
        {'I0.PM0\(1\):vdsat'            }
        {'I0.PM0\(1\):vdsat_marg'       }
        {'I0.PM0\(1\)_1__rcx:vdsat'     }
        {'I0.PM0\(1\)_1__rcx:vdsat_marg'}
        {'I0.PM0\(0\):vdsat'            }
        {'I0.PM0\(0\):vdsat_marg'       }
        {'I0.PM0\(0\)_1__rcx:vdsat'     }
        {'I0.PM0\(0\)_1__rcx:vdsat_marg'}
    val1 =
       -0.0481
    val1 =
       -0.0481
    val2 =
       -0.0481
    val2 =
       -0.0481

Loading an OCEAN or a MATLAB Measurement

See axlOutputResult in the Virtuoso ADE SKILL Reference. See the OCEAN Reference for information about OCEAN script commands.

To load an OCEAN script file containing one or more output measurements or a MATLAB measurement defined in a script file (one value per script) for a test, do the following:

  1. On the Outputs Setup tab, click the button.
  2. In the drop-down list, select a test and choose OCEAN script or MATLAB script.
    A new row is added for the test with the output type ocean or matlab.
    You can double-click the test name or output type to select a different test or output type from the drop-down list that appears in the Test or Type column.
  3. (Optional) In the Name field, type a name to represent the measure.
  4. Double-click the Details field.
  5. Type the name of (and location/path to) the script file.
    Alternatively, you can click the browse button to open a browser window so that you can browse to locate a file. After you select a file and click Open, the relative path to the file appears in the Details field.
    Once the script file name appears in this field, you can edit it by clicking the Edit File button .

See also

Editing an OCEAN or a MATLAB Script File

To edit an OCEAN or a MATLAB measurement in a script file, do the following:

  1. On the Outputs Setup tab, double-click the OCEAN or MATLAB script file you want to edit in the Details field.
  2. Click clicking the Edit File button.
    The script file appears in a text editor.
    By default, ADE Assembler opens the text editor set by using the $EDITOR shell variable in UNIX. You can specify a preferred text editor by using the editor SKILL variable.
  3. Edit the script file and save your changes.
    The program uses the new script the next time you run the test.

Writing a MATLAB Script

When writing a MATLAB measure, you create a script in a .m file. You can use additional tools such as the cds_srr function provided in the Spectre/RF MATLAB Toolbox1 to read the results data. You can also use the axlCurrentResultsPath special function in your MATLAB script file to determine the current ADE Assembler results path. If you want your script to write results to the Results tab of the Outputs pane, you must assign the value to the axlResult variable. You can plot your results in MATLAB if you include a MATLAB plot command in your script file.

To write a MATLAB measure for a test, do the following:

  1. Use a text editor to create a .m file.
  2. (Optional) Use the cds_srr function to access results data as follows:
    cds_srr( ’path_to_psf_dir’, ’analysisName’, ’outputVariable’ )
    where

    path_to_psf_dir

    is the path to the psf directory; for example:

    simulation/ampTest/schematic/psf 
    You can use the axlCurrentResultsPath function (instead of ’path_to_psf_dir’) as follows to return the current ADE Assembler results path:
    cds_srr( axlCurrentResultsPath, … )

    analysisName

    is the analysis name string that corresponds to the psf subdirectory that contains the results; for example:

    tran-tran

    outputVariable

    is the output variable name


    For example:
    cds_srr( ’simulation/ampTest/schematic/psf’, ’tran-tran’, ’out’ ) 
  3. If you want your script to write results to the Results tab of the Outputs pane, you must assign the value to the axlResult variable as follows:
    axlResult = resultStatement 
    For example:
    axlResult = max( out.time ) 
  4. Save your changes and load this .m file.
    Matlab prefers current directory over any other path. So, if the Matlab script file (.m file) exists in the current directory, it is always run from there. To run a matlab script saved at a location other than the current run directory, delete the script from the current directory.

Example scripts

The following script creates a MATLAB plot using the specified X and Y values.

figure 
x = [1 2 3]
y = [2 0 6]
plot(x,y)

The following script accesses the value of the out output variable from the current transient results directory using axlCurrentResultsPath, plots out using MATLAB (Voltage on the X axis and time on the Y axis), and writes the measured value (for total simulation time) to the Results tab of the Outputs pane.

out = cds_srr( axlCurrentResultsPath,'tran-tran', 'out' ) 
fig = figure
plot( out.V,out.time )
axlResult = max( out.time )

Saving Operating Point Parameters

In the Outputs Setup pane, you can specify the instances and their operating point parameters that you want the simulator to save. Currently, this feature is available only in the Spectre and operating point parameters for only DC and transient analyses are saved.

By default, the instance column on the Outputs setup pane is blank. To add instances and their operating point parameters that are to be saved, perform one of the following steps:

  1. On the Outputs Setup tab, click .
  2. In the drop-down list, select a test and choose Op Parameters from the sub menu.
    A new row is added for the test with the output type oppoint.
  3. In the new row, click Select operating point instances, as shown below.
    The Schematic Editor window appears.
  4. Select the required instances in this window. The selected instances are highlighted in the Schematic Editor window, as shown in the figure below.
    The selected instances are listed in the table as shown in the figure below.

Adding Operating Point Parameters

In the Details column, do one of the following to specify the operating point parameters to be saved for each instance:

Viewing Tabular Report for Operating Point Parameters

To use this feature, set the following environment variable in the CIW:

envSetVal("maestro.gui" "showOperatingPointsTableUI" 'boolean t)

To open the tabular report for operating point parameters:

  1. In the Results tab, right-click any results for a parametric sweep or corner result, choose Print Operating Point Information to open the Operating Point Parameters Summary form.

  2. In the select dataset: drop-down list, select any one of the available transient and DC result datasets to view its results.

The following table shows the results for the operating point parameters and categorizes the devices based on their type. The corner name and point number are displayed in the labels on top of the form. You can sort and filter the results data to view selected data.

In the tabular report, you can do the following:

Copying Outputs

You can copy outputs within a test or from one test to another. You can also copy and paste the contents of an output. This allows you to quickly setup outputs for your tests.

For more information, see the following topics:

Copying Outputs Within and Across Tests

You can copy outputs within a test or from one test to another. For example, if you have specified an output expression for one test, you can do the following:

To copy outputs within and across tests, do the following:

An output will be copied across tests only if an output with the same name does not exist in the target test. For example, if you are copying an output expression named DCGain from one test to another, and the target test has an output with the same name, the output expression will not be copied.

Copying the Contents of an Output

To copy the contents (name, expression, file name, specification, weight, units or digits) of an output, do the following:

  1. On the row for the output in the Outputs Setup tab of the Outputs pane, select the content you want to copy.
    For example, to copy an expression, select the expression in the Details column.
  2. Press Ctrl+C to copy the content.
  3. Select the cell where you want to paste the content.
    For example, to paste an expression, select a cell in the Details column.
  4. Press Ctrl+V to paste the content.

Adding User-Defined Columns in the Outputs Setup Tab

In addition to the default set of columns that appear in the Outputs Setup tab, you can add one or more user-defined or custom columns. These user-defined columns can be used to save additional information, such as comments, target values for specifications, or other notes related to a measurement.

To help you use the information provided in the user-defined columns while analyzing results, ADE Assembler makes this information available in the following ways:

For more information, see the following topics:

Adding a User-Defined Column

To add a user-defined column in the Outputs Setup tab, do the following:

  1. Right-click the title of any existing column and choose Add Column from the context-sensitive menu that appears.
    The Add Column form is displayed.
  2. In the New Column Name field, specify a name for the new column to be added.
  3. Click OK.
    A new column is added to the right of the existing columns.

You can add any information in a custom column. The information in this column is retained and displayed on the Results tab post simulation run.

Also see:

Renaming a User-Defined Column

If required, you can rename a user-defined column. For this, do the following:

  1. Right-click the column on the Outputs Setup tab and choose Rename Column from the context-sensitive menu.
    The Rename Column form is displayed.
  2. In the Rename Column to field, specify a new name for the column.
  3. Click OK.

Deleting a User-Defined Column

To delete a user-defined column, do the following:

The column is removed from the Outputs Setup tab.

You can only delete a custom or user-defined column. It is not possible to delete a standard column from the Outputs Setup tab. However, you can hide or show selected columns, as required.

Hiding a User-Defined Column

To hide a user-defined column on the Outputs Setup tab, do the following:

To hide a user-defined column on the Results tab, do the following:

All the custom columns are hidden.

Exporting Outputs to a CSV File

You can save the outputs from the Outputs tab to a CSV file. This helps in saving outputs in a format from which they can be later reused and imported in another maestro view.

To export outputs to a CSV file, do the following:

  1. Ensure that all the required outputs are defined on the Outputs Setup tab.
  2. Click Export Outputs to CSV File on the toolbar on the Outputs Setup tab.

The Export Outputs to CSV form is displayed, as shown below.

  1. (Optional) Specify a file name.
    The default file name is outputs_<lib>_<cell>_<view>.csv where lib, cell, and view are the library name, cell name, and view name associated with the test. By default, it is saved in the testcase directory.
  2. (Optional) Select the Omit Test Column check box to specify that the test names are not to be saved in the CSV file.

By default, ADE Assembler saves the test name along with each saved output to indicate the test to which this belongs. Next time, when you import the outputs from the CVS file, the outputs will be assigned to the given test name only.

When the outputs are saved without the test name, you can load them later for another test as well. For more details, refer to Importing Outputs from a CSV File.

  1. Click OK to export the outputs and to close the form.
    All the outputs defined on the Outputs tab are saved in the specified CSV file, as shown below.

Important Points to Note:

Related topics:

Importing Outputs from a CSV File

If you have outputs exported and saved in a CSV file, you can import those to the same or a different maestro view, as required.

To import the outputs from a CSV file, do the following:

  1. Open the maestro view to which you need to import the outputs.
  2. Click Import Outputs from CSV File on the toolbar on the Outputs Setup tab.

The Import Outputs from CSV form is displayed, as shown below.

The most recently exported file name appears in the File field.

  1. Click Browse to locate and select a different file.
    ADE Assembler reads the specified file. If the details in the file were saved with the test column, the Test drop-down list on this form remains disabled.
    If the selected CSV file does not contain the details of the test column, the Test drop-down list is enabled and the names of all the tests in the current maestro view are listed in it.
    Outputs that were earlier exported from the ADE L environment in a .txt file can be imported in ADE Assembler.
  2. (Optional) If the Test drop-down list is enabled, select the name of the test for which you wish to import the outputs from the specified CSV file.
    Select Import to All Tests to import the complete set of outputs for all the tests in the current maestro view.
  3. Select an appropriate option from the Operation field to specify how you want to use the output rows that already exist before you import details from the CSV file.
    Following are the three possible operations to choose from:
    • retain: If an output already exists in the Outputs Setup tab with a name which is same as that of an output being imported, the import is not done and the existing output is retained.
      In this case, a message similar to the one shown below is displayed in CIW:
      *Info*    Output "Supply_Current" exists in the current setup and the operation is "retain". Skipping import of row 2 from CSV file "./out2.csv".
      An existing output which has the same signal name as that of an output being imported is also retained.
    • merge: If an existing output for a given test has the same name as that of an output being imported, it is deleted and is overwritten by the imported output.
      In this case, a message similar to the one shown below is displayed in CIW:
      *Info*    Output "CMRR@10M" exists in the current setup and the operation is "merge". Deleting this output from the current setup and importing it from CSV file "./out1.csv".

      Other outputs for which the names do not match with the outputs being imported are also retained.
    • overwrite: All existing outputs for the given test are deleted and all the imported outputs are used.
      In this case, a message similar to the one shown below is displayed in CIW:
      *Info*    The import outputs from CSV file operation is "overwrite". The original outputs in test "Offset" are deleted.
  4. Click OK to import the outputs.

Related topics:

Configuring How Outputs Appear on the Outputs Setup Tab

By default, the Outputs Setup tab of the Outputs pane displays the outputs added for all the tests. You can change the order in which outputs or columns are displayed or you can show or hide the outputs or columns by using the toolbar on top of this tab.

For more information about viewing outputs in the Outputs Setup tab, see the following topics:

Changing the Order of Outputs

To change the order of outputs, do one of the following:

When you run a simulation, the outputs for a test are displayed in the same order in the Results tab of the Outputs pane.

Order of output rows is overridden if you sort the outputs by a column. For details, see Sorting the Outputs.

Sorting the Outputs

By default, outputs are sorted by test names. However, you can sort them by any column on this tab. For example, you can sort the outputs by output name or by output type.

To change the sorting order by a column:

To undo sorting or to restore the original arrangement of rows:

The tool groups the outputs by test name and within each test, displays the outputs in the user-specified order.

Hiding and Showing Outputs

You can use the drop-down menu of the command on the Outputs Setup tab to specify the outputs to be displayed on this tab. The drop-down menu provides the following commands:

Hiding and Showing Output Details

To show or hide output details in the Outputs table, do the following:

  1. Click the Configure what is shown in the table ( ) button on the Outputs Setup tab. The following drop-down list appears.
  2. Select/deselect the check box next to an item in this list to show or hide the related information in the Outputs table.

Changing the Order of Columns

To change the order of columns in the Outputs Setup tab of the Outputs pane, do the following:

  1. Click a column name.
  2. Drag and drop the column at the desired location.

Hiding and Showing Columns

To hide the columns in the Outputs Setup tab of the Outputs pane, do the following:

Right-click a column name to display a context-sensitive menu listing all the columns. A check mark next to a column name indicates that the column is being displayed.

Filtering and Searching in Outputs Setup Pane

You can view a video demonstration for this feature at Filtering Data on the Outputs Setup and Results Panes.

You can use the search filters (Filters) displayed at the top of the Outputs Setup pane to filter the outputs based on specified search words or strings. These filters are displayed for all the fields in the Outputs Setup pane except for the Plot and Save check boxes.

By default, the filters are always displayed in the ADE Assembler setup because the outputSetupFilteringNumOutputThreshold environment variable is set to 0. However, you can hide these by setting this variable to the minimum number of rows for which you want to start showing the filters.

Regardless of the setting of this variable, you can also show or hide filters manually for any number of output rows. To do this, right-click anywhere on the outputs header and choose Show Filters or Hide Filters.

To filter the output rows in the Outputs Setup pane, do one of the following

To specify filter conditions while searching or filtering the outputs,

Viewing Search History

A history of the searched words or strings is also maintained in the Filter drop-down list. This history can be reused later, and therefore, helps in making the filtering or searching faster for the frequently used outputs. In addition, you do not need to type the search text again to search for particular outputs.

To clear the search history, select Clear Search History from the drop-down list of search filter.

In addition, after the searched outputs are filtered and listed, the filter drop-down list changes into a Cancel button that you can use to cancel the search and display all the specified outputs.

Using Named Filters Toolbar

You can use the Named filters toolbar to create and save named filters for combination of column searches that you use or refer to more frequently. These named filter include search words or strings used to filter the outputs for all columns.

To open the Named filters toolbar,

To save a named filter,

To delete a saved filter,

Selecting Outputs to Save or Plot

You can select outputs (signals and expressions) to save or plot by selecting the Plot or Save check boxes on the Outputs Setup tab of the Outputs pane.

To select an output for plotting, do the following:

To select an output for saving, do the following:

See also “Specifying Whether a Result Will Be Saved or Plotted”.

Removing Outputs

You can remove outputs (signals and expressions) from the save or plot set by deselecting the Plot or Save check boxes on the Outputs Setup tab of the Outputs pane. You can also remove outputs altogether from the test setup.

To remove an output from the plot set, do the following:

To remove an output from the save set, do the following:

To remove an output from the test setup, do the following:

See also “Specifying Whether a Result Will Be Saved or Plotted”.

Saving All Voltages or Currents

To save all of the node voltages and terminal currents, do the following:

  1. On the Outputs Setup tab of the Outputs pane, right-click a test and choose Save All.
    The Save Options or Keep Options form appears, depending on your target simulator. The options that appear on this form vary according to your target simulator:
  2. Select the values you want to save and click OK.
    Spectre never saves the current data for global pins even if you select Save all on the Outputs tab.

Save Options form for Spectre Simulations

For Spectre simulations, the following Save Options form appears:

For more information about the fields on this form, see Saving All Voltages or Currents in the Virtuoso ADE Explorer User Guide.

Keep Options form for UltraSim Simulations

For UltraSim Simulations, the following form appears:

For more information on using the UltraSim simulator, refer to Working with UltraSim Simulator in Virtuoso ADE Explorer User Guide.

Save Options form for AMS Simulations

For AMS Simulations, the following form is displayed.

For more information about the fields on this form, see Saving All Voltages or Currents in the Virtuoso ADE Explorer User Guide.

Save Options form for HspiceD Simulations

For HspiceD Simulations, the following form appears:

For details on working with the HSPICE simulator, refer to Working with HSPICE Simulator in Virtuoso ADE Explorer User Guide.

  1. Installed in your MMSIM 6.x hierarchy under tools/spectre/matlab.

Return to top
 ⠀
X