≡≡  

Introduction

 Introduction

  LASICKT.EXE is a LASI CAD System utility program that can analyze
  drawings made using LASI and write a SPICE circuit file. It can do both
  "schematic capture" and "layout capture". SPICE code will be written for
  circuits with individual devices, and any subcircuit definitions that may
  be necessary will also be created.

  In addition to writing a SPICE circuit file, LASICKT also writes a file
  that lists the nodes and their device connections. This can be used to
  check for missing or open connections between a schematic and a layout.

  Circuit nodes can be marked explicitly, or LASICKT can automatically find
  nodes on a layout or schematic. The program also can look for certain
  types of shorts and open connections, and in a rudimentary way calculate
  the capacitance of interconnections.

  LASICKT uses normal LASI text objects to mark nodes and to pass device
  name and parameter information to the SPICE code. Both header and footer
  text files may be appended automatically to the generated SPICE circuit
  file. These files may contain extra information such as model and
  subcircuit definitions or operating statements.

  LASICKT has a very good use: it can be used to verify that an IC will
  probably work after the IC has been completely drawn using LASI. LASICKT
  therefore gives reassurance to anyone making ICs with LASI, and also
  allows "heuristic processing" for students using LASI as an educational
  tool.

  The SPICE code produced by LASICKT is written for use with PSpice. If
  incompatible with another SPICE that you may be using, or if you have a
  particular problem with the way that LASICKT works, contact the author
  for possible fixes, advice or improvements. Since doing what LASICKT does
  is no trivial task, expect future changes.

How LASICKT Works

 The Basic Idea

  LASICKT works by placing text on specific layers at specific locations in
  a LASI drawing.

  In a LASI drawing of an IC or electrical circuit, the circuit devices are
  simply cells interconnected with lines or areas. To mark how a circuit is
  connected you use text on two different layers. The two types of text are
  called NODE NAMES and CONNECTORS.

  Node Names give the lines and areas used for interconnection in a circuit
  a definite name. Without a node name, LASICKT will make up a "virtual"
  name.

  Connectors locate the "connection points" on a cell and pass that
  location to higher ranking cells where that particular cell is being
  connected as part of a larger circuit.

  This may be diagrammed as follows:


                CONNECTOR to
               | next cell up      NODE (Named or Virtual)
               |     /             /    (marks interconnection with name)
               |   /             /
            ┌──|─/─────────────/──────┐
            │  ■C2           ■N1      │ Higher Rank Cell Interconnect Area
            └────────────────────────┘
             Position   |   CONNECTOR Text (marks connection)
             Passed Up  |   /
               ┌────────|─/─────────┐
               │        ■C1         │ Lower Rank Cell Interconnect Area
               └────────────────────┘

  In the above, connector C1 is connected to node N1 in the higher cell.


  This process of passing connections can be extended to the full depth of
  cell nesting. Cell nesting in LASI is similar to the way that SPICE
  works, that is, SPICE arranges devices into subcircuits which correspond
  to LASI's cells. LASICKT's NODES (named or virtual) correspond to what
  SPICE calls nodes, however CONNECTORS are graphical entities that have no
  real equivalent in SPICE.

  SPICE code also requires that you give devices NAMES and pass certain
  device PARAMETERS. To indicate device names and parameters you use two
  additional layers and write the text directly on the cells. The text is
  literally passed on to the SPICE code.

  LASICKT uses text written on a total of four different layers to control
  the SPICE code that it generates.

 Device Definition Statements

  A device statement in SPICE can be considered to have three fields.
  LASICKT builds a device definition by filling in these fields using text
  that it finds on a drawing:

                        ┌──────┬───────┬───────┐
                        │ NAME │ NODES │ PARAM │
                        └──────┴───────┴───────┘

  NAME is the a predefined device name beginning with R,C,Q, etc. It may
  also be a subcircuit name starting with X. NAME may also include a logic
  device type (NAND(2) for example). When you use LASICKT this text is
  placed on the "Device Text Layer" and is passed to the definition as the
  first field.

  NODES is a sequence of node names that LASICKT constructs, and is placed
  second in the SPICE definition. The node names are determined from node
  name text and any virtual node names.

  PARAM is text placed on a "Parameter Text Layer". It is passed literally
  to the last field. This contains such things as MODEL and SUBCKT names
  and adjustable parameters. This text can become pretty wordy so multiple
  lines are allowed.

 Devices, Subcircuits and Cells

  It is important to understand how SPICE devices translate from LASI
  cells. LASI's boxes and paths are NOT devices; they only serve to connect
  things together (on interconnect layers). A minimum device is a rank 1
  cell. For example, a single NPN transistor, whether drawn as a symbol or
  a layout figure is a simple device (Q-type). A NAND gate even though it
  may have several transistors and resistors is a single U-type device.

  If several devices are connected together they form a subcircuit
  (SUBCKT), which can be used as an X-type device. A LASI cell must be at
  least rank 2 to become a subcircuit since it must contain other cells.

  To add to the confusion, there is no reason why you can't define a SUBCKT
  separately, and include it as a rank 1 cell in a cell of rank 2 or
  greater. The OPAMP cell in the demonstration layout (DEMO.EXE) has a rank
  1 PNP current source SUBCKT.

  You can conclude that rank 1 cells will contain no nodes or node name
  text, since they have no devices to interconnect. (There is an exception
  with global symbols explained below.) Rank 1 cells will however have
  connector text to tell any higher cells where to connect to them.

  A rank 2 cell will normally have nodes that connect its devices or cells
  together. If a rank 2 or greater cell is the "top" cell it will have no
  connectors; otherwise it will have connectors to connect itself to the
  cell above it.

  A top cell will always have node names on its external connections so
  that it can be properly referenced for input and output.

