Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tools:start [2023/04/18 21:09] – [Tools] rajit | tools:start [2026/04/18 16:15] (current) – [Implementation and verification] rajit | ||
|---|---|---|---|
| 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, | ||
| + | The tools are in two categories: | ||
| + | - The core ACT tools--i.e. tools that use the core ACT library and take ACT files as input. They also accept the standard ACT [[: | ||
| + | - A few tools (marked with '' | ||
| + | |||
| + | Two useful concepts to keep in mind when using the ACT tools are [[intro_example: | ||
| + | |||
| + | ===== Simulation ===== | ||
| + | |||
| + | We use a combination of our own simulators as well as other open-source simulators to verify functionality of our circuits. | ||
| * [[actsim|actsim]]: | * [[actsim|actsim]]: | ||
| + | * [[prsim|prsim]]: | ||
| + | * Third-party tools: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Format converters ===== | ||
| + | |||
| + | Different VLSI tools use different file formats, and we provide a number of tools to convert between a range of file formats. These can be used to, for example, generate industry-standard formats from ACT or to import third-party designs into ACT. | ||
| + | |||
| * [[netgen|prs2net]]: | * [[netgen|prs2net]]: | ||
| * [[prs2sim|prs2sim]]: | * [[prs2sim|prs2sim]]: | ||
| * [[ext2sp|ext2sp]]: | * [[ext2sp|ext2sp]]: | ||
| - | * [[tools: | + | * [[act2lef|act2lef]]: Generate LEF/DEF from an ACT design |
| - | * [[lvp|lvp]]: layout versus | + | * [[act2v|act2v]]: Convert ACT file into a Verilog netlist. Note this is only useful for converting netlists in ACT format to Verilog format; the Verilog itself is structural, and doesn' |
| + | * [[v2act|v2act]]: Translate a Verilog netlist into an ACT file | ||
| + | * aflat and prspack: a production | ||
| - | These are core ACT tools--i.e. tools that use the core ACT library | + | ===== Implementation |
| - | Standalone | + | These are tools that are useful for translating ACT files into a final implementation in GDS, as well as verifying different aspects of the design. |
| - | * [[prsim|prsim]]: | + | |
| - | * aflat and prspack: a production rule flattener and compaction tool. See the documentation for [[prsim|prsim]]. | + | |
| - | * [[AMC: | + | |
| + | * [[.interact: | ||
| + | * [[tools: | ||
| + | * [[lvp|lvp]]: | ||
| + | * [[chp2prs|chp2prs]]: | ||
| + | * [[prs2cells|prs2cells]]: | ||
| + | * [[asic: | ||
| + | * [[AMC: | ||
| + | * [[fpga|FPGA mapping]]: tools to translate ACT into a simulation model for prototyping on standard FPGAs. | ||
| - | External open-source | + | Third-party tools: |
| - | * [[http:// | + | * [[http:// |
| - | * [[http:// | + | * Gemini: a netlist comparison for strict layout-versus-schematic checking {{: |
| - | * [[http:// | + | * [[http://opencircuitdesign.com/netgen/index.html|netgen]]: another tool for LVS |
| - | * 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. | + | ===== Miscellaneous ===== |
| - | ===== Mangled names ===== | + | The following utilities are also provided as part of the core ACT repository: |
| - | 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 ''<>'' | ||