Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:start [2025/05/20 11:51] – [Mangled names] rajittools:start [2025/10/08 14:49] (current) rajit
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
 +   * [[pgen|pgen]]: a parser generator used to emit the ACT parser. Used internally.
    * [[tools:layout:|Layout generation]]    * [[tools:layout:|Layout generation]]
    * [[lvp|lvp]]: layout versus production rules    * [[lvp|lvp]]: layout versus production rules
Line 35: Line 36:
       * [[http://opencircuitdesign.com/netgen/index.html|netgen]]: another tool for LVS       * [[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 [[intro_example:name_mangling|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. +