the fair gds editor NetlistGeneration
Please Sign in

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:
(extended with version 20120531)

$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:
(extended with version 20140920)

$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:
(introduced with version 20120531)

$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


CategoryTutorial CategoryFileFormatOther


NetlistGeneration (last edited 2014-10-15 11:32:56 by JurgenThies)