Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
config:netlist [2022/02/23 17:41] rajit [Miscellaneous] |
config:netlist [2023/04/15 07:25] rajit [Device generation and parameters] |
||
---|---|---|---|
Line 10: | Line 10: | ||
This is the scale factor used to convert to metric units from the dimensionless transistor sizes. | This is the scale factor used to convert to metric units from the dimensionless transistor sizes. | ||
- | ===== Transistor | + | ===== Device |
< | < | ||
Line 45: | Line 45: | ||
int fold_nfet_width 0 | int fold_nfet_width 0 | ||
</ | </ | ||
- | This is used as a width threshold to trigger folding of transistors (0 = no folding). Extra fingers are automatically generated with this option. If a transistor has width W that is larger than the folding threshold F, then (W div F) transistors of width F are generated. If (W mod F) is smaller than the minimum width, then the extra width is added to the last of the (W div F) transistors; | + | This is used as a width threshold to trigger folding of transistors (0 = no auto folding). Extra fingers are automatically generated with this option. |
+ | If a transistor has width W that is larger than the folding threshold F, then (W div F) transistors of width F are generated. If (W mod F) is smaller than the minimum width, then the extra width is added to the last of the (W div F) transistors; | ||
Line 52: | Line 53: | ||
int discrete_length 2 | int discrete_length 2 | ||
</ | </ | ||
- | This specifies that all transistor lengths should be 2 lambda. In the scenario when the netlist requires a longer transistor (e.g. weak feedback in a staticizer), | + | This specifies that all transistor lengths should be 2 lambda. In the scenario when the netlist requires a longer transistor (e.g. weak feedback in a staticizer), |
A technology may have only some length ranges that are valid for transistors. In this case, the '' | A technology may have only some length ranges that are valid for transistors. In this case, the '' | ||
Line 91: | Line 92: | ||
</ | </ | ||
If specified, this parameter is used to increase the length of minimum length transistors in the technology when the sizing directives or production rule body turn on this feature. This is used to reduce leakage in certain technologies where the minimum length devices are extremely leaky, and need to be drawn longer in some cases. | If specified, this parameter is used to increase the length of minimum length transistors in the technology when the sizing directives or production rule body turn on this feature. This is used to reduce leakage in certain technologies where the minimum length devices are extremely leaky, and need to be drawn longer in some cases. | ||
+ | |||
< | < | ||
- | real delay 500e-12 | + | real default_load_cap 0 |
</ | </ | ||
- | This parameter | + | This value (in fF) is added to a node whenever it appears on the RHS of a production rule (per subcircuit). This can be used to " |
+ | < | ||
+ | real unit_cap 1e-15 | ||
+ | </ | ||
+ | This value is used to specify the size of the unit capacitor used for explicit capacitors specified in the '' | ||
+ | |||
+ | < | ||
+ | real delay 500e-12 | ||
+ | </ | ||
+ | This parameter is used to convert delay units specified in timing constraints to actual time (in seconds). If unspecified, | ||
< | < | ||
Line 103: | Line 114: | ||
In some process technologies, | In some process technologies, | ||
scaled to counteract the global scale factor. '' | scaled to counteract the global scale factor. '' | ||
+ | |||
+ | < | ||
+ | int emit_parasitics 0 | ||
+ | </ | ||
+ | This option is used to generate parasitic source/ | ||
+ | |||
+ | |||
+ | |||
+ | The netlist pass can be used to generate a [[https:// | ||
+ | < | ||
+ | int_table weak_sharing 2 8 | ||
+ | </ | ||
+ | This specifies that the sharing count for a weak supply is between two and eight staticizers. | ||
+ | |||
===== Transistor device names ===== | ===== Transistor device names ===== | ||
Line 124: | Line 149: | ||
string pfet_svt " | string pfet_svt " | ||
</ | </ | ||
- | Here the fet model names are " | + | Here the fet model names are " |
+ | The '' | ||
< | < | ||
int use_subckt_models 0 | int use_subckt_models 0 | ||
Line 131: | Line 157: | ||
The default is a '' | The default is a '' | ||
- | Some DRC/LVS decks require some additional parameters for transistors in the spice file. To support this, the following string is appended to any transistor line in the spice file. | ||
< | < | ||
- | string extra_fet_string "" | + | int swap_source_drain 0 |
</ | </ | ||
- | The default is blank, but it can be changed as necessary. | + | Depending on how a spice netlist needs to be used, it can be convenient to swap the source and drain nodes for all the transistors from the '' |
< | < | ||
- | int swap_source_drain 0 | + | int fin_width 4 |
</ | </ | ||
- | Depending on how a spice netlist | + | This specifies that the netlist |
+ | |||
+ | Some DRC/LVS decks require some additional parameters for transistors in the spice file. To support this, the following string is appended to any transistor line in the spice file. | ||
+ | < | ||
+ | string extra_fet_string "" | ||
+ | </ | ||
+ | The default | ||
+ | |||
+ | ===== Interactions with the layout editor Magic ===== | ||
+ | We typically use [[http:// | ||
< | < | ||
Line 148: | Line 182: | ||
string_table ext_map " | string_table ext_map " | ||
</ | </ | ||
- | These tables are used for interpreting '' | + | The first line maps the extract file device types to nfet or pfet (for n-type and p-type transistors). The order of this table should |
===== Miscellaneous ===== | ===== Miscellaneous ===== | ||
- | |||
- | |||
- | < | ||
- | real default_load_cap 0 | ||
- | </ | ||
- | This value (in fF) is added to a node whenever it appears on the RHS of a production rule (per subcircuit). This can be used to " | ||
< | < | ||
Line 177: | Line 205: | ||
</ | </ | ||
If the generated circuit has more than the specified number of series transistors, | If the generated circuit has more than the specified number of series transistors, | ||
+ | |||
+ | < | ||
+ | string cell_namespace " | ||
+ | </ | ||
+ | During production rule to cell mapping, the cells are all assumed to reside in a single namespace. This parameter specifies the name of this namespace. | ||
+ | |||
+ | < | ||
+ | string_table cell_namemap " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | When production rules are automatically mapped to cells by the cell mapping pass, cell names are generated based on the production rule expressions for the pull-up and pull-down network. These names can get very long, and be difficult to read. This table is used to translate a generated name into something that is more understandable. The table should have an even number of entries that alternate between the generated name and the mapped name. | ||
====== Sizing configuration options ====== | ====== Sizing configuration options ====== | ||
Line 197: | Line 238: | ||
If this is turned on, this permits the use of long channel devices when applying the sizing body. This might be needed if the width/ | If this is turned on, this permits the use of long channel devices when applying the sizing body. This might be needed if the width/ | ||
- | + | ===== Sizing limits ===== | |
- | ====== Sizing limits | + | |
Internally, act maintains width and lengths of transistors as integer-valued variables that are a multiple of the manufacturing grid. Hence, if the ratio of lambda/ | Internally, act maintains width and lengths of transistors as integer-valued variables that are a multiple of the manufacturing grid. Hence, if the ratio of lambda/ | ||
Line 233: | Line 273: | ||
</ | </ | ||
This specifies which metal layer is horizontal versus vertical. If this is 1, then odd metal layers are horizontal (metal1, metal3, etc); otherwise even metal layers are horizontal (metal2, metal4, ...) | This specifies which metal layer is horizontal versus vertical. If this is 1, then odd metal layers are horizontal (metal1, metal3, etc); otherwise even metal layers are horizontal (metal2, metal4, ...) | ||
+ | |||
+ | < | ||
+ | int_table routing_metal 2 5 | ||
+ | </ | ||
+ | This specifies the metal layers to be used for routing, and is used to control this in the technology LEF that is generated from the layout configuration file. (Metal layers are numbered 1, 2, etc.) | ||
< | < | ||
Line 244: | Line 289: | ||
If this is set to 1, and local '' | If this is set to 1, and local '' | ||
+ | < | ||
+ | string rect_inpath " | ||
+ | string rect_outdir " | ||
+ | </ | ||
+ | These two parameters are used to control the search path for '' | ||
+ | |||
+ | < | ||
+ | int rect_wells 0 | ||
+ | </ | ||
+ | This flag is used to generate explicit wells in the '' | ||
+ | |||
+ | < | ||
+ | begin extra_tracks | ||
+ | int top 0 | ||
+ | int bot 0 | ||
+ | int left 0 | ||
+ | int right 0 | ||
+ | end | ||
+ | </ | ||
+ | This parameter can be used to pad the generated cells on the top/ | ||
< | < |