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 Both sides next revision
tools:start [2023/04/07 08:56]
rajit [Tools]
tools:start [2023/04/07 08:59]
rajit [Mangled names]
Line 40: Line 40:
 ===== 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.