Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tools:start [2023/04/07 08:56]
rajit [Tools]
tools:start [2023/06/23 11:23] (current)
rajit [Tools]
Line 8: Line 8:
    * [[prs2sim|prs2sim]]: a production rule to sim file converter    * [[prs2sim|prs2sim]]: a production rule to sim file converter
    * [[ext2sp|ext2sp]]: converts magic extract files into a hierarchical spice file    * [[ext2sp|ext2sp]]: converts magic extract files into a hierarchical spice file
 +   * [[tools:layout:|Layout generation]]
    * [[lvp|lvp]]: layout versus production rules    * [[lvp|lvp]]: layout versus production rules
  
Line 22: Line 23:
    * [[http://opencircuitdesign.com/magic/index.html|magic]]: The Magic VLSI layout editor    * [[http://opencircuitdesign.com/magic/index.html|magic]]: The Magic VLSI layout editor
    * [[http://opencircuitdesign.com/irsim/index.html|irsim]]: A switch-level circuit simulator    * [[http://opencircuitdesign.com/irsim/index.html|irsim]]: A switch-level circuit simulator
-   * Gemini: a netlist comparison for strict layout-versus-schematic checking {{:tools:gemini-2.7.2.tar.gz|Gemini}}+   * Layout versus schematic (LVS) checking: 
 +      * Gemini: a netlist comparison for strict layout-versus-schematic checking {{:tools:gemini-2.7.2.tar.gz|Gemini}} 
 +      * [[http://opencircuitdesign.com/netgen/index.html|netgen]]: another tool for LVS
  
 Two useful concepts to keep in mind when using the ACT tools are //expanded names// and //mangled names//. Two useful concepts to keep in mind when using the ACT tools are //expanded names// and //mangled names//.
Line 40: Line 43:
 ===== Mangled names ===== ===== Mangled names =====
  
 +Expanded ACT type names can contain characters like ''<'','' >'', and '','' (among others). Instances can have names like ''a[3].b[5].z'', including the characters ''['', '']'', and ''.''. When exporting an ACT design to another format for use by a third-party tool, names with such characters in them can be potentially problematic. A good example of this is when exporting a SPICE netlist---different versions of SPICE have different syntactic restrictions. To handle this in a disciplined manner, the ACT library has the notion of a //mangled// name. A mangled name is generated by re-writing a user-specified list of special characters with an underscore and a number/character combination. This mapping is invertible, so a name can be unmangled as well. The set of characters to be mangled is specified in the ACT configuration option ''act.mangle_string'' (usually found in the global configuration file ''global.conf'').
  
 +The standard name mangling prefix character is an underscore. Name mangling operates character-by-character as follows:
 +    An underscore is replaced by two underscores.
 +   * A character that is not in the mangle string is a pass-through, so it is not modified.
 +   * If a character is at position k in the name mangling string, it is replaced with an underscore followed by k. The position character is 0 to 9 for positions 0 to 9, followed by a-z. Up to 36 characters can be mangled.
  
 +Name mangling can at most double the length of the string.
  
 +Process names have a special case in terms of name mangling. If an expanded process has no parameters, its mangled name is obtained simply be omitting the trailing ''<>''. This is to make the output more readable when templates are not being used.