Netlists
A schematic is a graphical display of an electrical circuit. It is designed in a way that it is easy understandable with the human eyes. It is not designed to be easy readable for machines and computer software. So most electrical simulator can not work with graphical schematics and need a text based netlist as input. A netlist concentrates all relevant information of a schematic as a simple text. A wide range of different netlist formats exists. There is non general standard format supported by any tools. But most simulators support a handfull different netlist formats.
Generating Netlists
A text based netlists can automaticly created from a graphical schematic. Once the setup is done a netlist generation from a schematic can be simply done by using the SaveAs feature. Alternative the generated netlist can be displayed in the include TextEditor by calling the related menu entry. The SchematicEditor comes with a setup for some common netlist formats. So a netlist can be generated without a setup, however some smaller adjustments are often required. To perform these adjustments you need to understand the way the netlist is generated.
A netlist concentrates all relevant information of a schematic. This includes a description of its components and how the components are connected. Netlist for simulations also includes information what and how to simulate. So the first step for a netlist generation is the extraction of a list with all components and its connections. These information will be added to a netlist template in a formal way. All existing templates for different netlist formats can be viewed and edited via the SetupDialog. New formats can simply be added. A typical netlist template look like this:
*spice $filename export from LayoutEditor $groundnode(0) *start of netlist $netlist(spice) *end of netlist *required models $model(spice)
The formal netlist generation works this way: Any expression from the template definition is passed to the resulting netlist. Expressions starting with a '$' will be replaced. e.g $filename will be replace by the file name from which the netlist was extracted. $netlist(name) will be replaced by a list of all components in the schematic. The output with name is used for each component. Expression containing a '$' in that component output will be replaced as well. So that the above shown definition may result in a netlist like this:
*spice layout/example/doubler/doubler.les export from LayoutEditor *start of netlist XU3 VSS VDD 2 4 INV_X1 XU2 VSS VDD 3 2 INV_X1 XU1 VSS VDD IN 3 INV_X1 XU4 VSS VDD IN 4 OUT AND2_X1 *end of netlist *required models .include layout/library/openCellLibrary/spicemodel.sp
The component specific netlist information is stored with each component. With the EditComponent feature you can define unlimited different netlist information for any component. The information is splited into the pure netlist information which is listed once for each component in the schematic and a model information which is listed once for each type of the component. Exporting the netlist is done via the save as feature in the schematic or can be viewed by a menu point in the utilities menu. The netlist body is defined in the setup dialog of the LayoutEditor.
An overview of all supported expression in a netlist:
|
global parameters: |
||
$groundnode(name) |
|
how the ground node will be named. If not defined, 0 is used |
|
$model(type) |
|
all models of the current sheet for type, which will be generated from the component data of all used components. The souce for this data can be set with the EditComponent feature. Identical models in the component data will only be added once. If the model section in the component data for this type is empty no data will be added to the netlist. |
|
$netlist(type) |
|
netlist of the current sheet for type, which will be generated from the component data of all used components. The souce for this data can be set with the EditComponent feature. For each component placement the data is added. If the netlist section in the component data for this type is empty no data will be added to the netlist. |
|
$filename |
|
filename |
|
$notEmpty(expression;value) |
|
value is printed, if expression is not empty |
|
$empty(expression;value) |
|
value is printed, if expression is empty |
|
$LTSpiceLib |
|
The path to the shipped LTspice library folder on the current system is displayed. An empty string is return when the library is not found. (introduced with version 20141015) |
|
|
sheet specific: |
||
$nodes(format[;separator]) |
|
output all nodes of this sheet. The seperator is optional. |
|
$internalnodes(format[;separator]) |
|
output all nodes of this sheet, which are not connected with a port. The seperator is optional. (introduced with version 20140920) |
|
$ports(format[;separator]) |
|
output non global ports of this sheet.The seperator is optional. |
|
$allports(format[;separator]) |
|
output all ports of this sheet. The seperator is optional. |
|
$globalports(format[;separator]) |
|
output all global ports of this sheet. The seperator is optional. |
|
$sheetname |
|
name of the sheet |
|
|
port/node specific: |
||
$nodeName |
|
the name of the node |
|
$nodeNum |
|
unique node number |
|
$portType |
|
type of the port |
|
$portTypeVHDL |
|
type of the port in VHDL notation |
|
$portTypeVerilog |
|
type of the port in Verilog notation |
|
|
component specific: |
||
$parameters(format) |
|
output all component parameter in that format $parametername and $parametervalue can be used |
|
$node(port) |
|
node name which is connected with port |
|
$devicename |
|
devicename |
|
$name_of_the_parameter |
|
value of "name_of_the_parameter" |
|
$parametername_num |
|
name of the parameter in position 'num' |
|
$librarypath |
|
path of the library the component belongs to |
|
$sci(name_of_parameter) |
|
scientific notation of the parameter, units will be removed e.g. a 1.1MOhm will output a 1.1E6 (introduced with version 20140921) |
|
$eng(name_of_parameter) |
|
engineering notation of the parameter, units will be remove e.g. a 1.1e6Ohm will output 1.1M (introduced with version 20140921) |
|
$addspace(name_of_parameter) |
|
add an space after any number, e.g 1.1M will replace by 1.1 M (introduced with version 20120824) |
|
|
command chars: |
||
$commandChar(port) |
|
set the command char, changes the $ |
|
$parameterStartChar |
|
changes the parameter start char |
|
$parameterEndChar |
|
changes the parameter end char |
|
$parameterSeparationChar |
|
changes the parameter seraration char |
Example
with modified command chars:
$commandChar(@) @parameterStartChar({) @parameterEndChar{}) @parameterSeparationChar{:} *new command will look @netlist{spice} *no longer working: $netlist(spice)
See also