Netlist String Syntax

The general form for a netlist string is:

<Simulator>Netlist=[netlist_string]

where

<Simulator> is Nexxim | Planar EM | Q3D | etc.

The netlist string may contain the following netlist property syntax:

%<terminal index, 0-based>

Which specifies the name of the net connected to terminal index. A syntax error results if the terminal index is not a positive number, within range. Example:

%0, %1

%_<internal node index, 0-based>

Create a unique net for an internal node. Used when a component has nodes that are not associated with symbol terminals and are not tied to a global node. Syntax error if node index is not a positive number, within range. Example:

%_0, %_1

@<propname> | @(<propname>)

Value of property named propname. Syntax error if propname is empty or contains spaces. Example:

@R, @IDSS

?<propname>(<expr1>)[:(<expr2>)]

If property named propname exists, substitute expr1, else expr2. Also, expr1 and expr2 may contain additional substitutions. Syntax error if propname is empty or contains spaces. Example:

?IDSS(IDSS = @IDSS):(IDSS = 0.05)

~<propname>(<expr1>)[:(<expr2>)]

If property named propname doesn’t exist, substitute expr1, else expr2. Syntax error if propname is empty or contains spaces. Example:

~SUB(SUB = MS)

?(<propname>==<value>)(<expr1>)[:(<expr2>)]

?(<propname>!=<value>)(<expr1>)[:(<expr2>)]

~(<propname>==<value>)(<expr1>)[:(<expr2>)]

~(<propname>!=<value>)(<expr1>)[:(<expr2>)]

Same as "?" and "~" above except the first term is evaluated for equal to (==) or not equal to (!=) and if true, substitute expr1 else expr2. Example:

?(sim==fullwave)(NSUM=@NSUM):(F0=@F0)

*<propname>(<expr1>)

If property named propname has changed from default definition value, then substitute expr1. Syntax error if propname is empty or contains spaces. Example:

*IDSS(IDSS = @IDSS)

&(<expr>)[^(pname1,pname2, . . . )]

Add all properties that have changed from default definition value, except those in the optional exclusion list. In expr, “$” can be used to represent the property name, and “#” the property value. Example:

&($=#)^(Model)

netlists all properties that changed on their default value except the Model property.

\n

A new line marker to inform the netlister to insert a new line. Example:

R@ID %0 %_0 @R \n C@ID %_0 %1 @C

\

The backslash is used as an escape character. The character following the backslash is not processed but added to the netlist string as is. To add a single “\”, use “\\”. Example:

R:@ID %0 %1 R=\{\2\*@R\}

Defined Variables

Global Reference String in Electronics Desktop

A global reference property processes its value the same way as the netlist string and places the result in the top-level (global) part of the circuit file.

<Simulator>GlobalRef=[string]

where

<Simulator> is Nexxim | Q3D | etc.

Additional Examples

The following additional examples help to demonstrate netlist string syntax.

NexximNetlist= CPLE@ID %0 %1 %2 %3 ?Z(Z=@Z) ?E(E=@E) ?F(F=@F) *A(A=@A)

“Z”, “E”, and “F” use the "?" conditional because the component definition values assigned to these parameters are different from those in the engine and should always be netlisted if they are present even if the user has not changed them. The “A” parameter uses the "*" conditional because its component definition value matches that of the engine and it needs to be netlisted if the user changes the instance value.

NexximNetlist= R@ID %0 %1 @R ?TC1(TC1=@TC1 ?TC2(tc2=@TC2)) ?TJ(TJ=@TJ) ?TNOM(TNOM=@TNOM)

In this example, TC1 is netlisted only if TC1 exists, and TC2 is netlisted only if TC1 and TC2 exist.

NexximNetlist= MSBENDO@ID %0 %1 w=@Length sub=@Substrate

“w” and “sub” is netlisted.

NexximNetlist= MOSFET@ID %0 %1 %2 %3 MODEL=@Model &($=#)^(Model)

Model is netlisted. The “&($=#)^(Model)” argument designates that all parameters should be netlisted as “name=value”, except for “Model”.

NexximNetlist = D@ID %0 %1 1N914

NexximGlobalRef = .LIB $SYSLIB/Vendor/D.lib

which may netlist to:

D22 net_3 net_4 1N914

< rest of design netlists ...>

.LIB $SYSLIB/Vendor/D.lib

NexximNetlist= R@ID %0 %1 R=\{\2\*@R\}

If ID is 1 and R is 100, the netlist is:

R1 net_0 net_1 R={2*100}