Hierarchy in GDT: Help Document


Introduction

Cell hierarchy is the organization of instances of cells within cells.

Cells in the L language can contain references to other cells that can contain references to other cells, and so on. Instances of cells that contain instances of other cells is how hierarchy is built in the L language. When cells contain too many elements, all of the GDT programs slow down while working on them. It is important to develop a design style in your layout and schematics that structures your design using hierarchy. To build hierarchy, cluster elements in cells and then place instances of them together, rather than making one large cell.

The topmost cell, the root cell, is a parent cell and contains its children cells (subcells). These ``child" cells of the root cell may very well contain their own ``child" cells (subcells). As one proceeds down the line of descendents (descends down the hierarchy), one will eventually reach the leaf cell levels, the child cells with no child cells of their own.

When a layout with multiple level hierarchy is loaded into GDT, the topmost cell may be displayed only as an outline. The subcells or ``child" cells are displayed in unexpanded form, i.e., no details of the subcell are displayed; all you see is the cell's bounding box.

Controlling the plot depth

Plot depth refers to the detail inside instances shown in EDIT WIndows at a certain depth in the hierarchy. When an instance is deeper in the hierarchy than the current plot depth, Led draws the instance as a hollow box and does not show the details inside.

To set the plot depth and text depth for each Led Edit WIndow, use the plot Control Form. The plot control form contains text fields to enter the plot and text depths, and toggle switches to set the environment plot, hollow draw mode, and keep net highlighted mode. To display the plot control Form, select the plot control command from the Attributes Menu.

Plot depth Text depth

The plot depth and text depth settings are often used in conjunction with the Replot Partial Window from the Display Menu. You can set the depth to low numbers to quickly redraw the entire Edit Window using the Replot Cell command. After you change the plot and text to higher depths, you can redraw the details for only that section of the window you are interested in viewing using the Replot Partial Window command.

Adding and propagating Terminals

Terminals are electrical entities that are used to connect wires from one level of hierarchy to another in the L language. Terminals do not affect the physical mask of a layout but are essential for maintaining circuit connectivity between the cells. When you add a terminal to a cell, the terminal appears as an instance terminal when the cell is called as an instance in another cell. Instance terminals are the connection points of instances.

How Terminals are Drawn

Terminals in a layout cell, and instance terminals in both layout and schematic cells are drawn as small, colored squares. The color reflects the level of the terminal. The size of the squares does not change as you zoom the view in Led, which ensures that you are always able to see terminals when you are zoomed back on very large cells. You can set the size of the square using the Size:Terminals entry from the Plot Attributes Form accessed from the Attributes Menu.

When you are working inside small cells, you can set size larger, so you can see the color inside the terminal more clearly. When you are working on large, dense cells, you can set size smaller so the terminals do not clutter the display.

Turning off the display of Instance Terminals

If you want to know which terminals and instance terminals are in the cell you are editing or if you do not want to see instance terminals plotted, then toggle the Instance Terminals Plotting entry from the Plot attributes Form to off. When instance terminals are turned of, Led does not draw them when replotting an Edit window. Terminals in a cell are always drawn, so you can use this command to tell terminals from instance terminals. When instance terminals are off, the find mode will not find them.

The following commands are used to add and propagate terminals.

Add terminal [x]

Adds a terminal to the currently selected object. Led displays the Terminals List of the technology-dependent terminals and prompts you to choose one. When you select a terminal type, Led adds the terminal at the location of the currently selected object.

If the currently selected object is on the same level as the terminal, then Led automatically adds a wire between the two. The name of the terminal that is added is based on the value of the terminal index, which is set from the Terminals Names Form on the Attributes Menu. The name of the terminal that is added is a concatenation of the terminal prefix and terminal index values. If the terminal prefix value is empty, then the prefix is used based on the terminal type, for example, in, out, clk, etc. The values in the terminal Names Form are only used when adding terminals, not when duplicating or propagating them.

If the currently selected object is a contact, wire, or another terminal and a wire can be legally added between the terminal and the current object, then Led automatically adds the wire.

PROPAGATE terminals [X]

Operates on instance terminals. You can use the Propagate Terminals command when an instance terminal or block that contains instance terminals is the currently selected object.

When the currently selected object is an instance terminal, Led adds a terminal in the cell you are editing with the same type, level, and location as the currently selected instance terminal. If there is already a terminal of the correct type and level on top of the instance terminal, but two are not connected by a wire, then Led adds a wire. If the name is assigned to the instance terminal in its cell is not already used in the cell you are editing, then Led gives the new terminal the same name. If the new terminal name is already used in the cell you are editing, then Led assigns a name to the terminal based on the type of the terminal added. The added terminal becomes the currently selected object.

If the currently selected object is a block that contains instance terminals, then Led adds terminals on top of all instance terminals, just as when a single instance terminal is selected. The last terminals added becomes the currently selected object.