====== ACT Configuration Files ======
There are a number of language features as well as tools that require some combination of
technology-independent and technology-dependent information. ACT provides a unified configuration file format that can be used to specify this information. This file is automatically read in when the library is initialized through a call to ''Act::Init()''. The call should be the first one before any ACT library functions are invoked, and looks like this:
Act::Init(&argc, &argv);
where ''argc'' and ''argv'' are the usual command-line option parameters to ''main()''. This invocation reads in the ACT configuration file as well. Technology-specific information can be specified using the ''-T'' command-line option.
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 =====
The configuration file is a simple line-based text file. An example (''global.conf'') can be found in the ''act/'' directory.
int value
string value
real value
Specifies that the variable is assigned the specified value.
int_table values
real_table values
string_table values
Here the variable is an array (a.k.a. table) that corresponds to the space-separated list of values.
int_tablex values
real_tablex values
string_tablex values
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.
begin name
Appends ''name.'' to all names that follow.
end
Drops the last prefix
In addition, strings in a configuration file can use environment variables. The syntax for this is shown below:
string my_test_path "test/${ENV_VAR}/foo"
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.
Finally, a ''#'' in the first column can be used for comments (upto the end of line).
===== 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 "" TT''
Any configuration parameter can be over-ridden by using the ''-cnf='' 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]].