Types of Text

 Node Name Text

  Node name text is LASI text that labels an object (box, path, polygon or
  line) that is used for interconnection with a definite name.

  Applying certain rules, LASICKT finds just which objects on a certain
  layer are connected geometrically together into what might be called a
  "node island", and gives them the node name that labels (at least) one of
  them. These node names are placed directly in the SPICE code. Named nodes
  are only "seen" by LASICKT within the cell that contains those objects.

 Virtual Nodes

  If it finds connections without a node name, LASICKT is smart enough to
  make up its own name for a node. Once LASICKT has looked for all possible
  associations between node name text and lines and areas, it will make up
  a "virtual" node name for any lines or areas that remain. This is not
  actual drawing text, but a number with a prefix you can choose. As with
  node name text, these node names will be placed in the SPICE code.

  Note: Once one or more objects are found by LASICKT to be a single node
    island and they have been given a node name (text or virtual), those
    objects collectively can be called a "node", which is what SPICE
    actually refers to as a node.

 Connector Text

  Connectors MUST be placed on a layer different from node name text.

  Connector text "communicates" the nodes of a cell up to a higher rank
  cell that contains that cell. In the higher cell, the connector is
  "attached" to an object that is used for interconnection. Connectors are
  only "seen" by LASICKT in the higher ranking cell.

  Connectors locate the "electrical connection points" in a cell, and are
  normally placed on a cell in locations that "electrically connect" to the
  outside world.

  Connector text MUST contain a SEQUENCE NUMBER in the text that indicates
  the RELATIVE ORDER of the nodes in the SPICE device definition statement.

  For example, an NPN transistor might have the connectors "1-C", "2-B",
  and "3-E" that correspond to the SPICE transistor device's node order.
  The number of the connector will be taken from the first digit found in
  the text, that is, "1-C" and "C-1" are equivalent.

  At the moment, 64 connectors are permitted on a single cell, and a total
  of 2048 connectors may be passed to the next higher cell.

  Note: Different cells can use the same connector text and sequence
    numbers, since only the relative order of the sequence numbers in a
    particular cell is important.

 Name and Parameter Text

  SPICE requires devices to be named, and also needs various parameters to
  be included in device definition statements. LASI text may be used to
  pass literal text information to SPICE definitions. Two different layers
  are used to pass DEVICE NAMES and DEVICE PARAMETERS independently. You
  simply write this information on your drawing and it is passed to SPICE.

  Since a cell is a device, to pass text to SPICE, you place the text
  reference point within the OUTLINE of the cell. This associates the text
  with that cell only. Be careful not to put text on more than one cell or
  it will be passed to all.

  If you put device text IN a cell but not ON any lesser cells, the text is
  used to construct a SUBCKT if the cell is not the top cell.

  A drawing that is to be processed by LASICKT is therefore a well
  documented drawing, since each cell will have information about itself
  written directly on it.

 Global Symbol Cells

  As a compromise with standard practice used in schematics, LASICKT allows
  you to make rank 1 cells into little objects that act like box objects
  that may be used to interconnect devices. The difference is that they
  carry around a node name and a little picture.

  The best example is a ground symbol. To SPICE this is a global node "0",
  but when you use it in a drawing it connects to only one point. It
  therefore labels a node as grounded, but connects nowhere else.

  To make a global symbol you take a rank 1 cell and place NODE NAME text
  on it. You place NO CONNECTOR text on it as you would do normally to
  connect to the cell. The OUTLINE of the cell becomes equivalent to a box
  of the same dimensions, and if a connector from another cell falls in
  that area, the cell's connector is labeled with that symbol's node name.

  For example, if a ground symbol cell overlays a connector on a
  transistor's emitter, and if that symbol cell has "0" on the node name
  layer written on it, that emitter is then set at node "0", and forever
  grounded.

  Note:  Any global node names other than "0" should be declared in a
    .GLOBAL statement in the SPICE file.

