Design Kit Development for Layout
The purpose of this chapter is to show how to add layout artwork to a design kit. The information provided in this chapter assumes that the component that the artwork is being added to has already been defined in the design kit for use with schematic and simulation.
Demonstration Design Kit (DemoKit)
A DemoKit is shipped with Advanced Design System. The DemoKit is provided to illustrate various aspects of creating a design kit with artwork. It can be used for building schematics and layouts that simulate. It does not represent any specific IC design process and cannot be used to create actual ICs. This design kit is located at:
This design kit can be setup for use just like other ADS design kits using the ADS Main window menu DesignKit > Install Design Kits .
General Process for Adding Artwork to a Design Kit
Preparation
- Ensure that you have a working design kit that can be used to create schematics and perform simulations.
- Develop a list of all components that will have artwork associated with them. Also, list each component parameter that will affect the shape of the artwork.
- Have a list of the layers that you will use. This information is specific to a particular design process.
- Create an illustration of the artwork for each component that is roughly to scale using the default values of component parameters affecting the shape. Label the location of the pins. Ensure that you know what layer each shape will be on.
Adding the Artwork to the Design Kit
- Create an ADS project to do your work in.
- Install your design kit at either the project or user level. You must have write permissions for this kit. Ensure that you can place each component on a schematic.
- Set up the process information in this project. Use the default file names for the preferences (layout.prf), layers definition (layout.lay), and the substrate information (substrate.slm). The substrate information is optional. Copy the process information to the proper location in your design kits de/defaults directory. For more information, refer to Specifying Technology File Information.
- For each component (see Adding Layout Artwork for details):
- Choose either fixed artwork, manually written AEL macro, or AEL macro created by the Graphical Cell Compiler. If you have one or more parameters that affect the layout, you cannot use fixed artwork.
- Create the fixed artwork or AEL macro. Install it in the correct location of your design kit.
- Edit the component definition (create_item AEL function) and add the artwork to the component definition. Make sure that you restart Advanced Design System after these edits.
- Test the component you created (see Testing the Artwork).
The following sections of this chapter provide the details related to the various parts of adding artwork to a design kit.
Specifying Technology File Information
It is important to set up information that is specific to your design kit before attempting to create artwork for the design kit. In Advanced Design System, this is separated into three main areas:
- Layout Preferences - Layout preferences enable you to specify the units of distance measurements and other information.
- Layer Definitions - Layer definitions enable you to specify artwork layers, including their number, color, pattern, and their ability to connect to other layers.
- Substrate Information - Substrate information is optional. This information is used to specify the electrical properties associated with the artwork layers that you have defined. The Momentum electro-magnetic simulator uses substrate information for cases where arbitrary shaped components need to be simulated. This is different information than the substrate components used in schematics when various transmission line components such as microstrip are simulated.
Layout Preferences
This section will briefly discuss the most important layout preferences that relate to a specific design process. There are numerous other layout preferences that can be specified. For more information, refer to Preferences for Layout.
To create a layout.prf file, you can create a new project in ADS and specify the Project Technology Files to be the length unit (mil, millimeter, or micron) that is to be used with your design kit. This new project includes a file named layout.prf that contains the layout preferences that you can edit. To edit the preferences, open a layout window and then choose the Options > Preferences menu item. The Preferences for the Layout dialog box appears. Read the layout.prf file into ADS, make any needed changes and then save the preferences in layout.prf file. This file can then be copied into the de/defaults directory of your design kit. By doing this, your Design Kit will take on the preferences that you have just defined in the Project. If your design kit does not already have a de/defaults/schematic.prf file, you should copy the schematic.prf file from this project into the de/defaults directory. The main preference in the schematic.prf file to be concerned about is the length unit. Copying both will ensure that both schematic and layout use the same length unit.
Layout Units Preferences
The most important preference to define sets the units and the smallest layout x, y coordinate (database unit) that can be used.
To set the layout units preferences in your layout, select the Layout Units tab in the Preferences for Layout dialog box.
An example of what you might see is Layout Units equal to mm and Resolution equal to .001. This means that the smallest x, y coordinate that can be specified is 0.001 mm. This number should be carefully chosen because it determines the smallest and largest size of layout shapes. Length measurements in the layout database can span a dynamic range of about 100,000,000 (1e8). In the example above the largest dimension of your layout could be about .1 meter (.001 mm * 1e8 = 1e5 mm). The resolution also has to be small enough to ensure that the layout can be properly represented. This is especially true if you expect to use curved geometry such as arcs in your layout. Each point along the arc will be specified by this database unit.
| Note Once the units and resolution have been specified and layout artwork using these has been created, it is not recommended to change the units or resolution. |
Grid/Snap Preferences
An x, y snap grid is available on your layout drawing area. If Snap and Grid Snap are enabled, you will not be able to use your cursor to select an x, y point that is not on this grid. There are exceptions to this if other snap modes such as pin or vertex snap are used.
To set the grid/snap preferences in your layout, select the Grid/Snap tab in the Preferences for Layout dialog box.
The Snap Grid Distance defines the points on your snap grid. With the units example above, a Snap Grid Distance of 0.25 means that every 0.25 µm a point could be selected by the cursor. There is a relationship between the Resolution and the Snap Grid Distance . Even though both can contain decimal fractions, the Snap Grid Distance should be a multiple of the Resolution . A Resolution of 0.1 would not work well with a Snap Grid Distance of 0.25.
The Snap Grid Per Minor Display Grid and Minor Grid Per Major Display Grid determine how much of the grid that is visible. A small (minor) grid point is displayed at multiples of the Snap Grid Distance as determined by the integer multiplier Snap Grid Per Minor Display Grid . A larger (major) grid point is displayed at multiples of the minor display grid as determined by the integer multiplier Minor Grid Per Major Display Grid .
Example
Layout Unit: mm
Snap Grid Distance: .25
Snap Grid Per Minor Display Grid: 4
Minor Grid Per Major Display Grid: 10
Resolution: .01
X, Y points as small as .25 mm can be selected. A visible grid with small points at 1 mm and large points at 10 mm will be displayed. The Snap Grid Distance should be a integer multiple of the Resolution.
The values of this snap grid can be changed later without it affecting artwork that has already been drawn.
Port and Ground Symbol Size
The size of the port and ground symbol should be changed so that they are a reasonable size compared to other components in your design kit. The size refers to the height and width of the ground symbol and is expressed in layout units (i. e. 5 means 5 µm or 5 mil, etc.).
To set the size of the port and ground symbol size in your layout, select the Placement tab in the Preferences for Layout dialog box.
Component Text Size and Layers
The component name and its instance name are displayed on each component added to your layout. The size of the component text needs to be adjusted so that they are readable, but not large enough to overlap onto other components in the layout. The text size refers to the height of the letters in layout units. It can be set to any value including fractional values (i. e. 0.5, 2.5, etc.). It applies only to newly placed components. If you have a layout with components already placed on it, this will not change the component text size on these. Use the Edit > Component > Component Text Attributes menu to change existing component text size.
To set the component text size and layers in your layout, select the Component Text tab in the Preferences for Layout dialog box.
Set the Size to the height of the desired text size.
Note the Apply To Layer section. This section contains the names of the layers where the component name and instance name will be drawn.
You will need to define at least one layer in your layer definitions that is not one of the layers you will use to process your artwork. It will only be used for documenting the component and instance names.
Once you have defined the Layers for your process you should return to this dialog box and choose the layers that your Component Name and Instance Name will be drawn on.
Layer Definitions
This section briefly discusses layer definitions. For more information, refer to Defining Layers.
To start editing the layer definitions, open a layout window and then choose Options > Layers . The Layer Editor dialog box appears.
Select the Basic tab in the Layer Editor.
If you are planning to import or export artwork to/from third party tools, it is recommended that the numeric ID and the Name of the layers to be consistent with these other tools (see GDSII & IGES).
The default layer definitions are designed to work with the library components built into ADS such as microstrips; however, they are not specific to your process. If you decide to remove one or more of the standard layers in the layer definitions that you are integrating into your design kit this may impact the end user's ability to utilize the library components built into ADS such as microstrips.
In that case, end users will still be able to use these components but they will have to manually associate layers to the components by:
- Placing one or more MSUB substrate definition components on the schematic.
- Specifying the appropriate layers on the MSUB component (cond1 and cond2 parameters).
- Referencing the MSUB component in the schematic and layout microstrip components.
| Note If you modify the standard ADS layer definition it is recommended that you provide the above information in the documentation provided to end customers together with the Design Kit. |
You can remove any layers that you do not want except the default layer. The default layer has a special purpose in ADS. If artwork is viewed and there are shapes on a layer that do not exist in the layer definitions, they will be displayed with the definitions of the default layer.
The Color , Pattern , S hape Display , and Line Style control how the shapes on each layer will look. While all layers may be important to the process of fabrication of your artwork, some layers are less important for the designer to see. The layers where connections will be made are usually the most important for the designer to see. You can set the Shape Display to Outline to cause shapes to display without filled centers. This might be used for your less important layers. The more important layers could use Shape Display of Filled or Both . When using Filled or Both, you may want to change the Pattern . By using a pattern rather than a solid color on a layer it enables you to partly see through the layer and see other layers below it. For an example of this look, refer to the M1, M2, and M3 layers in the DemoKit. Draw some rectangles on each of these layers that partially overlap to see how this would look.
For information on adding custom fill patterns, refer to Adding Custom Fill Patterns to a Design Kit.
Layer Binding
Layer Binding enables you to control which layers will make a connection to other layers when pins and shapes overlap. Layer Binding is found under the Advanced tab of the Layer Editor dialog box. For ADS versions before 2004A, only pins could make connections. Starting with ADS 2004A, shapes (polygons, circles, paths, and rectangles) can also make connections between components. Also, components can have area and edge pins in addition to their point pins. Because of this, it is important to have your layer binding specified correctly.
In a design process, interconnects are made on metal layers or by holes in a via layer. To represent this in ADS, the Layer Binding should have values on metal or via layers and other layers should have empty Layer Bindings.
The layer binding field is a list of words separated by spaces. The words typically are layer names, but this is not required. When pins or shapes overlap but are on two different layers, they will connect if a word in the layer binding list of the first layer matches the same word in the layer binding list for the second layer.
A layer binding of "*" will match any word or "*" in another pin's layer binding list. Agilent Technologies recommends that you not use "*" because it can cause layers to be connected when you did not expect a connection. Connections with shapes will ignore the layer binding "*" and treat the Layer Binding as if it were empty.
Examples
| Layer Name | Layer Binding List |
|---|---|
| Metal1 | Metal1 |
| Metal2 | Metal2 |
Since neither layer has the same word in their layer binding list, they will not connect to each other.
| Layer Name | Layer Binding List |
|---|---|
| Metal1 | Metal1 |
| Metal2 | Metal1 |
Since both layers have the same word (Metal1 ) in their layer binding list, overlapping pins and shapes on these layers will connect to each other.
| Layer Name | Layer Binding List |
|---|---|
| Metal1 | Metal1 Metal3 |
| Metal2 | Metal2 |
| Metal3 | Metal3 Metal1 |
The pins and shapes on layers Metal1 and Metal3 will connect, but those on the Metal2 layer will not connect.
| Layer Name | Layer Binding List |
|---|---|
| Metal1 | Metal1 |
| Via1 | Via1 Metal1 Metal2 |
| Metal2 | Metal2 |
| Via2 | Via2 Metal2 Metal3 |
| Metal3 | Metal3 |
This is a typical way to setup metal and via layers. Pins and shapes will connect from Metal1 to Metal2 if they overlay shapes on the Via1 layer. The same situation occurs for pins and shapes on Metal2 and Metal3 layers.
| Layer Name | Layer Binding List |
|---|---|
| Metal1 | conductors |
| Metal2 | conductors |
| Metal3 | conductors |
The three layers have a common word, conductors, in their list and each will connect to the others. Using "conductors" this way enables you to refer to a group of layers that will all connect to each other.
GDSII & IGES
The GDS & IGES numbers are usually the same as the layer ID number. If the layer ID numbers used in ADS are not consistent with layer number usage in other tools, then the GDS or IGES number can be used as a layer mapping to the numbers used in the other tools.
| Note Editing and saving layer definition information from one layout design file will not automatically show these changes in other layout design files that are open even though they reference the same layer definition file. In the ADS main window you can use the menu File > Close All to close all designs. When they are reopened the currently saved layer definition information will then be used. |
Substrate Information
The Momentum simulator or the Advanced Model Composer can be used to simulate passive structures and to create new components. These capabilities might be used by the design kit developer or by the end user of the design kit. In order to use this capability, additional information about the process must be specified. For information on how to create a substrate definition for your process, refer to Substrates in Momentum.
Substrate information is not required for a design kit; however, if you want to add substrate information to your design kit, the substrate files must be placed in the <design_kit_name> /circuit/substrates directory. Name one of your files substrate.slm . When design files are created in ADS and you select a technology file that is included in a particular design kit, the corresponding substrate.slm file will automatically be associated with your design. Other substrate files can be given any name; however, you must include the .slm suffix and they will only be opened by browsing to the location of the file.
Adding Layout Artwork
Many of the topics covered in this section refer to information provided in other ADS documentation. Schematic Capture and Layout is very useful as a reference, especially Artwork.
Using Pins in Artwork
Angle
The angle of a pin is important for the correct operation of Design Synchronization. It determines the direction that another component will be drawn relative to the pin. The following chart shows the angle to specify for the pin so that the next component will flow away from the current component in the correct direction. For more information about pin angle, refer to Generating a Layout.

