Setting Up Components for Simulation in ADS

In Adding Simulation Setups to an IFF File, details are given that will allow a symbol to be set up so it can netlist. There are additional steps that may need to be taken to account for the fact that the ADS simulation representation may have existed in the Mentor Graphics environment. This describes what may need to be done in order to have a simulatable RF sub circuit that is associated to an LMS component.

Creating an RF Schematic Circuit

In Component Simulation Settings, the process for setting a part up to use an alternate design file was discussed. Essentially, a schematic is created in ADS, that is shared amongst many Mentor LMS parts.

The schematic is supposed to be an accurate model of the part, and takes into account many high frequency parasitic effects that can show up in a packaged part. Unfortunately, there is no substitute for knowing how to model the part. It is mostly trial and error, provided that you have the equipment to measure the response of actual parts, and thus have data to compare your model against. The example schematic that will be shown here is strictly a theoretical one, and was not compared against measured data.

Note
The data that is set up for the schematic is dependent on what is set up in the Library Translator. It is generally a good idea to have the Library Translator running side by side with ADS, so that the netlisting settings can be seen while the RF schematic is being created.

Creating the Schematic

Creating a new schematic in ADS is simple. To open a new schematic window, perform the following:

  1. Choose File > New Design . The New Design dialog box appears.
  2. It is important to name the design correctly. Remember that, in Component Simulation Settings, it was decided that an alternate design file name would be used. In the example, the name chosen was bpl_rls_lib_capacitors . The name of the new design should be chosen to match whatever the alternate design file name was that was chosen in the Library Translator.
  3. Ensure that Type of Network is set to Analog/RF Network .
  4. Unless a special template has been created, no schematic template should be chosen. Leave the Create New Design in field set to Current Window .

Creating the Schematic Topology

When the new schematic is opened in the schematic window, you must now create the topology for the schematic. Topology includes the schematic ports, as well as all of the schematic primitives that model the RF component.

Start by creating the ports. It is critical that the proper number of ports be created, and that the port order for those ports matches the symbols. In Pin Attributes, the process for setting up the symbol pin netlisting order was discussed. While it is not necessary, it is recommended that the port names be set up to match the symbol pin names. In the example from the LMS sample library, the capacitor components have two pins, POS and NEG. In Pin Attributes, the netlist output order for the pins was set to "POS NEG". That means that POS will be the first pin netlisted and NEG will be the second pin netlisted. In order to make a schematic that matches this, port 1 must correspond to POS, and port 2 must correspond to NEG (see RF Schematic Topology). It does not actually matter if POS is pin 1and NEG is pin 2; those pins can have any numbering that is needed to make the layout synchronization work. In this case, the symbol pin number should be ignored.

Once the ports are set up, the components are added that model the circuit. For now, the values don't matter. What is most critical is to add in components that will model the expected parasitic effects.

RF Schematic Topology

In the example shown in RF Schematic Topology, pad resistance and inductance is being modeled. Additionally, it is assumed that the capacitor is non-ideal, and has a leakage current, modeled by a resistor. There is also ground plane coupling being modeled.

Creating the Data Access Component

ADS has a special component, the Data Access Component (DAC), which enables you to read in values from a designated file. Among other things, it is necessary to use the DAC component if you wish to use discrete optimization. However, the DAC is useful in board applications even if you don't want to do discrete optimization.

Mentor Graphics will usually have a parameter ( instpar ), that will define the value of a components primary simulation attribute. For example, in the LMS sample library, the capacitor with part number 2301001 has a value of 1.8n for instpar, indicating that, from an ideal standpoint, the part has a capacitance of 1.8 nanoFarads. Unfortunately, that's all that it has. There is no way of interpreting any of the parasitics that have been modeled into the RF schematic. Thus, using instpar as a parameter to be passed into the RF schematic is not likely to yield accurate results. It is possible that equations could be written that use the passed in value of instpar, but it is also possible that the parasitic values will not scale very well.

