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.
Append to list of paths for searching for configuration files, exactly like the -I command-line option. Reminder: paths are comma-separated.
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.
Technology-dependent scaling factor for device lengths and widths, the multiplier factor applied to lengths and widths specified in PRS. Default: 1.0
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)
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)
Default width (in lambda) for NFETs used in logic, where unspecified.
Default width (in lambda) for PFETs used in logic, where unspecified.
Default length (in lambda) for NFETs used in logic, where unspecified.
Default length (in lambda) for PFETs used in logic, where unspecified.
Default width (in lambda) for NFETs used in keepers (staticizers), where unspecified.
Default width (in lambda) for PFETs used in keepers (staticizers), where unspecified.
Default length (in lambda) for NFETs used in keepers (staticizers), where unspecified.
Default length (in lambda) for PFETs used in keepers (staticizers), where unspecified.
The following options are related to transistor parasitics.
If set to 1, include source and drain area and perimeter parameters for every transistor Default: 0
When computing parasitics, this is the length of diffusion overhang past the end of the drawn transistor, in lambda. Default: 6.0
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).
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
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
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
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
String to print before emitting a continued line. Default: (none)
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.
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.
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: .
String used to separate members of datatype and channel instances. Default: .
Mangle the `]' character with a replacement string.
Mangle the `<>' sequence with a replacement string. This is applied before < and > are mangled.
Mangle the `,' character with a replacement string.
Mangle the `{' character with a replacement string.
Mangle the `}' character with a replacement string.