Text Placement Rules

 Node Name Text Rules

  For named node text to label drawing objects, the text must be located so
  that the text can be uniquely identified. The following rules apply to
  the placement of node name text:

  1. Text is always located by its reference point and is independent of
     the size of the text or its orientation.

  2. Node name text must be located on objects that are on one of the
     layers used for interconnection as follows:

  ■ For boxes, the text reference must be ON an edge or WITHIN the area of
    the box.

  ■ For paths WITH WIDTH, the text reference must be WITHIN the path area
    or ON a horizontal or vertical edge.

  ■ For OPEN paths WITHOUT WIDTH (lines), the text reference must be ON a
    vertex or WITHIN a horizontal or vertical segment.

  ■ For closed paths WITHOUT WIDTH (polygons), the reference must be WITHIN
    the area of the polygon.

 Connector Text Rules

   Connector text can be located anywhere, but should be located where
   actual electrical connection is to be made in a layout or schematic.
   There is NO checking that an actual electrical connection is made or
   that any design rules ar obeyed. Connector text follows these rules:

  1. Connector text MUST ALWAYS be connected (or attached) to an object
     used for interconnection in the NEXT HIGHER CELL. If not, you will get
     an "Open" error when you run the program.

  2. A connector is attached to a node in the NEXT HIGHER CELL following
     the same rules as node name text listed above.

  3. If you place a NODE NAME text reference point EXACTLY on the CONNECTOR
     text reference of the cell below it, the connector will connect to the
     node. This has a very handy if you want to connect to a point that is
     not on an interconnection layer. An example would be connecting the
     substrate of a transistor which normally has no metallized connection.

 Passed Text Rules

  For text to be passed to the SPICE code, certain rules must be followed:

  1. Device name and parameter text must be located on two different layers
     that are different from the node or connector text layers.

  2. The text reference must be located WITHIN or ON the OUTLINE of a
     lesser cell to be passed that SPICE device.

  3. If a PARAMETER text reference is NOT on the OUTLINE of ANY cell, it
     will be passed to the SUBCKT definition if the overall cell is made
     into a SUBCKT.

  4. LASI text is up to 40 characters long. If more is needed multiple
     lines must be used.

  5. Text on multiple lines will be assembled into a single line in a
     descending Y order.

  6. If a "+" is placed at the beginning of a text string a new line
     (CR-LF) will be inserted, which corresponds to SPICE convention.

  7. If a "*" is placed at the beginning of a text string a new line will
     be inserted. This lets you put comments in the SPICE code.

  8. Each text line will have a SPACE inserted after it, so that on
     multiple lines you don't have to put spaces in your text.