The DAC component solves this issue quite well. Instead of passing in values that will be used for the components, a file is set up that contains a series of values that are valid for a single index. For the Mentor Graphics LMS libraries, a unique index is provided already - the part number. So, what can be done is to pass a single parameter to the sub circuit, and use that parameter to do a table lookup to get all of the values that are to be used on all of the schematic components.

DAC Component and its Edit Dialog

There are 3 parameters that need to be changed from their default values. First is the File parameter. In this case, the value has been set to bpl_rls_lib_capacitors.mdf . The format and creation of this file is discussed in Data File Setup. For now, all that needs to be kept in mind is that there will be a file that contains the values for the capacitance sub circuit for each part number.

The second parameter to set is iVar1 . This should be set to 1. This will mean that the first column in the data file will be the index value column.

Note
Ensure that the value is @1 when viewed in the dialog, and not 1 . If the value is 1 , it will not be treated as a numeric index value.

The final parameter that must be set up is iVal1. This tells the DAC component where it should get its index value from. This should normally be a passed in parameter, and for Mentor Graphics libraries, it should be the Mentor Graphics Part Number, or at a minimum, a value derived from the Mentor Graphics Part Number. See Parameter Attributes, for instructions on how to set up the order of parameters, and how to designate that a parameter should or should not be netlisted. In the example shown in DAC Component and its Edit Dialog, PART_NO has been designated as the passed parameter that will be used as the index value.

Modifying the

Modifying the Schematic to use the DAC

Once the Data Access Component has been set up, it unfortunately will not magically set up the schematic to make use of any of the values in the file. There are two separate but important steps to make the schematic use the DAC.

Adding a Parameter to the Schematic

First, it has been noted that PART_NO has been set up as a value that is expected to be passed into the schematic. By default, new schematics do not have any parameters set up to be passed in. Additionally, the fact that the Library Translator was set up to have the symbol devices netlist PART_NO will not add that information onto the schematic, because the schematic is detached from the symbol item definitions. It is necessary to add this parameter to the schematic definition manually.
To add a parameter to the schematic, perform the following:

  1. Choose File > Design Parameters from the schematic window. The Design Parameters dialog box appears.

    This dialog can be used to do component setups, although it does not give full access to all of the options that the Library Translator has. In this case, only one item will need to be added, so the lack of sophistication in the dialog is not a problem.
  2. Click the Parameters tab. This dialog is empty by default. A part number parameter must be added.
  3. In the Edit Parameter section of the dialog, enter PART_NO in the Parameter Name field. This name cannot be arbitrarily selected. It must match the name that will be output by the symbols that have been imported from Mentor Graphics. Since the name in Mentor Graphics is PART_NO, it must similarly be named PART_NO in ADS.
  4. Select String from the Value Type drop-down list.
  5. In the Default Value field, enter the value 2301001. The default value comes from the fact that multiple parts will use this same schematic. You need to choose one part number value from the part numbers available in the part family. In this case, 2301001 has been chosen.

Adding a parameter to an ADS schematic
  1. In the Optional section, select String from the Parameter Type drop-down list.
  2. The Parameter Description can be set to whatever you want; in this case, Part Number was chosen.
  3. You do not need to worry about specifying that the parameter is optimizable or that statistics can be done on the parameter. Those are important on instances only, and this schematic will never be placed as an instance. The Mentor Graphics symbols will be placed as instances, and they point to this schematic, but they do not inherit any of their property settings from the schematic. Likewise, the not edited checkbox will not make a difference, because that is read from the instance, and again, this schematic design will not be placed as an instance.
  4. With all of the values set, click the Add button. This will add the parameter to the Select Parameter listbox.
  5. Click the OK button, the item definition for the schematic is updated, and it will now have PART_NO available as a passed in parameter.

Setting Up Component Values to Use the DAC

The second step in using the Data Access Component is to set the components up to use one of the fields specified in the data file. For more information on the data file, see the section Data File Setup. Suffice it to say here, the data for the components is set up in a table. The PART_NO property will determine which row of the table is used. For each component value, you need to specify which column of the table to use.

