Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
config:start [2019/04/21 22:01] – [Specification directives] rajitconfig:start [2025/06/05 09:58] (current) rajit
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 27: Line 32:
 </code> </code>
 Here the variable is an array (a.k.a. table) that corresponds to the space-separated list of values. Here the variable is an array (a.k.a. table) that corresponds to the space-separated list of values.
 +
 +<code>
 +int_tablex <var> values
 +real_tablex <var> values
 +string_tablex <var> values
 +</code>
 +Here the variable is an array (a.k.a. table) as before, but the values are appended to the existing table; i.e. the table is extended.
  
 <code> <code>
Line 38: Line 50:
 Drops the last prefix Drops the last prefix
  
- +In additionstrings in a configuration file can use environment variablesThe syntax for this is shown below:
-Finallya ''#'' in the first column can be used for comments (upto the end of line). +
- +
- +
- +
-===== Technology-independent configuration ===== +
- +
-==== Generic ==== +
 <code> <code>
-begin act +string my_test_path "test/${ENV_VAR}/foo"
- +
-int max_recurse_depth 1000 +
-int max_loop_iterations 1000 +
- +
-end+
 </code> </code>
-These two parameters control the expansion/elaboration phase of ACTACT language constructs +The environment variable ''ENV_VAR'' is substituted for ''${ENV_VAR}''If the environment variable doesn't existthen the string ''${ENV_VAR}'' remains as-is.
-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 
-string mangle_chars ".:()<>[],{}"" 
-end 
-</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//. 
  
-==== Devices ==== +Finally, a ''#'' in the first column can be used for comments (upto the end of line).
- +
-In most technologiescircuits can be implemented with devices of different types. In CMOS, n-type and p-type transistors come in number of flavors. Common flavors include standard threshold voltage, low threshold voltage, and high threshold voltage for core circuits. Special transistors can also exist that support higher voltages (typically used for I/O devices). Instead of building in these concepts into the library implementation, ACT permits flavor annotations in the circuit description. For example, an inverter with a low threshold voltage transistor implementation would be: +
- +
-<code> +
-prs { +
-   in <10,lvt> -> out- +
-  ~in <20,lvt> -> out+ +
-+
-</code> +
- +
-Here ''lvt'' is the transistor //flavor//. The list of valid flavors are specified in the ACT library: +
- +
-<code> +
-begin act +
-string_table dev_flavors "svt" "lvt" "hvt" +
-end  +
-</code> +
- +
-The first flavor in the list (''svt'' in the example) is the default value if the flavor is unspecified. This means that +
-<code> +
-prs { +
-   in <10,lvt> -> out- +
-  ~in <20> -> out+ +
-+
-</code> +
-would use ''lvt'' for the ''in'' input to the pull-down network, but ''svt'' for the other devices needed. +
- +
-==== Specification directives ==== +
- +
-The ''spec'' language body can contain a list of directives associated with Booleans. The list of these directives is contained in the ACT configuration file: +
- +
-<code> +
-begin act +
-string_table spec_types "exclhi" "excllo" "mk_exclhi" "mk_excllo" +
-end +
-</code> +
- +
-These directives can be added as new tools that developed that might want additional information from the design. An example of using a directive is shown below: +
-<code> +
-bool a, b; +
-bool x[10]; +
-spec { +
-   exclhi(a,b) +
-   excllo(x)   // this is excllo(x[0],x[1],...,x[9]) +
-+
-</code> +
- +
-==== Attributes ==== +
- +
- +
- +
-===== Technology-specific configuration =====+
  
 +===== The configuration files =====
  
 +There are a number of different configuration files used by a technology. 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:
  
 +  * ''global.conf'': [[config:generic|general]] configuration information for a technology.
 +  * ''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.
 +  * ''expropt.conf'': [[config:expropt|expression optimization]] configuration, used to run external logic synthesis tools for translating Boolean and integer expressions into logic gates.
 +  * ''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''
  
 +Any configuration parameter can be over-ridden by using the ''-cnf=<file.conf>'' command-line option that is supposed by any ACT tool. While most technology-specific options are unlikely to need to be overridden,
 +others (e.g. warnings, definitions of macros) may need [[config:runtime|user customization]].