Interconnection Rules

 Interconnection Rules

  LASICKT connects objects (boxes, paths, polygons and lines) following
  these rules:

  1. Objects must be in the same cell and be on the same layer or layer
     group to connect.

  2. Several interconnection layers may be listed in the program setup. If
     they are listed separated by spaces they are all independent and do
     not connect to each other.

  3. If layers are listed separated by spaces but in a GROUP enclosed in
     PARENTHESES, they all interconnect as if they were a single layer.

  4. Boxes, paths with width and closed polygons are all AREAS.

  5. Areas connect if they overlap or are contiguous on a horizontal or
     vertical edge.

  6. Open paths without width are LINES.

  7. Lines connect if they have ANY vertices that are coincident.

  8. Lines connect if a vertex of one falls WITHIN a horizontal or vertical
     segment of the other, as in a "T" or an "L". This is normal schematic
     convention.


  If an interconnection has to go through some kind of a crossover
  structure (polysilicon underpass for example in an IC), you must do one
  of the following:

  ■ Place the same node name text on both sides of the crossover to
    indicate that it is the same electrical node.

  ■ Make the crossover into a cell and give the end nodes different node
    name text or allow them to be virtual nodes.

  The latter is useful if the crossover has some electrical effect, such as
  significant resistance. Also note that you can't put the crossover and
  the interconnect layer in a group enclosed by parentheses, because they
  will short out.

  LASICKT does not know how to trace through different layers in an IC to
  determine connections since it is not "process specific".

Capacitance

 Capacitance

  LASICKT will calculate the approximate parasitic capacitance of the
  interconnect layers to ground, and add a capacitor device to the SPICE
  code. For the moment this is the same for all layers, but may be made
  layer dependent in the future if it really proves valuable. LASICKT
  calculates all the areas, but ignores overlaps. Lines used in schematics
  are ignored.

  The capacitance is in pF per square physical unit that you used to do
  your drawing, i.e. pF/sq-um typically.

  The parasitic capacitor will be named "C_NODE", where NODE is the node
  name text that labels the areas.

Running LASICKT

 LASICKT Setup

  When you first run LASICKT from the DOS command line, it will come up in
  a setup screen. The setup is saved as LASICKT.SET and returned when you
  run the program again. Setup parameters are as follows:

  1. "Name of Cell" is the main cell that you want analyzed and converted.
     The program will produce a SPICE file with the extension ".CIR" using
     this cell name. The node list file will be written with the cell name
     but with a ".LST" extension.

  2. "Header and Footer Files" are the names of files you may want to
     include in the SPICE file. These filenames may be "global" files used
     with several drawings and therefore may include a path. These files
     may contain such things as .MODEL definitions of your devices. These
     are completely arbitrary and may be omitted by simply putting in a
     name of a file that doesn't exist or leaving the name blank by
     entering only a space character.

  3. "Virtual Node Prefix" is the name of any virtual nodes to which a
     number will be added. This should be short as possible, and case is
     preserved.

  4. "Interconnect Layers" is a list of layer numbers.  These are the
     layers that are used for connecting devices, if more than one. These
     numbers should be separated by a space and groups may be enclosed by
     parentheses to allow more than one layer to connect. For example,"2 (4
     8)" will connect 2 independently, but 4 and 8 will connect together.
     You may enter a maximum of 8 layers or 8 groups of up to 8 layers.

  5. "Interconnect Capacitance" is the approximate unit capacitance of the
     interconnect layers to ground. The capacitance is in pF per square
     physical unit that you used in your drawing, i.e. pF/sq-um typically.
     If you make this parameter equal to zero (0). the program will run
     faster because it will not bother to calculate the areas of the
     various interconnections.

  6. "Named Node, Connector, Device Name and Parameter Text Layers" are the
     layers that you used for those respective text in your drawing. All
     must be different layers, and all must be layer 1-64.

  The last setup line is the switches used to control error checking and
  reporting. These are explained separately below.


  To run LASICKT after the setup, press F10.

  To abort at any time, press ESC.

 Error Switches

  The final setup line contains four yes/no switches. These control the
  following error checks:

  Opens

    If LASICKT finds that a connector on a cell is "open" it will warn you.
    To be connected, the connector must be attached to an interconnect
    layer in the higher ranking cell where the cell is used. Attaching a
    global symbol or putting a node exactly on the connector will also
    satisfy the connection. This is an error that is easy to make.

    An "open" connector will be written to the SPICE code as a "?", since
    there will be no node name available.

    When you are satisfied that there are no actual errors, you can set
    this to "n".

  Shorts

    If LASICKT finds two objects connected but with different node names,
    it will report it as a "short". SPICE code will still be written, but
    it could have a node conflict that your SPICE analysis program should
    eventually discover.

    You might see the same error twice. LASICKT cross checks, so that if
    one object connects to a second, the second will also be found to
    connect to the first.

    A second way you can have a short is if you put more than one connector
    with the same sequence number on a cell. This is permitted, but it
    possible to connect different nodes to the same actual connector. The
    error message will indicate the cell and the position.

    If you are sure that there are no shorts, set this to "n" and the
    program will run faster because the number of objects checked will be
    greatly reduced.

  IMPORTANT: Shorts checking on interconnections should not be confused
    with checking for shorts on an overall layout. LASICKT checks for node
    naming conflicts, not actual shorts, since it really doesn't know how a
    circuit is to be connected. It checks only at a single cell level, and
    not the composite of several cell nestings.

  Floats

    This indicates that a cell exists that is not attached to anything in
    the circuit. This will detect cells that you forgot to connect, or such
    things as test transistors that would not be normally connected.

    Turn off the warning message with "n" if you have a problem. Failure of
    this test is just a warning since the floating device will not appear
    in the SPICE code.

  Devices

    This checks if a device definition statement contains both device name
    and device parameter text. All SPICE devices require that you specify
    the device name and almost all devices have parameters of some kind.
    This does not check the correctness of the text, just if it is present.
    A SPICE statement will contain "???" if device text is missing.

    Turn this test off with "n" if it causes any problems. Failure of this
    test usually incorrect device statements.

 Run Operations

  As LASICKT analyzes a drawing it will indicate what it is doing in the
  "Operations" box. It will show the name of the cell and the particular
  operation. Any error warning messages will appear in the "Messages" box.

  A count of the devices, nodes and connectors will be displayed in the
  "Counts" box. This is useful to see just what LASICKT has found, and to
  verify just what you think it should find. This is explained below.

  LASICKT will first search for global symbols in the drawing cell
  collection. Then, for the main circuit and each possible subcircuit, it
  will search for the nodes that you have named, and then it will try to
  connect the objects on the interconnect layers. It will then try to
  create and connect any virtual nodes that may be needed. Connecting
  virtual nodes takes somewhat longer.

  Whenever LASICKT looks for interconnections it does multiple passes,
  extending connections one at a time, until it finds no more.

  Hint: To speed things up, use named nodes, not virtual nodes, unless you
    have a fast computer or can wait. Every time a virtual node is created
    there has to be a complete search of all interconnections.

  Finally, once it has learned enough about your drawing, the program will
  write SPICE code to the .CIR output file, and will write node list
  information to the .LST file. This will be done in stages, depending on
  any subcircuits.  Each cell listed as being analyzed will be translated
  into either the main circuit or into a subcircuit definition.

 Count Display

  As LASICKT runs, it keeps score and displays the following:

  ■ The count of devices in the cell, or actually the number of lesser
    cells.

  ■ The number of nodes, named and virtual that it reads or creates in the
    cell that it is analyzing, and their sum.

  ■ The count of connectors that it sees passed up from the lesser cells.

  ■ The number of named, virtual and symbol nodes that it attaches to the
    connectors, and their sum. These numbers are IMPORTANT because their
    sum should equal the count of connectors.

