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
Previous revision
config:start [2019/04/21 18:01]
rajit [Specification directives]
config:start [2023/06/25 11:14] (current)
rajit [Generic configuration settings]
Line 9: Line 9:
  
 We separate out the technology-specific and technology-independent information, because often technology-specific information requires complex legal arrangements, non-disclosure agreements, etc. and cannot be freely distributed. We separate out the technology-specific and technology-independent information, because often technology-specific information requires complex legal arrangements, non-disclosure agreements, etc. and cannot be freely distributed.
 +
 +===== Configuration file location =====
 +
 +Configuration files are located in the ''$ACT_HOME/conf'' directory. The default configuration is installed in the ''generic/'' directory. Technology-specific configuration files should be placed in ''$ACT_HOME/conf/techname'', and can be selected by using ''-Ttechname'' as the first command-line option. If an absolute path name is specified for the technology, then that path is used as the directory for configuration files. Configuration files located in the current directory will take precedence over those in the default configuration location.
 +
  
 ===== Configuration file format ===== ===== Configuration file format =====
Line 37: Line 42:
 </code> </code>
 Drops the last prefix Drops the last prefix
 +
 +In addition, strings in a configuration file can use environment variables. The syntax for this is shown below:
 +<code>
 +string my_test_path "test/${ENV_VAR}/foo"
 +</code>
 +The environment variable ''ENV_VAR'' is substituted for ''${ENV_VAR}''. If the environment variable doesn't exist, then the string ''${ENV_VAR}'' remains as-is.
  
  
Line 45: Line 56:
 ===== Technology-independent configuration ===== ===== Technology-independent configuration =====
  
-==== Generic ====+Technology-independent configuration is stored in ''global.conf''. This file contains information that doesn't depend on the details of the technology provided by the foundry. The only item here that could be viewed as technology-specific corresponds to the transistor flavors supported (i.e. different thresholds, I/O transistors, etc). We normally use a fixed set of names for these transistor flavors in the ACT file, independent of technology. The standard flavors we tend to use are: 
 +   * ''svt'' : standard threshold voltage, the default transistor flavor 
 +   * ''lvt'' : low threshold voltage 
 +   * ''hvt'' : high threshold voltage 
 + 
 +Other common names are: 
 +   * ''od25'': I/O device for 2.5V 
 +   * ''od18'': I/O device for 1.8V 
 + 
 +==== Generic configuration settings ==== 
 + 
 +These settings have to do with various options that can impact ACT circuit construction and output generation. 
 + 
 +=== Circuit construction complexity ===
  
 <code> <code>
Line 57: Line 81:
 These two parameters control the expansion/elaboration phase of ACT. ACT language constructs These two parameters control the expansion/elaboration phase of ACT. ACT language constructs
 include while loops, as well as recursive circuit constructions. To ensure that the ACT expansion phase will always terminate (albeit with an error), these two parameters control the maximum depth of recursive expansions as well as the maximum number of iterations of a while loop. include while loops, as well as recursive circuit constructions. To ensure that the ACT expansion phase will always terminate (albeit with an error), these two parameters control the maximum depth of recursive expansions as well as the maximum number of iterations of a while loop.
 +
 +<code>
 +begin act
 +int subconnection_limit 16384
 +end
 +</code>
 +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.
 +
 +=== Warnings ===
 +
 +The following warnings can be turned on/off using an ACT configuration setting. They can also be adjusted via the standard act [[stdoptions:start|command-line options]]. These are integer ACT configuration variables that should be set to either zero (turn off warning) or one (turn on warning).
 +   * ''act.warn.empty_select'': warn if all the guards in a selection statement in ACT (the core language, not the CHP/HSE sub-language) are false.
 +   * ''act.warn.double_expand'': warn if an ACT tool attempts to expand an already expanded ACT object.
 +   * ''act.warn.no_local_driver'': warn if a local variable doesn't have a driver if detected during some of the ACT analysis passes.
 +   * ''act.warn.dup_pass'': warn if an ACT tool registers a duplicate pass.
 +   * ''act.warn.lang_subst'': warn if an ACT tool uses a different language body within a process than the default choice.
 +
 +
 +=== Output generation and name mangling ===
  
 <code> <code>
Line 63: Line 106:
 end end
 </code> </code>
-Sometimes it is useful to export files from the ACT format to other formats to interact with external tools. Examples of such formats include Verilog and SPICE. Since these are different languages, they use different syntax for identifiers. (Different commercial SPICE simulators use different identifier syntax too.) ACT identifiers and names include characters including ''['', '']'', ''.'', ''<'', ''>'' (among others). The ACT library provides a generic //name mangling// feature that can be used to convert them into identifiers that only use alphanumeric characters (i.e. basic C-style identifiers). The ''mangle_chars'' string specifies which characters should be //mangled//.+Sometimes it is useful to export files from the ACT format to other formats to interact with external tools. Examples of such formats include Verilog and SPICE. Since these are different languages, they use different syntax for identifiers. (Different commercial SPICE simulators use different identifier syntax too.) ACT identifiers and names include characters including ''['', '']'', ''.'', ''<'', ''>'' (among others). The ACT library provides a generic //name mangling// feature that can be used to convert them into identifiers that only use alphanumeric characters (i.e. basic C-style identifiers). The ''mangle_chars'' string specifies which characters should be //mangled//Up to 36 characters can be mangled. By default, the ''_'' character is used to mangle characters.  
 + 
 +<code> 
 +begin act 
 +string mangle_letter "_" 
 +end 
 +</code> 
 +If the mangle character needs to be changed, then a different character can be set by modifying the ''mangle_letter'' setting. 
 + 
 +<code> 
 +begin act 
 +  int output_window_width 72 
 +end 
 +</code> 
 +For tools that use pretty-printing, this sets the output window width for a line break. 
 + 
  
 ==== Devices ==== ==== Devices ====
Line 119: Line 178:
 ===== Technology-specific configuration ===== ===== Technology-specific configuration =====
  
 +The bulk of the configuration options are technology-specific. These are used to convert a technology-independent ACT description into a technology-specific output (e.g. a SPICE netlist). The standard set of configuration files we expect are:
  
- +   * ''prs2net.conf'': [[config:netlist|netlist]] generation configuration file, used to translate gate-level descriptions with abstract sizing into a transistor-level netlist. 
 +   * ''layout.conf'': [[config:layout|Layout]] generation from netlist. 
 +   * ''lint.conf'': [[config:lint|linting]] configuration for analyzing SPICE simulation traces. 
 +   * ''models.sp'': In the standard technology configuration directory, the file ''models.sp'' should exist if mixed-signal and analog modeling is to be used. This particular file should include the SPICE commands necessary to include all the device models needed for simulation. This is typically a single line of the form ''.lib "<path-to-models>" TT''