For consistency with ADS components, two pin components generally have pin 1 on the left-hand side and pin 2 on the right. In this case, pin 1 would have an angle of -90 degrees so that the next component will be drawn to the left of pin 1. Pin 2 would have an angle of 90 degrees as shown in Two Pin Component in ADS.

Two Pin Component in ADS
Artwork Origin
The origin (x=0, y=0) of your artwork determines the part of the component that is at the location of the cursor when you are inserting a component based on this artwork. For best usability, one of the component pins should be at the origin. Frequently this is pin 1 of the component; however, it could be another pin.
Pin Layer and Layer Binding
Pins of a component are placed on a layer. A pin represents a connection point to an artwork shape. The layer the pin is on should be the same layer as the artwork shape. For more information, refer to Layer Binding.
Edge and Area Pins
When a Port (Point Port) is placed into a layout and this layout is placed as an instance into another layout, you see a corresponding pin at a single x,y point. You can also place edge and area ports into a layout and these will become edge and area pins when the layout is placed as an instance into another layout. Edge and Area Ports must always be associated with a single Point Port. The Point Port defines where automatic connections will be made when using design synchronization.
An edge port is created by placing a polyline or arc into your layout and then designating that this shape is associated with a specific point Port. An area port is created by placing a polygon, circle, rectangle, or path into your layout and then designating that this shape is associated with a specific point Port. You may have multiple edge and area ports associated with one point Port and they may be on multiple layers. See below for specific details of creating edge and area ports for fixed artwork, AEL macros, and with the Graphical Cell Compiler.
The edge and area port feature is new with ADS2004A. If you are creating a design kit that will be used with ADS2004A and also with earlier ADS versions, you can use this feature. When using it with ADS2004A the edge and area ports will work as expected. When using it with earlier ADS versions, the edge and area ports will not be available and they will not cause incompatibility problems.
Creating Fixed Artwork
The term Fixed Artwork means that the shapes in the artwork do not change. Any parameters on the component will not cause a change in the shapes. If you need parameters to change the shapes you will need to use a parameterized AEL macro for creating your artwork.
Creating Your Own Layout
To create fixed artwork:
- Start in an old or new project that contains the correct preferences file (layout.prf) and layer definition file (layout.lay).
- Open a layout window.
- Plan to draw the shapes of your component so that the origin will be at a logical location (see Artwork Origin).
- Select the correct layer for each shape. Draw the shape.
- Select the correct layer for each port. Using the Insert Port button on the toolbar, add a port at the correct location and angle for each pin that will be in the final component. Ensure the Port num is correct for the pin number of the final component. You may also want to edit the Instance Name to be more descriptive such as Plus or Minus .