To specify that a component instance parameter use a Data Access Component, you can use the edit component parameters dialog box for each instance in the design that will use data from the DAC component. From the schematic window,

  1. Choose Edit > Component > Edit Component Parameters and click the component symbol. The component dialog box appears. A capacitor was chosen in this case.
  2. In the Select Parameter field, click the parameter that will use the data from the Data Access Component.
  3. Select File Based from the Parameter Entry Mode drop-down list. A Data Access Component Instance drop-down list appears with a list of available Data Access Components. In this example, there is only a single Data Access Component available, DAC1, so that Data Access component is chosen.
  4. It is now necessary to choose the column name from the data file. Discrete Data File for Capacitors shows the data file bpl_rls_lib_capacitors.mdf that is being used by the Data Access component. The dependent parameter name is the name of the column. In this case, the column C is the data that is to be used, so C is entered in the Dependent Parameter Name field. When this schematic is simulated, the parameter value of C for the instance C1 will have its value determined by reading the file bpl_rls_lib_capacitors.mdf , and selecting the column labeled C for the row designated by the value of PART_NO that was passed in as a parameter to the schematic.
  5. Click Apply in the component dialog box. The parameter that will use the data from the Data Access Component is updated in the Select Parameter field as shown in Setting a Parameter to use a DAC Data Column.

    Setting a Parameter to use a DAC Data Column
  6. Click OK in the component dialog box.
    The procedure above must be repeated for each of the instances that will have their value determined by the Data Access component. Final RF Schematic for Capacitor Family shows the final RF schematic, with all of the instances set up to get their values from the Data Access Component.

    Final RF Schematic for Capacitor Family

Data File Setup

There are numerous tasks that can be performed for data file setups. However, this section only describes information relating to setting up a data file for Mentor Graphics LMS components.

Discrete Data File for Capacitors shows an example of a discrete data file.

Discrete Data File for Capacitors

The file format is fairly simple. The comment line for the file is REM. All lines starting with REM are ignored. The BEGIN DSCRDATA signifies the beginning of a discrete data segment in the file. The first line after the BEGIN statement is the column header line. This is prefixed by a % sign. Afterwards, the columns used in the discrete value table must be designated. These names can only use alphanumeric characters, and must not start with a number.

After the % line, each line of the file represents a discrete set of data points. One or more of the columns may be index columns (i.e. they are used for discrete data point lookup), and the other columns represent data columns. The Data Access Component will designate which columns are used as index columns. For example, in the sample file shown in Discrete Data File for Capacitors, the first column (PART_NO) is an index column. It shows that for the index value 2301001, the value of C is 1.8n, the value of RShunt is 5.0M, and so on.

The discrete data files must be placed in the ADS simulator's data file search path. By default, there is only one directory in the data file search path, ./data. This corresponds to the current project's data directory. The data file search path can be changed by modifying the value of DATA_FILES, in the configuration file de_sim.cfg.

Discrete Optimization and Statistics Setup

You can now set your Mentor Graphics components up to use the Discrete Optimization and Yield Analysis capabilities of the ADS simulator. There is one distinct problem with this, though. The capability cannot be used without creating some form of customization for the IFF exporter, unless you have made a conscious choice that you will not send your designs to Mentor Graphics.

This manual will not discuss how to customize the IFF exporter; too much of the customization will depend on exactly how your components have been set up. Basically, there is no single way of customizing the exporter to work with LMS.

Setting up discrete optimization is, unfortunately, an area that requires a basic understanding of Application Extension Language (AEL) programming. If you are unfamiliar with programming in general, and AEL specifically, you should consult with Agilent Technologies prior to doing any sort of optimization or tuning setup.

An Overview of Discrete Optimization and Statistics

Discrete optimization that will be stepped though, in order to find the discrete value that gives the simulation results that are closest to the specified goal. In a non-discrete optimization, a parameterized component can take on any value in a pre-specified range. In a board design, it is very rare that there is a part available that can take on any value. There is a finite set of parts available, and each part will have a discrete value that is somewhere between a minimum and a maximum value for the components. The discrete optimizer will step through each of the available parts, and determine which part is the best fit. Back annotation will then set the component to the new discrete value that is the best fit.
Discrete yield is similar, but slightly different. Discrete yield can be used to step through all of the available parts, or a randomized subset of the available components, so that the performance of the circuit can be measured against performance guidelines that determine if the part would pass or fail a test.