The Node List File

 The Node List File

  When LASICKT finishes writing SPICE code statements for a circuit, it
  resorts the information and uses it to write a list of nodes in ascending
  ASCII order in the Node List File. The name of this file is the main cell
  name with the extension ".LST". Each node name is followed by the device
  names and the connector sequence number for each device connection. The
  name and number are separated by a period. "R2.1" for example says that
  connector 1 of device R2 is connected to a particular node.

  The main circuit and any subcircuits are listed independently. Remember
  that node names are local and belong only to the circuit in which they
  appear, (except for global nodes) and should not be confused with similar
  node names in different circuits.

An Example

 An Example

  The best way to see how LASICKT works is to have an example. The LASI
  demonstration layout (compressed in DEMO.EXE) contains a layout of a
  small opamp (OPAMP) and a schematic ($OPAMP). This has been marked with
  text so that LASICKT can process it.

  The node names are on layer 60, connectors 61, device names 62 and
  parameters are on layer 63. Interconnections are metal on layer 8 for the
  layout and 32 for the schematic. There is also a global cell used for the
  ground symbol. The PNP current source is a SUBCKT defined in OPHDR.LIB.

  Notice that only a few nodes are marked. The rest are virtual nodes. This
  is probably what would normally be done by someone using LASICKT.

  You only need to use text if you want to force a name. (such as "0")

  You can run LASICKT on OPAMP or $OPAMP and see what is produced. You will
  find a few intentional errors - try to fix them.

