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 | ||
config:runtime [2023/01/30 15:31] rajit [ACT Runtime Configuration] |
config:runtime [2023/04/04 16:00] rajit [External Black Box Support] |
||
---|---|---|---|
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 | + | <code act> |
- | | + | bool v @ [attr=0]; |
- | * '' | + | bool w; |
- | * '' | + | w @ [attr=5]; |
- | | + | </ |
- | * '' | + | In these two examples, the signal '' |
+ | |||
+ | < | ||
+ | begin act | ||
+ | string_table instance_attr "i:s: | ||
+ | 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 "std:: | ||
+ | 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. | ||
+ | |||
+ | The location of the LEF/ | ||
+ | |||
+ | < | ||
+ | begin macros | ||
+ | begin < | ||
+ | string lef " | ||
+ | string spice " | ||
+ | string verilog " | ||
+ | int llx < | ||
+ | int lly < | ||
+ | int urx < | ||
+ | int ury < | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | The expanded name is the fully expanded name for the process (in this case '' | ||