<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "klayout_doc.dtd">

<doc>

  <title>About Technology Management</title>

  <p>
  Technology management summarizes features which require a certain interpretation of a layout.
  In particular, layout layers are assigned a physical meaning, for example via layers or active area
  layers in CMOS technologies. Since that interpretation often is depending on the technology
  the product will be fabricated with, the ability to provide multiple setups is summarized
  as "technology management".
  </p>

  <p>
  A technology setup implements the following aspects:
  </p>

  <ul>
    <li>Layer mapping: when the layout reader loads a file that for a certain technology, it can 
      apply a layer mapping, i.e. apply layer names to GDS layers, filter layer etc.
    </li>
    <li>Layer properties: depending on the technology, the layer display can be configured by
      providing a technology specific layer properties file.
    </li>
    <li>Connectivity: the layer stack and the connections made by layers for the net tracer
      feature.
    </li>
    <li>Macros: macros associated with the technology. When the corresponding technology is
      selected (is the one of the current layout), such macros will show up in the menu if they
      are bound to a menu entry. Otherwise they will be invisible.
    </li>
    <li>DRC scripts: in the same way, DRC scripts can be associated with a technology.</li>
    <li>Libraries: if a library is associated with a technology, it is shown in the list
      of available libraries when an instance is created. Library association cannot be
      edited. Instead, a library installed in the system comes with a technology 
      association itself.</li>
    <li>File format options: technology specific file reader or writer options can be
      given. When a layout is saved, it will use the writer options from its technology.
      When loading a layout, the reader options from the active technology will be used.</li>
  </ul>

  <p>
  In the future, more aspects may be added to the technology definition.
  </p>

  <p>
  There is always one "Default" technology that is used when no technology is 
  specified.
  </p>
  
  <h2>Setting up technologies</h2>

  <p>
  Technologies can be set up using the "Technology Manager" in the "Tools" menu.
  There is always a "Default" technology which provides the settings when no
  technology is selected. New technologies can be added or technologies can be
  deleted using the "+" or "x" buttons below the technology tree.
  </p>

  <p>
  A technology has a name (a short string) and a description. The name is used
  to identify the technology in various places. The description is the human-readable
  text that is displayed in the technology selection boxes for example. The short name can 
  be changed by selecting the technology and pressing the "Rename" button or using "Rename"
  from the technology tree's context menu (right mouse click). The description can be
  edited on the "General" page.
  </p>

  <p>
  In the technology manager, below each technology, the components are shown that define
  the various aspects of a technology. Beside the "General" aspect (names, descriptions) there
  is a "Layers" component which defines the layer mapping table and layer properties file and
  the "Connectivity" component which defines the settings for the net tracer.
  </p>

  <h2>Using technologies</h2>

  <p>
  When more than the default technology is defined, KLayout provides a drop-down menu in 
  the tool bar to select the current technology. The current technology is the technology
  used when new files are loaded. It is also possible to define the technology to be used 
  on the command line using the "-n" switch (applies to following files and specifies the
  technology to use by their short name).
  </p>

  <p>
  The technology of the currently selected layout is shown in the status bar of the main 
  window in the left section. It is possible to switch the technology of a layout already 
  loaded by using the "Layout Properties" dialog from the "File" menu. After switching the
  technology, the layer properties defined in the technology can be applied and the associated
  macros or DRC scripts are shown in the menu if they are associated bound to a menu entry or
  the key binding becomes active if a shortcut is defined for that macro.
  </p>

  <h2>Technologies and macros or DRC scripts</h2>

  <p>
  Macros or DRC scripts are stored in sub-folders relative to the technology's base path. When 
  no base path is specified or the base path is invalid, macros or DRC scripts cannot be associated. 
  KLayout will look search for macros, if a directory called "macros" is present in the 
  base path. If it finds files with a valid macro suffix there it will associate them with 
  this technology. The same way, KLayout will look for DRC scripts, if a directory called "drc"
  is present in the base path.
  </p>

  <p>
  Macros and DRC scripts associated with a technology are shown in the technology manager. To edit
  or debug scripts of macros, use the macro development environment ("Macros/Macro Development").
  If a technology has a macros or DRC scripts folder, the macro or DRC scripts tree in the
  development environment will show a corresponding top-level branch for that technology.
  </p>

  <p>
  Multiple technologies can share the same base path - hence it is possible to share macros
  or DRC scripts between technologies.
  </p>

  <h2>Managing technologies</h2>

  <p>
  Technologies can be imported and exported to technology files (suffix ".lyt"). This is mainly
  useful to exchange technology settings between users or technologies.
  </p>

  <p>
  Except for the default technology, technologies are kept in 
  technology folders in KLayout's application path. They are read from 
  subfolders from the "tech" directories. The technology definition itself
  is held in a file with extension ".lyt". The technology folder may have
  subfolders to hold library files, macros, DRC runsets, LEF files and
  other pieces of the technology package. 
  </p>

  <p>
  Technologies can be managed using packages. Packages are a convenient way to share
  add-ons between users. Packages can be installed from a common repository
  and allow easy addition and removal of components. Technologies are one aspect
  of packages, so it's possible to create packages that contribute one or more
  technologies. See <link href="/about/packages.xml"/> for more details.
  </p>

</doc>