Setting up Formsets to do Optimization and Statistics

In ADS, a formset is a list of forms that are available for a certain parameter. A form is a single entry that can be set up to be a constant value, or that can be an editable value. To use discrete optimization and statistics, it is necessary to use parts that can take on any part number value. This is because when the optimization is finished, you must back annotate the new optimized value to the schematic. If each part is fixed to a single value, it is impossible to update the components so they will use the optimized value. For an LMS part, this is done by creating a formset that allows a component to take on the part number from any part in the family of parts.

AEL file containing formsets for optimization and yield

AEL file containing formsets for optimization and yield shows the AEL code that is used to create the necessary formsets for the capacitors example that has been used throughout this manual. Notice that one constant form is created for each of the part numbers that was imported from Mentor Graphics. These constant forms are then collected into a single form set, called capacitor_parts . The capacitor parts formset thus becomes a list of all of the part numbers that are available for the capacitor family. For more information on the create_constant_form() function call, refer to the " AEL " programmer's reference in your ADS documentation set.

Additionally, ADS requires a special form for discrete optimization. It also requires a special form for discrete yield, although these two forms are essentially identical. The discrete optimization form is created by making a compound form. For more information on create_compound_form() , refer to the " AEL " programmer's reference in your ADS documentation set.

A compound form is essentially a form that can have multiple parameters in it. It is assigned to a parameter, so that the parameter becomes hierarchical. Discrete Optimization requires three parameters to be set for it, Nominal, Minimum, and Maximum. Other forms of optimization are not available for discrete optimization. Each of the parameters is set to be able to use the set of part numbers ("capacitor_parts") as a fixed set of available values. Edit Dialog with Discrete Optimization shows how the finished compound form looks in an ADS edit dialog.

Edit Dialog with Discrete Optimization

The discrete yield has one extra parameter added to it ( pptun ). It is otherwise identical to the optimization compound form.

When creating these forms, you have very little control over the formatting. Part of this is due to the fact that ADS has a preset number of known compound formsets that it can display in the edit dialog. You are essentially stuck with what is depicted in AEL file containing formsets for optimization and yield. You can change the name of the compound form, and you can change the formsets that are used for the values, but everything else must match AEL file containing formsets for optimization and yield.

Once the compound formsets are created, you need to make one more formset. This will contain the capacitor parts, plus the two compound formsets for discrete optimization and discrete statistics. This final formset will then be used in each of the parts that were imported from Mentor Graphics.

Setting up the Components to Utilize the New Formset

Now that the discrete optimization and statistics formset exists, the components need to be changed so they will use the new formset. This can be done in the Library Translator, or by editing the AEL. In this case, the AEL editing method will be shown.

Modified Component Item Definition File shows the final component item definition file that uses the discrete optimization and statistics form set. The modification boils down to changing just one line in the file the create_parm function call for the PART_NO parameter.

Modified Component Item Definition File

After the IFF import, the create_parm function call will look something like this.

create_parm\("PART_NO","",577,"StringAndReferenceFormset",-2,prm\("StringAndRe
ference", "\"2301001\""\)\)

For more information on the create_parm() function call, refer to the " AEL " programmer's reference in your ADS documentation set.
Notice that the formset being used is "StringAndReferenceFormset", and that the default value (designated by the prm function call) is set "\"2301001\"". The attribute values are also set to 577, which corresponds to a number of things, but the most important part of this value is that it means the parameter is not editable.
To make the component work with discrete optimization, the attribute, formset, and default value need to be changed. In Modified Component Item Definition File, it has been changed to the following:

create_parm\("PART_NO","",PARM_DISCRETE_VALUE,"bpl_rls_lib_capacitors",-1,prm
\("2301001"\)\)