- Save the layout with a name similar, but not the same as, the component name this artwork will be associated with in the design kit.
- You can test how this component would look by opening another layout window. Use the Insert > Component > Component Library menu and look for your component under Sub-networks . Select the component and insert it. Notice the component location relative to the cursor while you are inserting it.

Notice that the component now has pins instead of ports. Also, it can only be selected as a whole.
Using Edge Ports
- Ensure that you have already placed the Port that the edge port will be associated with.
- Add a polyline or arc where the edge port will be located. This will typically be along the edge of some other polygon, rectangle, circle or path.
- Choose the Edit > Edge/Area Port menu item. Select the polyline or arc and the port number it will be associated with. Click OK .

This fixed artwork has a edge port associated with Port number 1 and an area port associated with Port number 2.

This is an instance of the fixed artwork that has been placed into a second layout.
Using Area Ports
- Ensure that you have already placed the Port that the area port will be associated with.
- Add a polygon, rectangle, circle, or path where the area port will be located. If your artwork already has a polygon, rectangle, circle, or path where you want the area port, you do not need to add another.
- Choose the Edit > Edge/Area Port menu item. Select the polygon, rectangle, circle or path and the port number it will be associated with. Click OK .
Creating Fixed Artwork from GDS-II Files
To create fixed artwork from a GDS-II file:
- Start in a old or new project that contains the correct preferences file (layout.prf) and layer definition file (layout.lay). Open a layout window.
- GDS-II transfers shapes based on the layer ID number. The layer ID numbers used when the GDS-II file was created may be the same as your current ADS layer ID number (layout.lay file) or they may be different. If the layer ID numbers are different you may create a map to resolve these differences. Open the Layer Editor dialog box by choosing the Options > Layers menu. Select the Advanced tab on the dialog box. The GDS-II column enables you to map GDS-II file layer ID numbers to the ADS layer ID number. Change the GDS II column entries to match those in the GDS-II file. Save the changes into a new layer definition file such as gds.lay.
- Choose the File > Import menu to open the Import dialog box. Under File Type , select GDSII Stream Format and click the Browse button to select a GDS-II file. Also, change your Layers File Name to either layout.lay or gds.lay. Click OK to perform the GDS-II file import.
- In your project, you will find a file called readgds.log . Check it for errors during the import. It may have a phrase like " Adding layer layer15 15" in it. If you find a phrase like this, there has been data created on layers that were not defined in your layer definitions. Examine your layout designs looking for shapes on these layers. You should either delete the extra shapes if they are not needed or add complete layer definitions for these new layers.
- Your GDS-II file may have contained one or many layout designs. For each design that you will use as fixed artwork in your design kit:
- You will need to add ports to the design. Select the correct layer for each port. Using the Port button on the toolbar, add a port at the correct location and angle for each pin that will be in the final component. Ensure the Port num is correct for the pin number of the final component. You can also edit the Instance Name to be more descriptive such as Plus or Minus .
- Choose File > Save As to save a copy of the design with a new name. The layout name should be similar, but not the same as, the component name this artwork will be associated with in the design kit.
- You can test how this component would look by opening another layout window. Choose the Insert > Component > Component Library menu and look for your component under Sub-networks . Select the component and insert it.
Notice the component location relative to the cursor while you are inserting it.
Adding Your Fixed Artwork to the Design Kit
To add your fixed artwork to a design kit:
- Copy the layout design file into the design kit circuit/artwork directory. If your design kit is intended to work with a previous version of ADS (older than ADS2003A), then the layout design file should be placed in the circuit/symbols directory.
- Edit the AEL file in the <design_kit_name> /circuit/ael directory that contains the create_item definition for this component. For more information, refer to Modifying the Item Definition File. See also the create item() function.
The artworkType parameter should be set to fixed_artwork . This ael variable has the value of 1. The artworkData parameter should be set to the name of the layout design file. Make sure you include the .dsn suffix in the layout design file name. - If your design kit uses demand loaded components, you will need to recreate the item definition file. For more information, refer to Adding Demand Loaded Components.
- After adding artwork to one or more components, proceed to Testing the Artwork.
Creating the Parameterized AEL Macro Artwork Manually
Creating the AEL Macro Function Files
The following section makes frequent references to various AEL functions. The details for each of these functions can be found in AEL. Refer to the DemoKit to see examples of AEL macros. The AEL macros are located at:
$HPEESOF_DIR/examples/design_kit/DemoKit/circuit/artwork/artwork.ael
Simulator and User Units
When you look at the length parameters of a component on either the schematic or layout, you will see them expressed in fundamental units of meters or feet such as 100 µm or 100e-6. This is referred to as simulator units.
Your layout preferences have a layout length unit specification such a µm (micrometers) that is used during the creation of artwork. If you draw a line 100 units long with a layout length unit of µm, the 100 represents 100 micrometers. This is referred to as user units.
Some AEL functions use simulator units while others use user units . AEL functions beginning with de_draw use simulator units while functions beginning with de_add or de_define use user units. Length parameters that are passed into your AEL macro are always in simulator units. You can get the conversion factor from simulator units to layout user units by using the db_factor() function.
Example
decl conversionf;
conversionf = db_factor(); /* returns 1e6 if layout units are um *
Layer Definitions in the Macro
The layers used in an artwork macro need to be consistent with the layers defined in the layer definition file. In the artwork macro the numeric ID number specifies the layer to be used. When writing the artwork macro, it is possible to use the ID number directly. It would be better to declare AEL variables for each layer and then refer to these each time the ID needs to be used. This makes the file easier to understand and easier to change if the layer definition changes. These declarations would be declared ahead of the AEL functions and therefore they would be global to the AEL namespace. Because of this, the name of the variables must be unique. One way to do this is to prefix the name of the design kit to the variable.
Example
/* Layer Definitions */
decl DemoKit_IMPLANT=1;
decl DemoKit_GATE=2;
decl DemoKit_GaV=3;
decl DemoKit_M1=4;
decl DemoKit_V1=5;
defun DemoKit_diodeLayout(model, w)
{
de_set_layer(DemoKit_M1);
See also:
$HPEESOF_DIR/examples/design_kit/DemoKit/circuit/artwork/artwork.ael
Artwork Macro Function Names
The names of the artwork macro functions are global and unique names need to be chosen. Prefixing the name of the design kit to the function name is a good way to do this. The name must also be different than the name of the component that it will be associated with.
Simple Artwork Macro Function
/* Layer Definitions */
decl DemoKit_M1=4;
decl DemoKit_M2=6;
defun DemoKit_simple_layout(r, length, Rsh, m)
{
de_set_global_db_factor( );
de_set_layer( DemoKit_M1 );
/* Create the artwork shape */
de_draw_rect( 0, -length/2, length, length/2 );
/* Create pin 1 with port Name of PLUS with pin angle of -90 */
de_draw_port( 0, 0, -90, NULL, 1, "PLUS" );
/* Create pin 2 with port Name of MINUS with pin angle of 90 */
de_draw_port( length, 0, 90, NULL, 2, "MINUS" );
}
This AEL macro begins with the global variables that define the layers. On the line defining the function, notice that the parameter list contains parameters that are not necessarily used for the artwork. This parameter list must correspond to the parameter list in your create_item component definition. The names do not have to be the same, but the same number of parameters and same parameter positions are necessary.
The de_set_global_db_factor() function should be near the beginning of each macro you write. It ensures that the various shapes drawn by the de_draw_xxx functions are drawn in the right size by enforcing consistence between the simulator and layout units.
The de_set_layer() function should be called before creating pins or shapes on a specific layer.
Creating Shapes
If you are using simulator units, the following ael functions are used to create shapes:
de_draw_arc1
de_draw_arc2
de_draw_arc3
de_draw_arc4
de_draw_circ
de_draw_rect
de_draw_text
de_add_polygon with de_draw_arc, de_draw_point and de_end
de_add_polyline with de_draw_arc, de_draw_point and de_end
If you are using user units, the following ael functions are used to create shapes:
de_add_arc1
de_add_arc2
de_add_arc3
de_add_arc4
de_add_circ
de_add_path with de_set_path_corner, de_set_path_width,
de_set_miter_corner, and de_set_miter_cutoff
de_add_rect
de_add_text
de_add_polygon with de_add_arc, de_add_point and de_end
de_add_polyline with de_add_arc, de_add_point and de_end
Refer to AEL for the details of each function.
Creating Pins
Pins can be created using the following AEL functions:
de_draw_port (using simulator units)
de_define_port (using user units)
de_define_edge_area_port
Refer to AEL for the details of each function.
Adding Your AEL Artwork to the Design Kit
You may place all of your AEL artwork macro functions into one file or put them into multiple files.
- Copy the AEL macro files into the <design_kit>/circuit/artwork directory. The files may be *.ael, *.atf, or both.
- AEL lines must be added to the <design_kit>/de/ael/boot.ael file so the artwork macro files will be loaded. The following example does not specify the ael or atf suffix on the file name. ADS will try to load the atf file if it is there. If no atf file is there, ADS will try to load the ael file.
*Example boot.ael File* /* Set a variable to store the top directory of design kit */ decl DemoKit_1_Root = designKitRecord[1]; /* Set a variable to store the path to the artwork.ael file*/ decl DemoKit_artwork = sprintf("%s\circuit\artwork\artwork",DemoKit_1_Root); load(DemoKit_artwork,"CmdOp");
See also $HPEESOF_DIR/examples/design_kit/DemoKit/de/ael/boot.ael file
- Edit the circuit/ael/xxx.ael file that contains the create_item definition for this component. For more information, refer to Modifying the Item Definition File. See also create item().
The artworkType parameter should be set to macro_artwork . This AEL variable has the value of 2. The artworkData parameter should be set to the name of the AEL macro function. - If your design kit uses demand loaded components you will need to recreate the item definition file. For more information, refer to Adding Demand Loaded Components.
- After adding artwork to one or more components proceed to Testing the Artwork.
Troubleshooting Execution Errors in AEL Macros
If your artwork does not look like you planned or if you receive an error message during the insertion of an AEL macro, you may need to see the values of various AEL variables to understand why. Writing the information to a log file enables you to view the values of these variables.
Writing to a Log File
The information described below will enable you to see what parts of a function are executing and to print out variables.
The first three lines should go near the beginning of the AEL macro function that needs to be checked. Each time the component is inserted or edited, the AEL macro function will be called. These lines will open and append BEGIN to a file called macro.log in your current project.
decl fid; fid = fopen("macro.log","A"); fputs(fid,"\n\nBegin\n"); fflush(fid);
The next line is an example of a line that can be placed anywhere in the function. The line should be customized by replacing rotation with the variable that you want to view. Put as many of these lines as necessary in your function.
fprintf(fid,"rotation =%s\n",identify_value(rotation));
fflush(fid);
Put the following two lines at the end of your function or just ahead of any return statement. They write END in the file and close it.
fputs(fid,"End\n"); fflush(fid);
fclose(fid);
Reloading an AEL Macro File without Restarting ADS
If you edit your artwork file and wish to reload it and test it without restarting ADS:
- Choose Tools > Command Line in the ADS Main window. The Command Line dialog box appears.
- In the Command >> field, enter the command:
load("artwork.ael", "CmdOp"); - Click Apply . This will reload the AEL file if it is in your current project. You can also add a path to the artwork.ael file and load it from anywhere.
Creating AEL Artwork with the Graphical Cell Compiler
The information in this section provides a summary of steps needed to create an AEL macro using the Graphical Cell Compiler. An emphasis is placed on the steps required to integrate a GCC AEL macro into a design kit. If you are not familiar with the Graphical Cell Compiler, see Getting Started with the Graphical Cell Compiler.
Creating the GCC Based AEL Macro
- Start in a old or new project that contains the correct preferences file (layout.prf) and layer definition file (layout.lay).
- Open a layout window.
- Create the initial drawing for the component. GCC operates on existing shapes by stretching, rotating, moving, deleting, etc. You must choose the initial shapes wisely. Here are some suggestions for doing this.
- If you are making a component that will be built by a lot of copying and rotating, such as a spiral inductor, you should pay close attention to the tutorial that is available in the GCC manual.
- For each parameter that will affect the layout you need to choose the parameter value. Many components have a minimum for these parameters. One good choice for these parameters is the minimum. By using the minimum, you can ensure that the component shapes are consistent when the parameters are set to the minimum values. A second choice would be to draw the shapes using the default values for parameters.
- Some components have part of their structure repeated several times based on a parameter value such as the number of gate fingers of a FET. On these components, draw only one copy of the shapes that will be repeated. The GCC repeat control will create the others. You might have shapes that will optionally appear if the repeat parameter is more than one. An example is a gate interconnect that is used only if multiple gate fingers are drawn. Draw these shapes as they would appear for a repeat of two. The GCC controls can delete these for the case of a repeat of one. For repeats greater than two, the stretch control can enlarge them or the repeat control can create extra copies of them.
- The origin for the drawing does not have to be at the final location. It is fairly easy to use the GCC move control to change the origin.
- Ensure that you add ports on the drawing where pins are needed. Place them on the same layer as the shape for which they represent a connection.
- (Optional) Define edge and area ports. This is done as described under the Creating Fixed Artwork.
- Add the layout parameters to the design by choosing the File > Design Parameters menu to open the Design Parameters dialog box. Select the Parameters tab. Enter each parameter that will affect the layout. You do not need to add other parameters here. Make sure the default value is correctly entered and has the correct units or value (i.e. 20 µm or 20e-6, not just 20).
- Save your layout using the File > Save Design As menu. You can use the same name for the layout design as will be used for the component in the design kit.
- Start adding GCC controls one at a time and test them.
- Add a construction line and a control as described in Graphical Cell Compiler.
- Compile the GCC macro using the Tools > Macro > Compile menu.

Note
Prior to ADS 2003A this menu pick was called Macro > Compile .For the Model Name you can use the same name as will be used for the component in the design kit.
- In a second layout window use the Insert > Component > Component Library menu. In the Component Library dialog box, select your project under the Sub-networks category. You should now be able to see your component name on the right. Select it and place the component in the second layout window.
- Test the GCC control by changing the parameter value that would affect this control.
- Go back and add the next control.
- After adding all controls and testing the component you can copy the AEL macro into the design kit. It is located in your current project under the networks directory. It will be called <model name> art.ael. Copy the AEL macro file into the _<design kit> /circuit/artwork directory.
- The parameter list in your AEL macro only contains parameters that affect the layout. The AEL macro file must be edited to ensure all parameters that are defined in your component definition are in the AEL macro parameter list. The component definition is located in one of the files in the <design kit> /circuit/ael directory. It is the create_item() function for the component you are working on.
Open your AEL macro in the design kit. Search for pam_ <model name> . You should find a AEL function definition and it will probably be the last function defined at the end of the file.
Example
defun pam_DemoKit_fet(N, Width)
Add any parameter names that are not already there. Change the order of the parameters in the GCC AEL macro to match the order listed in the create_item component definition.
After:
defun pam_DemoKit_fet(model, Width, N) - AEL lines must be added to the <design_kit> /de/ael/boot.ael file that cause the artwork macro files to be loaded.
Exampledecl DemoKit_1_Root = designKitRecord[1]; /* Top Directory of Design Kit */ decl DemoKit_artwork = sprintf("%s\circuit\artwork\DemoKit_fet_art",DemoKit_1_Root); load(DemoKit_artwork,"CmdOp"); See also $HPEESOF_DIR/examples/design_kit/DemoKit/de/ael/boot.ael
- Edit the circuit/ael/xxx.ael file that contains the create_item definition for this component. For more information, refer to Modifying the Item Definition File. See also create item().
The artworkType parameter should be set to macro_artwork . This AEL variable has the value of 2. The artworkData parameter should be set to the name of the AEL macro function. - If your design kit uses demand loaded components you will need to recreate the item definition file. For more information, refer to Adding Demand Loaded Components.
- After adding artwork to one or more components, proceed to the Testing the Artwork.
FET Example Implemented using GCC
This example uses the Graphical Cell Compiler (GCC). The FET in FET Example using Graphical Cell Compiler has two layout parameters, Width (Gate Width) and N (Number of Gates). The number of gates can have values of 2, 4, 6, or 8. The minimum gate width is 20 µm.
The left component in FET Example using Graphical Cell Compiler is drawn with N = 2 and Width = 20 µm. The left pin is the gate connection. The right pin is the drain connection. The top and bottom pins are source connections. The origin for the component will be the gate pin. There is an air bridge over the gates and air bridge metal that connects the lower source and upper source.

FET Example using Graphical Cell Compiler
The middle component in FET Example using Graphical Cell Compiler is drawn with N = 4 and Width = 20 µm. The original 2 gates are 6 µm lower and a second pair of gates has been replicated 12 µm above the original 2 gates. Notice the left and right shapes grow to connect the 4 gates and 2 sources. The air bridge metal grows to cover all source metal.
The right component in FET Example using Graphical Cell Compiler is drawn with N = 6 and Width = 30 µm. The gates are now 30 µm wide, but notice that the air bridge over the gates is centered but does not grow in width.
GCC Steps for FET example
Graphical Cell Compiler includes detailed information about the usage of GCC controls. A tutorial example is also provided. You should be familiar with this information before proceeding into the following example.
A project showing the completed GCC design is located at:
$HPEESOF_DIR/examples/DesignKit/GCC_FET_prj
Initial Drawing shows the initial drawing of the component. It is drawn with N = 2 and Width = 20 µm. The origin is located at the gate pin.

Initial Drawing
- This stretch control stretches and moves selected shapes that are on the right of the vertical construction line. The expression for Length of this control is "Width - 20e-6". The "-20e-6" is here because the initial drawing has a gate width of 20 µm. If Width = 30, the amount of stretch needed is only 10 µm.
Control: Stretch Direction: Positive Length: Width-20e-6 Step 1
- This stretch control moves the air bridge structures to the right 1/2 the distance of the change in gate width.
Control: Stretch Direction: Positive Length: (Width-20e-6)/2.0 Step 2
- This stretch control moves most of the component to the right. This allows the left shape (at the gate pin) to increase in size as N (Number of gate fingers) changes. The stretching of the left shape takes place in Step 7 & 8. Notice that for N = 2 this control does nothing.
Control: Stretch Direction: Positive Length: ((N/2)-1)*(12e-6) Step 3

Note
All shapes except the left shape are selected. Selection is shown by complementing the border of the selected shape. When two shapes have edges that are at the same location, then two complements are done which returns the selection color to the original color. Because of this, overlapping shapes may appear to not be selected. - This stretch control moves the gate structure down for N = 4, 6, or 8. For N = 2 nothing happens.
Control: Stretch Direction: Negative Length: ((N/2)-1)*(12e-6) Step 4

Note
Some shapes immediately to the left of the gates are selected even though they do not appear to be. - This repeat control copies the gate structure upward for N = 4, 6, or 8. For N = 2 nothing happens.
Control: Repeat Direction: Perpendicular Number: N/2 Distance: 24e-6 Step 5

Note
Some shapes immediately to the left of the gates are selected even though they do not appear to be. - This stretch control operates on the shapes that are stretched when N = 4, 6, or 8. The stretch works in both directions.
Control: Stretch Direction: Both Length: ((N/2)-1)*(12e-6)*2 Step 6
- This stretch control moves a single vertex of the left shape at a 45-degree angle. This step and step 8 enlarges the shape related to the gate connection.
Control: Stretch Direction: Positive Length: ((N/2)-1)*(12e-6)*sqrt(2) Step 7

Note
The other shapes have already been moved to allow room for this stretch. This was step 3. - This stretch control moves a single vertex of the left shape at a 45-degree angle. This step and step 7 enlarges the shape related to the gate connection.
Control: Stretch Direction: Negative Length: ((N/2)-1)*(12e-6)*sqrt(2) Step 8
- Step 9, 10, and 11 are similar to step 3, 7, and 8. This step moves the drain connection to the right.
Control: Stretch Direction: Positive Length: ((N/2)-1)*(12e-6) Step 9
- This stretch control moves a single vertex of the right shape at a 45-degree angle. This step and step 11 enlarges the shape related to the drain connection.
Control: Stretch Direction: Positive Length: ((N/2)-1)*(12e-6)*sqrt(2) Step 10
- This stretch control moves a single vertex of the right shape at a 45-degree angle. This step and step 10 enlarges the shape related to the drain connection.
Control: Stretch Direction: Negative Length: ((N/2)-1)*(12e-6)*sqrt(2) Step 11
Testing the Artwork
This section applies to fixed artwork and AEL macros created manually or by the Graphical Cell Compiler unless otherwise specified.
Interactive Testing
Start ADS
If you see an error while starting ADS, you either have a syntax error in an AEL file or a missing file that you are trying to load. The error message should provide enough information to find the problem.
Probable files:
<design_kit_name> /circuit/ael/<component definition file>.ael
<design_kit_name> /de/ael/boot.ael
<design_kit_name> /de/ael/palette.ael
<design_kit_name> /circuit/artwork/<AEL macro file>.ael
Insertion Test
- Open a layout window in a project that contains the correct technology files.
- Select the palette for your design kit.
If your component does not show up in the palette it may not have been specified in the palette group for the layout windows in the <design_kit_name> /de/ael/palette.ael file. - Select a component from the palette and insert it onto the layout window.
If you get a message indicating that the component definition could not be located, there is probably a syntax error in the AEL function that specifies the create_item function for the component.
If a rectangular box with an X through it appears, your AEL macro did not get loaded. Check your <design_kit_name> /de/ael/boot.ael file.
You might get an error in your <design_kit_name> /circuit/artwork/ <AEL macro file> .ael. The error message should give the name of the AEL macro file, the line number of the error, and a reason for the error (i.e. divide by zero, etc.).
Viewing Detailed Instance Information
After inserting the component, select the component and choose Tools > Identify . This will display the Identify dialog box with detailed instance information about the component. Notice which mask layers are used by the component. Then check the angle and layer for each pin. Are they consistent with what you expected?
Measuring Distances
You can use the Insert > Measure menu to check the size of various shapes in your component.
Visibility of Layers
If your component has shapes on multiple layers, it may be useful to view only one or two layers at a time. The Options > Layers menu displays the Layer Editor dialog box that enables you to turn off or on the visibility of any layer or layers.
Testing Parameters (AEL Macros Only)
Select the component and use the Edit > Component > Edit Component Parameters menu to change parameter values that affect the shapes. Do all parts of the component change as expected? You may need to change layer visibility and use the Insert > Measure menu to verify this.
Testing with Design Synchronization
Create a new schematic window and place a component to be tested in it.
Connect an MLIN component to each pin of the component. Edit the length and width parameters of the MLIN components so that they are similar in size to the size of the layout for your test component. You might want to make the width of each MLIN component different.
Use the Options > Preferences menu and the Pin/Tee tab to set the Pin Numbers visibility on for the schematic view as shown in Schematic View.

Schematic View
Use the Layout > Generate/Update Layout menu. After the dialog box is opened, select one of the components to be the starting point for a generated layout and then click OK in the dialog box. You should see a layout window with components in it.
In the layout window use the Options > Preferences menu and the Pin/Tee tab to set the Pin Numbers visibility on for the layout view. It should look similar to Layout Window.

Layout Window
For each component pin, compare the MLIN on the schematic to the MLIN in the layout. Is each MLIN in the layout connected to the correct location on the component? Does the MLIN have the correct angle relative to your component? This should verify the pin numbers and angles for the layout of your component are correct.
Adding DRC Rules
Custom rules can be written for the ADS Design Rule Checker (DRC) and put into a design kit. The details of writing the rules are included in Design Rule Checker. This section discusses the detail of integrating the rules into a design kit. A sample of DRC rules are provided in the directory:
$HPEESOF_DIR>/examples/DesignKit/DemoKit/drc/rules
The 'rules' Directory
DRC rules can be placed in any directory and be used; however, a specific directory is defined for ADS DRC rules in a design kit. This directory is called:
<design_kit_name> /drc/rules
The rules Files
The DRC rules are written in AEL files(.ael). As you compile your rules files, a compiled AEL(.atf) version of these files is automatically created. Both the AEL and ATF files must be placed into the <design_kit_name> /drc/rules directory. You can name them anything that you want and have any number of different AEL/ATF sets of files.
The 'setrule' Registry File
A special AEL file called setrule.ael should also be placed in the <design_kit_name> /drc/rules directory. The format for this file is included in Design Rule Checker. It enables the designer to choose which DRC rules file to use by selecting a one line description of the rules instead of just browsing to the correct rules file when using the ADS Design Rule Checker. Both the setrule.ael and setrule.atf files should be placed into the <design_kit_name> /drc/rules directory.
Configuring Design Kit Components for use with ADS Netlist Exporter
The ADS Netlist Exporter tool can generate a netlist of an ADS schematic. The netlist can then be used by third party Layout versus Schematic (LVS) tools to compare the ADS schematic to the extracted components from an ADS or third party layout editing tool. To take advantage of this capability for designs built using a design kit, all appropriate design kit components in a design kit need to be configured, as described in Netlist Exporter Setup.
The ADS Netlist Exporter tool is already configured to look in the directory <design_kit_name> /netlist_exp for all files related to netlist export for each design kit that has been installed and enabled in Advanced Design System.
Configuration for the netlist exporter requires that one component definition be created for each device in the design kit. The component definition files should be placed into the directory <design_kit_name> /netlist_exp/components/ <tool> . Each LVS tool requires its own individual component definition.
In addition to the component definitions, you may also place custom AEL code for a specific tool into the file:
<design_kit_name> /netlist_exp/ael/ <tool> /cnexNetlistFunctions.ael
This file will be loaded each time a netlist file is generated through the netlist exporter for a specific tool.
Files can also be set up to be automatically included by placing them into the directory <design_kit_name> /netlist_exp/include/ <tool> . If you have subcircuit definitions that must be included for a specific tool (e.g. a subcircuit definition for a box component in Dracula), those definitions should be placed into a file in the include directory.
It is also possible, but not recommended, to place tool configuration files into the directory <design_kit_name> /netlist_exp/config. If it is expected that certain global settings will need to be changed for a particular tool, the tool configuration file can be copied into the design kit directory so that the new global settings will be used.
Privacy
Statement
|
Terms of Use
|
Legal |
Contact Us
|
© Agilent 2000-2008 ![]()










