


LL_PROCESS(5ICD)				 LL_PROCESS(5ICD)



NNNNAAAAMMMMEEEE
     ll_process - ldmc technology data

SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
     # include <ll_process.h>

DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
     The ldmc system has a limited but useful knowledge of tech-
     nology and design rules.  This knowledge is not built into
     the code, but is obtained from the design environment during
     initialization (see ll_init(5ICD)).  This allows the system
     to be used for different technologies and even to write lay-
     out generators that are, to a certain extend, layout
     independent.

     During initialization, the identification of the actual
     technology and some elementary technology info such as layer
     names, is obtained from the design management system (the
     ``maskdata'' file).  Furthermore, the ldmc technology file
     as present in the system process library is read.	All tech-
     nology data is stored in the ldmc process descriptor, acces-
     sible through a global pointer _l_l__p_r_o_c_e_s_s.

     The format of the ldmc technology descriptor is as follows:

     typedef struct {
	 int   nomasks; 		/* number of masks */
	 char  *pr_name;		/* process name */
	 char  *pr_type;		/* process type */
	 char  *pr_info;		/* process info */
	 char  **mask_name;		/* mask name */
	 char  **mask_info;		/* mask name info */
	 int   *mask_no;		/* mask number */
	 int   *mask_type;		/* mask type */
	 int   *mask_id;		/* short name */
	 int   *mask_width;		/* minimum width */
	 int   **mask_sep;		/* minimum separation */
     } LL_PROCESS;

     The meaning of its members is as follows:

     nnnnoooommmmaaaasssskkkkssss An integer specifying the number of layers in the
	     technology

     pppprrrr____nnnnaaaammmmeeee A pointer to a string giving the short process name.

     pppprrrr____ttttyyyyppppeeee A pointer to a string specifying the process type
	     (e.g. nmos or bipo).

     pppprrrr____iiiinnnnffffoooo A one-sentence process identification.

     mmmmaaaasssskkkk____nnnnaaaammmmeeee



		   The Nelsis IC Design System			1






LL_PROCESS(5ICD)				 LL_PROCESS(5ICD)



	     A vector of pointers to masknames.  The indices of
	     the array are from 0 to nomasks-1.  If _m is the
	     number of a mask, its name can be found by
	     _l_l__p_r_o_c_e_s_s -> _m_a_s_k__n_a_m_e[_m].

     mmmmaaaasssskkkk____iiiinnnnffffoooo
	     Some information on the mask.

     mmmmaaaasssskkkk____nnnnoooo The sequence number of the mask.  This number is in
	     fact redundant, since, for all _m with _0 <= _m <
	     _l_l__p_r_o_c_e_s_s -> _n_o_m_a_s_k_s, _l_l__p_r_o_c_e_s_s -> _m_a_s_k__n_o[_m] ==
	     _m.

     mmmmaaaasssskkkk____ttttyyyyppppeeee
	     An integer array specifying the type of masks.
	     Valid mask types are predefined in ll_process.h as
	     follows:

	     LLLLLLLL____OOOOTTTTHHHHEEEERRRR____MMMMAAAASSSSKKKK
		     Regular mask.

	     LLLLLLLL____IIIINNNNTTTTCCCCOOOONNNN____MMMMAAAASSSSKKKK
		     Interconnection mask.

	     LLLLLLLL____SSSSYYYYMMMMBBBB____MMMMAAAASSSSKKKK
		     Symbolic mask (e.g. bounding box).

     mmmmaaaasssskkkk____iiiidddd The short (one character) mask name (layer specif-
	     ier) to be used e.g in the _k_e_y argument of _m_g_e_t_t_e_r_m.

     mmmmaaaasssskkkk____wwwwiiiiddddtttthhhh
	     The minimum width of a mask, to be used by the ldmc
	     routing functions.  For a mask with mask-number _m,
	     its minimum width is given by _l_l__p_r_o_c_e_s_s ->
	     _m_a_s_k__w_i_d_t_h[_m].

     mmmmaaaasssskkkk____sssseeeepppp
	     The separation between two masks, to be used by the
	     ldmc routing functions.  For two masks with mask-
	     numbers _m_1 and _m_2, their minimum mutual separation
	     is given by _l_l__p_r_o_c_e_s_s -> _m_a_s_k__s_e_p[_m_1][_m_2].

     As stated above, the information in the ldmc process
     desccriptor is partly obtained from the _m_a_s_k_d_a_t_a file and
     partly from the ldmc technology file, _l_d_m_c_d_a_t_a, in the sys-
     tem process library.  This file contains one line per layer,
     but not all layers need be present.  In fact, it typically
     only contains information for the interconnect layers.  Com-
     ments are surrounded  by sharp (#) and newline.  Each line
     has a number of fields, the first three specify maskname,
     maskid and minimum width.	Then, a number of fields equal to
     the number of layers specified give the separation between



2		   The Nelsis IC Design System






LL_PROCESS(5ICD)				 LL_PROCESS(5ICD)



     masks.  This is in fact one row of the (symmetrical)
     mask_sep matrix of the ldmc process descriptor.  As an exam-
     ple, here is the ldmc technology description for a standard
     4u nmos process for a value of lambda of 2:

     # SccsId = "@(#)ldmcdata 3.2 (TU-Delft) 7/30/87"
     # Ldmc technology description for standard 4u nmos process
     # name  id      width   sep
     np      p	     2	     2 1 0
     nd      d	     2	     1 2 0
     nm      m	     2	     0 0 2

FFFFIIIILLLLEEEESSSS
     ICDPATH/lib/process/PROCESS/ldmcdataldmc technology file

SSSSEEEEEEEE AAAALLLLSSSSOOOO
     ldmcdata(3ICD) ll_init(5ICD)






































		   The Nelsis IC Design System			3



