Contenido principal

msbOptimizer

R2026b

Optimize device parameters to set up simulation environment

Since R2024b

Description

Use the msbOptimizer class to optimize the device parameters used in the simulation environment. This class supports Cadence® and Simulink® simulation environments. The class creates an msbOptimizer object using specified arguments. You can then use the optimizeDesign method to optimize the circuit parameters.

If you select different corners in the design, the msbOptimizer finds the best solution that satisfy all metrics under all corners.

To use this functionality, you need a license for Global Optimization Toolbox.

Creation

Description

msbOptimizer(DesignName='pll') creates an msbOptimizer object with DesignName property set to pll.

msbOptimizer(SimulationEnvironment='simulink',OutputsSetup=outputTable,VariableSetup=variableTable,DesignName='pll') creates an msbOptimizer object using the specified DesignName, VariableSetup, and OutputsSetup arguments in the Simulink environment.

example

Name-Value Arguments

expand all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: moptimizer = msbOptimizer(SimulationEnvironment='simulink',VariableSetup=variableTable,DesignName='DSM2ndOrder') optimizes the variables of a second order DSM in the Simulink environment.

Simulation environment where you want to optimize the parameters, specified as cadence or simulink.

Note

If you set SimulationEnvironment as simulink, you must provide the DesignName argument.

Data Types: char

Optimization solver that optimizes circuit parameters. You can choose between surrogateopt and essabopt.

Note

To use the essabopt optimization technique, you need a license for Deep Learning Toolbox™.

Performance specifications for design whose parameters are being optimized, specified as a table. The table requires four columns: Test, Name, Units, and Spec.

Column HeaderDescription
Test

Name of the test for which the object is optimizing parameters.

Name

Name of the parameter the object is optimizing

Units

Unit of the parameter the object is optimizing

Spec

Target specifications for optimization. The object accepts these keywords:

> value
< value
maximize target
minimize target
range low high
tolerance center percent

Note

If you set SimulationEnvironment as simulink, you must provide the OutputsSetup argument.

Note

If you set SimulationEnvironment as cadence, the class ignores the specified OutputsSetup and gets the data from the adeInfo object in the base workspace.

Variables or parameters to be optimized, specified as a table. The table requires two columns: parameters and values.

Note

If you set SimulationEnvironment as simulink, you must provide the VariableSetup argument.

Note

If you set SimulationEnvironment as cadence, the class ignores the specified VariableSetup and gets the data from the adeInfo object in the base workspace.

Name of the Simulink model whose design parameters are optimized, specified as a string.

Note

If you set SimulationEnvironment as simulink, you must provide the DesignName argument.

Data Types: char

Object Functions

optimizeDesignOptimize circuit design in simulation environment

Examples

collapse all

Define the performance specifications of a second-order DSM.

outputTable=table();
outputTable.Test=["ACMeas";"ACMeas";"ACMeas";"ACMeas";"ACMeas"];
outputTable.Name={'SNR';'SFDR';'SINAD';'ENOB';'NoiseFloor'};
outputTable.Units={'dB';'dB';'dB';'bits';'dB'};
outputTable.Spec={'> 72';'> 74';'> 72';'maximize 11.5';'< -78'}
outputTable = 5×4 table
      Test           Name          Units            Spec       
    ________    ______________    ________    _________________

    "ACMeas"    {'SNR'       }    {'dB'  }    {'> 72'         }
    "ACMeas"    {'SFDR'      }    {'dB'  }    {'> 74'         }
    "ACMeas"    {'SINAD'     }    {'dB'  }    {'> 72'         }
    "ACMeas"    {'ENOB'      }    {'bits'}    {'maximize 11.5'}
    "ACMeas"    {'NoiseFloor'}    {'dB'  }    {'< -78'        }

Define the variables to optimize.

variableTable=table();
variableTable.parameters={'a1';'a2';'b1';'b2'};
variableTable.values=["0.15:0.005:0.16";"0.55:0.005:0.7";"0.15:0.005:0.16";"0.55:0.005:0.7"]
variableTable = 4×2 table
    parameters         values      
    __________    _________________

      {'a1'}      "0.15:0.005:0.16"
      {'a2'}      "0.55:0.005:0.7" 
      {'b1'}      "0.15:0.005:0.16"
      {'b2'}      "0.55:0.005:0.7" 

Create the msbOptimizer object.

moptimizer = msbOptimizer(SimulationEnvironment='simulink',OutputsSetup=outputTable,VariableSetup=variableTable,DesignName='DSM2ndOrder')
moptimizer = 
  msbOptimizer with properties:

               DesignName: 'DSM2ndOrder'
                   Solver: "surrogateopt"
    SimulationEnvironment: 'simulink'
             BestSolution: []
              BestMetrics: []
     FinalOptimizerStatus: []
             OutputsSetup: [5×4 table]
          ParametersSetup: [4×2 table]
           ParameterNames: ["a1"    "a2"    "b1"    "b2"]
          ParameterValues: ["0.15:0.005:0.16"    "0.55:0.005:0.7"    "0.15:0.005:0.16"    "0.55:0.005:0.7"]
                    Eflag: []
                   Trials: []
              Constraints: [5×9 table]
                  Corners: []

Optimize the parameters.

[sol,metric] = moptimizer.optimizeDesign
Maximum number of simulations: 100
Number of parallel simulations: 1

Figure Optimization Plot Function contains an axes object. The axes object with title DSM2ndOrder Optimization, xlabel Number of simulations, ylabel SNR contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Infeasible best, Best.

Optimizer was able to meet all the specifications.
sol = 4×2 table
    Name    Value
    ____    _____

    "a1"     0.15
    "a2"    0.575
    "b1"    0.155
    "b2"    0.635

metric = 5×4 table
        Name        FinalMetrics         Specs         Units 
    ____________    ____________    _______________    ______

    "SNR"              72.519       "> 72"             "dB"  
    "SFDR"             80.869       "> 74"             "dB"  
    "SINAD"            72.519       "> 72"             "dB"  
    "ENOB"             11.754       "maximize 11.5"    "bits"
    "NoiseFloor"      -80.755       "< -78"            "dB"  

As you can see, the function meets the required specifications. You can use the check point file to continue further optimization from the current state.

More About

expand all

Tips

  • Set Solver to surrogateopt for general-purpose optimization problems with short simulation times or quick design verifications. This works best when the number of design variables is fewer than 10 or problems have discontinuous transitions.

  • Set Solver to essabopt for analog IC sizing problems with long simulation times or when accurate final design values are critical. It works best when the number of design variables is between 10 and 40 or problems have multiple constraints with stringent specifications.

Version History

Introduced in R2024b