Previous: Option Summary, Up: Usage



2.2 Configuration Options

There are two ways to pass configuration options to hacknet. One is through the -f option on the command-line, the other way is to pass them in through a configuration file with the -c option. The option value specifications share the same syntax: key=values where values can be blank, a single value, or a comma-separated list of values. A key-value specifier is not permitted to have spaces in the string! The values themselves cannot contain comma characters.

In a configuration file, blank lines are ignored, as well as lines that begin with # (pound). Where boolean values are expected, pass 0 for false, or 1 for true.

The following parameters are used to manage distributed configuration files. This allows one to create incrementally different configurations.

— User Option: config_path paths

Append to list of paths for searching for configuration files, exactly like the -I command-line option. Reminder: paths are comma-separated.

— User Option: config_file files
— User Option: config_file_compat files

Import other configuration file(s), exactly like the -c and -C command-line options. File are searched using the configuration search path. The _compat variation processes old-style configuration files.

The following parameters affect emitted device sizes and units.

— User Option: lambda (real)

Technology-dependent scaling factor for device lengths and widths, the multiplier factor applied to lengths and widths specified in PRS. Default: 1.0

— User Option: length_unit (string)

Suffix-string to append to emitted length and width parameters. Can be a unit such as "u" or "n", or exponent such as "e-6" or "e-9". Default: u (micron)

— User Option: area_unit (string)

Suffix-string to append to emitted area valiues. Can be a unit such as "p" (for pico), or exponent such as "e-6" or "e-12". Alert: this must be set consistently with respect to length_unit. Default: p (pico, micron-squared)

— User Option: std_n_width (real)

Default width (in lambda) for NFETs used in logic, where unspecified.

— User Option: std_p_width (real)

Default width (in lambda) for PFETs used in logic, where unspecified.

— User Option: std_n_length (real)

Default length (in lambda) for NFETs used in logic, where unspecified.

— User Option: std_p_length (real)

Default length (in lambda) for PFETs used in logic, where unspecified.

— User Option: stat_n_width (real)

Default width (in lambda) for NFETs used in keepers (staticizers), where unspecified.

— User Option: stat_p_width (real)

Default width (in lambda) for PFETs used in keepers (staticizers), where unspecified.

— User Option: stat_n_length (real)

Default length (in lambda) for NFETs used in keepers (staticizers), where unspecified.

— User Option: stat_p_length (real)

Default length (in lambda) for PFETs used in keepers (staticizers), where unspecified.

— User Option: min_width (real)

Minimum transistor width in lambda.

— User Option: min_length (real)

Minimum transistor length in lambda.

— User Option: max_p_width (real)

Maximum PFET width.

— User Option: max_n_width (real)

Maximum NFET width.

The following options are related to transistor parasitics.

— User Option: emit_parasitics (bool)

If set to 1, include source and drain area and perimeter parameters for every transistor Default: 0

— User Option: fet_diff_overhang (real)

When computing parasitics, this is the length of diffusion overhang past the end of the drawn transistor, in lambda. Default: 6.0

— User Option: fet_spacing_diffonly (real)

When computing parasitics, this is the length of diffusion between adjoining transistors, in lambda. Default: 4.0

hacknet provides several options for formatting the emitted output (because not all SPICEs are created alike).

— User Option: emit_top (bool)

If set to 1, include the top-level instances in the netlist output. Setting this to 0 is useful for producing a library of subcircuit definitions for every type that was instantiated, recursively w.r.t dependencies. Default: 1

— User Option: nested_subcircuits (bool)

If this option is set to 1, then emit local subcircuits as nested definitions within their used definitions. Not sure which variants of SPICE support this. Default: 0

— User Option: empty_subcircuits (bool)

If this option is set to 1, then emit empty subcircuits, i.e. subcircuits with no devices. Probably want to force unused port nodes to be emitted in empty subcircuit definitions, option unused_ports. Default: 0

— User Option: unused_ports (bool)

If this option is set to 1, then consider all ports used even if they are unconnected, for the purposes of emitting port lists. This is useful empty_subcircuits, which would result in subcircuits with no ports. Default: 0

— User Option: pre_line_continue (string)

String to print before emitting a continued line. Default: (none)

— User Option: post_line_continue (string)

String to print after emitting a continued line. Default: +

The following options are used for name mangling type-names and instance-names. By default, no mangling is done to keep the output (more) human-readable.

— User Option: mangle_underscore (string)

Substitute the `_' (underscore) character with another string, which may contain more underscores. Alert: It is essential to set this appropriately if underscores are to be used in other mangling replacement strings.

— User Option: mangle_process_member_separator (char)

String used to separate members of process instances. e.g., the `.' in `a.b' usually denotes that b is a member of typeof(a). Default: .

— User Option: mangle_struct_member_separator (char)

String used to separate members of datatype and channel instances. Default: .

— User Option: mangle_array_index_open (string)

Mangle the `[' character with a replacement string.

— User Option: mangle_array_index_close (string)

Mangle the `]' character with a replacement string.

— User Option: mangle_template_open (string)

Mangle the `<' character with a replacement string.

— User Option: mangle_template_close (string)

Mangle the `>' character with a replacement string.

— User Option: mangle_template_empty (string)

Mangle the `<>' sequence with a replacement string. This is applied before < and > are mangled.

— User Option: mangle_parameter_separator (string)

Mangle the `,' character with a replacement string.

— User Option: mangle_parameter_group_open (string)

Mangle the `{' character with a replacement string.

— User Option: mangle_parameter_group_close (string)

Mangle the `}' character with a replacement string.

— User Option: mangle_scope (string)

Mangle the `::' sequence with a replacement string. This is applied before : is mangled.

— User Option: mangle_colon (string)

Mangle the `:' character with a replacement string.

— User Option: mangle_internal_at (string)

Mangle the `@' character with a replacement string.

— User Option: mangle_auxiliary_pound (string)

Mangle the `#' character with a replacement string.