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 [2021/05/19 10:43]
rajit [Common command-line options]
tools:start [2023/06/23 11:23] (current)
rajit [Tools]
Line 3: Line 3:
 In addition to the core ACT library, we have also implemented a number of tools for asynchronous circuit design. Some of the core tools are included as part of the main Github repository, while others have their own repository. For completeness, we also include links to other open-source tools that can be used to implement different parts of the VLSI flow. In addition to the core ACT library, we have also implemented a number of tools for asynchronous circuit design. Some of the core tools are included as part of the main Github repository, while others have their own repository. For completeness, we also include links to other open-source tools that can be used to implement different parts of the VLSI flow.
  
-   * [[prsim|prsim]]: a digital production-rule simulator.+ 
 +   * [[actsim|actsim]]: an ACT simulator.
    * [[netgen|prs2net]]: a production rule to SPICE netlist generator    * [[netgen|prs2net]]: a production rule to SPICE netlist generator
    * [[prs2sim|prs2sim]]: a production rule to sim file converter    * [[prs2sim|prs2sim]]: a production rule to sim file converter
-   aflat and prspack: a production rule flattener and compaction tool. See the documentation for [[prsim|prsim]].+   [[ext2sp|ext2sp]]converts magic extract files into hierarchical spice file 
 +   [[tools:layout:|Layout generation]] 
 +   * [[lvp|lvp]]: layout versus production rules
  
-Of these tools, ''prs2net'', ''prs2sim'', and ''aflat'' are core ACT tools--i.e. tools that use the core ACT library and take ACT files as input.+These are core ACT tools--i.e. tools that use the core ACT library and take ACT files as input. They also accept the standard ACT [[:stdoptions:start|command-line arguments]], in addition to their own arguments. The standard ACT options include ways to specify technology-specific information, as well as local configuration overrides.
  
 Standalone tools: Standalone tools:
 +   * [[prsim|prsim]]: a digital production-rule simulator
 +   * aflat and prspack: a production rule flattener and compaction tool. See the documentation for [[prsim|prsim]].
    * [[AMC:|AMC]]: an asynchronous memory compiler    * [[AMC:|AMC]]: an asynchronous memory compiler
-   * [[ext2sp|ext2sp]]: converts magic extract files into a hierarchical spice file +
-   * [[lvp|lvp]]: layout versus production rules+
  
 External open-source tools: External open-source tools:
Line 19: 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
-   * {{ :tools:gemini-2.7.2.tar.gz |Gemini}}: netlist comparison for strict layout-versus-schematic checking+   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//. 
 +===== Expanded names ===== 
 + 
 +A concept one should be familiar with, especially when debugging and/or understanding error messages is the notion of expanded names. This is best illustrated with an example. Consider the following templated process definition: 
 +<code act> 
 +template<pint A; pbool B; pint C[A]> defproc example(...) { ... } 
 + 
 +example<1+1,true,{1,5}> e1; 
 +example<1,false,{2}> e2; 
 +</code> 
 +The type of the process defined is ''example'', but the instances ''e1'' and ''e2'' include specific template parameters. After the design is expanded and all template parameters are substituted, different variations of ''example'' are created for ''e1'' and ''e2''. These //expanded// versions of types are given different names within the ACT framework.  In particular, the expanded type for ''e1'' would be ''example<2,t,{1,5}>'' (here ''t'' is used as a stand-in for the value of the Boolean parameter ''true'').  If ''example'' did not take on any template parameters, the expanded version of the type would be named ''example<>''
 + 
 +If the template list contains multi-dimensional arrays, the expanded name contains a linear list of the parameters separated by commas.
  
-===== Common command-line options =====+===== Mangled names =====
  
-ACT tools that use the core act library all accept the following command-line options. These options should come first, before any tool-specific options: +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 third-party tool, names with such characters in them can be potentially problematicA good example of this is when exporting SPICE netlist---different versions of SPICE have different syntactic restrictions. To handle this in disciplined manner, the ACT library has the notion of a //mangled// nameA 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 wellThe 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'').
-   ''-T//techname//'': changes the technology [[config:start|configuration files]] to ''techname'' +
-   ''-D//name//=//value//'': defines the specified parameter (either a ''pbool'' or a ''pint'') as a global parameter that can then by used by the ACT file +
-   ''-cnf=//file//'': reads in the specified file as an ACT configuration file (after the default files for the specified technology) +
-   ''-W//name//:on'' or ''-W//name//:off'': turn on/off warnings. ''name'' can be: +
-      * ''empty_select'' : warn if all the guards in a selection statement in ACT are false. +
-      * ''dup_pass'' : warn if an ACT tool registers duplicate pass. +
-      * ''no_local_driver'' : warn if local variable doesn'have a driver if detected during some of the ACT analysis passes. +
-      * ''double_expand'' : warn if an ACT tool attempts to expand an already expanded ACT object. +
-      * ''lang_subst'' : warn if an ACT tool uses different language body within a process than the default choice. +
-      * ''all'' : turn on all warnings +
-   * ''-V//name//'': turn on verbose log messages in the ACT libraryCurrently ''name'' can be+
-      * ''config'' : print out absolute paths for the config files readThis goes to stderr by default +
-    * ''-log=//file//'': save log messages to the specified file +
-    * ''-lev=//level//'': set log level flags +
-    * ''-opt=//str//'': set option string for ACT ''getopt()'' API+
  
-An individual project might want to include a standard set of ACT options (e.g. -T//tech//) for all ACT tool invocations. The environment variable ''ACT_STD_CMDLINE'' can be set to the standard command-line options.+The standard name mangling prefix character is an underscoreName 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.