The attribute setting is now PARM_DISCRETE_VALUE. This will mean the value is now editable, and that it will be treated as a discrete value for purposes of back annotation. The formset is changed to "bpl_rls_lib_capacitors", which from AEL file containing formsets for optimization and yield, can be seen to be the final formset that contains all of the family part numbers plus the discrete optimization and discrete yield formsets. Finally, the default value is changed to the constant form that represented the original part number value, "2301001".

Unfortunately, editing the AEL file directly will only change a single part. You must go back and edit every single AEL file for every single component. If you plan ahead for discrete yield and optimization, you can use the Library Translator to set the part number parameter up so that it will be imported with the proper values. For more information on using the Library Translator to set up parameter values, refer to Adding Simulation Setups to an IFF File.

Using the Formsets

If you create a separate file containing the formsets, it can be loaded during ADS boot up, and shared amongst all of the LMS components. Unfortunately, when you change AEL components, you must reload them manually. The simplest thing to do is to re-open the project you are working in. This, unfortunately, will purge all of the formsets that were manually loaded, and while the AEL files in the project will all be loaded, the load sequence is difficult to project and may give you errors because the formset file will load after the component files.

There is one good way to get around this while your library is in development. Put the formsets you are using into a separate AEL file (the file can be located anywhere). Then, go to the file $HOME/hpeesof/config/de_sim.cfg, and add a line (or modify it if you already have it) USER_AEL=<path>/<formset file>. For example, if the formset AEL file in AEL file containing formsets for optimization and yield was located at $HOME/formset.ael, the line added would be USER_AEL={$HOME}/formset. The next time ADS is started, the formset file will be loaded during the boot up process, and all of the formsets will be available for the components.

What Problems Does this Process Cause for IFF?

If you are using Mentor Graphics and ADS simultaneously, the transfer mechanism to move designs from ADS to Mentor Graphics is IFF. The IFF transfer mechanism between ADS and Mentor Graphics has some limitations to it, and the discrete optimization and discrete statistics cause serious problems for the IFF transfer mechanism.

In a nutshell, the component symbol has a property on it (HPEESOF_FULL_PATH), which tells Mentor Graphics what component should be used when it is transferred to Mentor Graphics. It simultaneously looks at HPEESOF_FULL_PATH, and the PART_NO parameter. When these values get out of sync with each other, Mentor Graphics will wind up placing the wrong component.

As an example of how the values get out of sync, take a discrete optimization. When the optimization finishes, it will specify a new nominal value, which will become the part number for the component that was optimized. This nominal value will not necessarily match the part number that was originally designated for the component, or that is designated within the HPEESOF_FULL_PATH property.

What is required is that, the designer must ensure that the HPEESOF_FULL_PATH property matches the PART_NO property on the component. It is not actually necessary to replace the component itself. Unfortunately, the simulation back annotation process will not do this for the designer.

Two possibilities exist. One is to create a custom IFF function that, when doing an IFF export, will traverse the hierarchy, and set the PART_NO and HPEESOF_FULL_PATH properties so that they match. Additionally, if the PART_NO parameter is using either the discrete optimization or the discrete yield form, the PART_NO parameter must be changed so that it uses a constant form. A stub function, iff_user_export_initialize, exists so that this procedure can be done. The advantage of this method is that it will ensure that the synchronization has been done prior to the IFF export.

The other possibility is to write a function that does this, but is manually executed by the user via a menu option. A manually executed function can be called at any time, but there is the possibility the designer would forget to call execute it, and thus get problems when transferring the design to Mentor Graphics.

A general function to do this has not been written at present. This is due to the difficulty of discovering whether a discrete optimization or discrete yield formset is in use. The names of these formsets are user defined, so it requires custom functions to be written at present to be sure that the right parameter settings have been made. It is recommended that Agilent Technologies solution services group be consulted if you wish to create functions that can do this.

 

Privacy Statement  | Terms of Use  | Legal | Contact Us  | © Agilent 2000-2008 

Contents
Additional Resources