Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
config:runtime [2023/01/30 20:31] – [ACT Runtime Configuration] rajit | config:runtime [2023/08/25 13:56] (current) – [External Black Box Support] rajit | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | === Circuit construction complexity === | + | ====== ACT Runtime Configuration ====== |
+ | |||
+ | The behavior of the core ACT library and the way an ACT file is interpreted is typically controlled by command-line options to specific tools. However, there are some common settings that can be selected using a local ACT configuration file and then passed to the ACT tool using the '' | ||
+ | |||
+ | ===== Warnings ===== | ||
+ | |||
+ | The following warnings can be turned on/off using an ACT configuration setting. They can also be adjusted via the standard act [[stdoptions: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | ===== Circuit construction complexity | ||
< | < | ||
Line 18: | Line 32: | ||
</ | </ | ||
This specifies a limit on array sizes that also have internal sub-connections (i.e. arrays that are not just simple memories, for example). The limit should be increased as needed, but can have a performance impact if you have a very large array with internal sub-connections. | This specifies a limit on array sizes that also have internal sub-connections (i.e. arrays that are not just simple memories, for example). The limit should be increased as needed, but can have a performance impact if you have a very large array with internal sub-connections. | ||
- | ====== ACT Runtime Configuration ====== | ||
- | The behavior of the core ACT library and the way an ACT file is interpreted is typically controlled by command-line options to specific tools. However, there are some common settings that can be selected using a local ACT configuration file and then passed to the ACT tool using the '' | + | ===== Attributes ===== |
- | ==== Warnings ==== | + | ACT supports attributes on both instances and production rules. An ACT instance can be assigned an attribute in the following way: |
- | The following warnings can be turned on/off using an ACT configuration setting. They can also be adjusted via the standard | + | < |
- | * '' | + | bool v @ [attr=0]; |
- | | + | bool w; |
- | | + | w @ [attr=5]; |
- | | + | </ |
- | | + | In these two examples, the signal |
+ | < | ||
+ | begin act | ||
+ | string_table instance_attr " | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | This specifies three instance attributes: '' | ||
+ | * The first component ''// | ||
+ | * The second component ''// | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''&'': | ||
+ | |||
+ | A second set of attributes can be specified per-production rule. | ||
+ | |||
+ | < | ||
+ | string_table prs_attr " | ||
+ | </ | ||
+ | The syntax for these is the same, except the attributes are applied per production rule. These attributes are interpreted by the [[tools: | ||
+ | |||
+ | |||
+ | ===== Circuit level selection ===== | ||
+ | |||
+ | ACT has a number of [[language: | ||
+ | |||
+ | A process can be described at multiple levels of abstraction. During analysis/ | ||
+ | |||
+ | The default level of abstraction that should be used is specified as follows: | ||
+ | < | ||
+ | begin level | ||
+ | # the default level: can be chp, prs, hse, or device | ||
+ | string default " | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Beyond this, the default level can be over-ridden for any specific type as follows: | ||
+ | < | ||
+ | begin level | ||
+ | begin types | ||
+ | # the list of processes here should be modeled at the device level | ||
+ | | ||
+ | |||
+ | # these should be modeled at the chp level | ||
+ | | ||
+ | |||
+ | # etc... | ||
+ | | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | Finally, individual instance levels can be specified as follows: | ||
+ | < | ||
+ | begin level | ||
+ | begin inst | ||
+ | | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Finally, ACT supports a [[language: | ||
+ | < | ||
+ | # set the initial refinement step to 4 | ||
+ | int act.refine_steps 4 | ||
+ | </ | ||
+ | If the current refinement step count is positive, then any '' | ||
+ | |||
+ | |||
+ | ===== Decomposition passes ===== | ||
+ | |||
+ | The memory decomposition and arbiter decomposition passes are used to replace memory structures and arbiters with a separate process, and introduce communication channels to interact with that process to re-create the original user-specified functionality. The process names used for this purpose can be modified using the following configuration options. The default values are provided below. | ||
+ | |||
+ | < | ||
+ | begin act | ||
+ | begin decomp | ||
+ | string mem " | ||
+ | string arbiter " | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | ===== Verilog global signal prefix ===== | ||
+ | |||
+ | Since ACT can refer to global signals, this functionality may be needed when converting ACT files into Verilog netlists. Different systems may have different ways that a user can access signals | ||
+ | |||
+ | < | ||
+ | begin act | ||
+ | string global_signal_prefix " | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | This specifies that a global signal '' | ||
+ | |||
+ | |||
+ | ===== External Black Box Support ===== | ||
+ | |||
+ | ACT also provides a mechanism for "black box" modules---components that are defined elsewhere, like external hard macros. We assume that the external specification of the macros includes: | ||
+ | * A LEF file, for layout generation, along with bounding box information in the LEF coordinate system | ||
+ | * A SPICE file, for circuit simulation | ||
+ | * A Verilog file, for Verilog exports | ||
+ | * TBD | ||
+ | |||
+ | A process is treated as a black box if it is defined with an empty body. For example: | ||
+ | |||
+ | <code act> | ||
+ | defproc bbproc (bool? A, B, C; bool! D) { } | ||
+ | </ | ||
+ | is interpreted as a black box by default. (Note that there is a configuration parameter that can be used to turn off this behavior, in which case this component will be eventually stripped out of the design since it does not contain any circuit component.) | ||
+ | |||
+ | The location of the LEF/ | ||
+ | |||
+ | < | ||
+ | begin macros | ||
+ | begin < | ||
+ | string lef " | ||
+ | string spice " | ||
+ | string verilog " | ||
+ | int llx <val> | ||
+ | int lly <val> | ||
+ | int urx <val> | ||
+ | int ury <val> | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | The expanded name is the fully expanded name for the process (in this case '' | ||
+ | |||
+ | ==== Generalized External Black Box ==== | ||
+ | |||
+ | Sometimes we require a more sophisticated model for an external black box. In particular, we might want to specify internal nodes within the black box so that the timing model for the black box can be made more precise. For this purpose, a more general black box syntax is supported. | ||
+ | |||
+ | <code act> | ||
+ | defproc bbproc (bool? A, B, C; bool! D) { bool int1, int2; } | ||
+ | </ | ||
+ | This process will also be treated as a black box, but with the understanding that there are also internal nodes that might be used to build a more sophisticated timing model. | ||
+ | A generalized black box body can only contain instances of signals that are of type '' |