Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
tools:start [2022/05/15 14:03] rajit |
tools:start [2023/04/18 17:09] 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, | 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, | ||
- | * [[prsim|prsim]]: | + | |
- | * [[actsim|actsim]]: | + | * [[actsim|actsim]]: |
* [[netgen|prs2net]]: | * [[netgen|prs2net]]: | ||
* [[prs2sim|prs2sim]]: | * [[prs2sim|prs2sim]]: | ||
- | | + | |
+ | | ||
+ | * [[lvp|lvp]]: | ||
- | Of these tools, '' | + | 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 [[: |
Standalone tools: | Standalone tools: | ||
+ | * [[prsim|prsim]]: | ||
+ | * aflat and prspack: a production rule flattener and compaction tool. See the documentation for [[prsim|prsim]]. | ||
* [[AMC: | * [[AMC: | ||
- | * [[ext2sp|ext2sp]]: | + | |
- | * [[lvp|lvp]]: | + | |
External open-source tools: | External open-source tools: | ||
Line 22: | Line 25: | ||
* Gemini: a netlist comparison for strict layout-versus-schematic checking {{: | * Gemini: a netlist comparison for strict layout-versus-schematic checking {{: | ||
+ | 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< | ||
+ | |||
+ | example< | ||
+ | example< | ||
+ | </ | ||
+ | The type of the process defined is '' | ||
+ | |||
+ | If the template list contains multi-dimensional arrays, the expanded name contains a linear list of the parameters separated by commas. | ||
+ | |||
+ | ===== Mangled names ===== | ||
+ | |||
+ | Expanded ACT type names can contain characters like ''<'','' | ||
+ | |||
+ | The standard name mangling prefix character is an underscore. Name mangling operates character-by-character as follows: | ||
+ | | ||
+ | * A character that is not in the mangle string is a pass-through, | ||
+ | * 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 ''<>'' |