This section defines how composite layers are generated. Since Carafe represents transistors as a separate layer, regions where polysilicon and diffusion overlap must be converted to the transistor layers. This is done in the compose section. Each line in this section defines a layer that is made up of possibly several other layers that overlap each other. The new layer exists only where all of the specified layers overlap each other. Each line consists of three fields. The first contains the name of the plane that the particular composition will take place on. The plane name must have been defined previously in the planes section. The next field is the name of the composite layer being defined. This layer name must be one that is defined in the types section. The last field is a comma separated list of the layers that combine to make the new layer type. Each layer must be on the plane specified and must have been defined in the types section.
Note: If one composite type is a subset of another, the smaller composite type must be specified before the larger. For example, suppose we have two composite types to define, ndiffusion and ntransistor. The ndiffusion layer is composed of active_area and n-implant, and the ntransistor layer is composed of active_area, ndiffusion and polysilicon. We can see that the set of layers to create the ndiffusion is a subset of the layers for ntransistor. Problems may result if all areas of overlapping active_area and n-implant are converted to ndiffusion before composing the more specific ntransistor. Since Carafe processes the list of composites from the last to the first, the ntransistor record must appear below the ndiffusion record. Another way to do this would be to add a record before the ndiffusion record that would specify the ntransistor being composed of ndiffusion and polysilicon.