As such, via chain 100 allows a process to be tested and examined for via alignment with metal layers, for example. This testing may proceed by applying a voltage across connector 105 and connector 150 and measuring a current flow through via chain 100. Variations in current from what is expected may be indicative of alignment problems of the via layer with either the top or lower metal layers. Metal layers may be varied in width and in length to accomplish other testing goals. For example, metal run 110 may be made twice as long as metal run 120.
It should be recognized that via chain 100 need not be limited to metal. For example, via chain 100 can be a poly active chain with contacts.
As can be seen in via chain 100 test structures may be repetitive, and may be comprised of repetitive building blocks. Such test structures may lend themselves to a hierarchical design process, as will be further described herein. Additionally, even in a relatively simple test structure, such as via chain 100, there are many variations on the basic test structure that may be useful for different purposes. It would be useful to have a methodology for creating those variations using an automated and user friendly process, rather than by creating those variations manually or with minimal computer assistance.
A Layout ComPiler (LCP) according to exemplary aspects herein provides such a methodology. The LCP may be used to graphically specify parameterized test structure layout, and to generate computer executable code (a generator module) from that graphical specification that, with input from a database of information can produce various layouts of the graphically designed test structure. The steps of the LCP design flow include setup, graphical design, converting that design to ASCII specification, converting the ASCII specification to node graphs, converting those node graphs to coordinate lists, and then converting those coordinate lists to source code that with input from a database can be used to generate a plurality of layouts.
In the present example, before a particular graphical design entry is started, some initialization and setup of the process and environment may be done. In the present example, one or more layers may be created. These layers can be used to capture and display measure and guide lines that parameterize objects and interrelationships between objects in a cell of a test structure and between cells of a test structure. These layers may be automatically created in the LCP system. In the present example, when these layers are initially created, they are not necessarily associated with a particular technology or process. Instead, they are generic and act as placeholders until a technology or process is later specified, such as during execution of the source that is eventually generated based on these initial layers.
Turning to
The graphical layout designer 205 communicates with compiler 210, which generates source code from graphical specifications entered into designer 205. That source code generated by compiler 210 is then interfaced with a database 215 that provides values for the parameters specified in the code, which in turn came from the parameters that were graphically specified in layout designer 205 (e.g., height 206 and width 207). Database 215, for example includes a table of width and height values for the height parameter 206 and width parameter 207 of rectangle 208. The result is illustrated in layout view 220, where given the three sets of parameters for height and width from database 215, three different rectangles are thereby created for layout.
The system 300 includes a GUI 305 for graphically entering and parameterizing objects of cells for test structures. The GUI 305 communicates with database 310, in this example, using the SKILL code API. The LCP GUI 305 feeds both an LCP view 320 and a layout view 335. Each of the LCP view 320 and the layout view 335 can also communicate with database 310 for pulling information relating to cells and other information used or displayed in those respective views. From each of these views, data can be compared at built in self test 330 to ensure that the respective views are the same. The LCP view 320 provides information for generating an ASCII specification 325 of cell objects displayed in the LCP view 320. That ASCII specification 325 is input to the LCP core 340 (described in more detail with respect to
The LCP examples of
Once the origin, height and width of rectangle 208 are parameterized graphically, that parameterization may be used to generate an ASCII description 420 of that rectangle. As illustrated, the ASCII description includes the basic rectangle form and the nodes (x0 y0) (x2 y2) that define the rectangle by defining opposite corners of the rectangle. The ASCII description also includes layer 421 information that is derived from the graphical editing process, since the graphical editing process provides for editing of graphical shapes on a layer by layer basis. So, where the rectangle was added in a via layer, for example, then layer 421 would specify that via layer. Additionally, the measure lines 410 and 415 are described as to the names that were assigned to them (i.e., w and h) and where they begin and end. After ASCII description 420 is created, then graphs for each dimension that specify the relationship between the nodes in each dimension may then be created. For example, X graph 430 illustrates that x0 407 is related to x2 by w and Y graph 435 illustrates that y0 406 is related to y2 by h.
Thus, because there is a known relationship between nodes of each graph, coordinates of the nodes of each graph can then be extracted, and these coordinates describe the nodes by the measures that were setup in the graphical specification. Here for example, the origin 405 of rectangle 208 was defined, and then the width 207 (
From the coordinates, source code can be generated that can be interpreted as calling for creation of a rectangle at layer 421, with coordinates as defined by the equations extracted from the graphs. As illustrated, such code may include a createrectangle command 450 that includes the parameterization of the rectangle to be created. This process will be described in more detail herein. Prior to such further description, various other primitives and other functions and features available for graphically editing layers of a layout that can be used to graphically create, parameterize, and interrelate shapes are introduced in
As can be gleaned from the present and previous examples, the graphical editor provides a variety of means for drawing any of a variety of geometric objects and then parameterizing various dimensions of those objects, which allows a designer to design a layout that is conceptually easier to understand. For example, paths, such as path 530 are typically desired to be center aligned with other structures, and by contrast, rectangles may be arbitrarily placed for creating test structures. Additionally, although
Such objects are exemplary of those that may be graphically specified in the graphical editor described herein, and a variety of other shapes and design parameter methodologies may be comprehended from these examples. Now, description will be provided as to how various geometrical shapes that were parameterized may be combined, and repeated, such that interrelationships between and among those geometrical shapes is completely specified in multiple layers of hierarchy.
Object 600 can then be instantiated multiple times as illustrated in
However, measure line 910 was added which parameterizes a right side of rectangle 905 with respect to coordinate system 902. Thus, the X dimension is now over specified because there are two separate parameters indicating where a right side of rectangle 905 should be drawn. One such parameter must be deleted. By contrast, a bottom part of rectangle 905 was parameterized with respect to coordinate system 902 by measure line 925. However, there is no measure line indicating where the top of the rectangle 905 should be placed, either relatively to the bottom of rectangle 905 or to coordinate system 902. Another parameter must be added to completely specify the height aspect of rectangle 905.
Other functionality useful for graphically entering and parameterizing objects in test structure cells include functionality for counting objects, such as vias, devices, gate perimeters, source/drain areas or ratios of gate emitter areas and the like. Such functionality can also be more generalized into user defined functions that can be used to implement more complicated design features such as shielding for paths and the like.
Once the test structure is completed, a functionality called check and save functionality may be used to verify that the graphical layout does not have under or over specification of objects. The check and save functionality may proceed hierarchically from a lower level of hierarchy and move upward through the levels.
Ultimately, a user completes a layout of objects to form cells for a test structure, and those cells may be instantiated a number of times, and each such instance of each cell may be parameterized in a given layer of hierarchy to specify interrelationships among those instances and to a defined point in the layer (e.g., an origin of the layer). That layer of hierarchy may then be instantiated in a yet higher layer of hierarchy. The result may be described as a tree of cells where each layer describes how the cell is instantiated at higher levels of hierarchy to form a test structure.
Returning to via chain 100, a tree of cells 1000 is illustrated in
To further illustrate how a cell may be processed, the remainder of the description focuses on runner cell 1020. As briefly discussed with respect to
An example of an ASCII format is presented in Table 1, below. The ASCII format presented in Table 1 corresponds to runner cell 1102 depicted in
An aspect to note with the ASCII descriptor file is that objects drawn at a top level of hierarchy, e.g., the “rectangles” and the “guides” at the beginning of the file include physical description information. By contrast, instantiations of cells created in lower levels of hierarchy (e.g., the instance of the cell “via” near the bottom of the first column) include information for positioning and sizing the cell within the top level of hierarchy, and information for repeating (or not repeating as the case may be) the cell as an instance array.
Now, aspects of turning this ASCII input file into a graph will be addressed with respect to
Next, nodes are created (1210 in
Thereafter, groups of X nodes are created by merging edges that abut into a single node of the cell (1211 of
Following the grouping, the cell runner is flattened at 1212 (
After the cell runner is flattened, edges are created at 1213 (
Based on the graph of
From the coordinates at 1229, a formula is extracted at 1230. A further example of formula extracted is found in
Although various exemplary embodiments have been described, various modifications can be made without departing from the spirit and/or scope of the present invention. Therefore, the present invention should not be construed as being limited to the specific forms shown in the drawings and described above.