Netlist String Syntax Reference
The general form for a netlist string is:
<Simulator>Netlist=[netlist_string]
where <Simulator>
is Simplorer, and so on.
The netlist string may contain the following netlist property syntax:
%<terminal index, 0-based>
Name of net connected to terminal index.
(Syntax error if 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 (optionally) expr2. 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 (optionally) expr2.
(Syntax error if spaces in propname or propname is empty.)
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 (optionally) 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 spaces in propname or propname is empty.)
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)
will netlist all properties that changed from 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
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
$SYSLIB will be expanded to <InstallationDirectory>/syslib upon netlisting, where <Installation Directory> is the Twin Builder installation directory.
$USERLIB will be expanded to <InstallationDirectory>/userlib upon netlisting.
$PERSONALLIB will be expanded to <ProjectDirectory>/PersonalLib upon netlisting, where <ProjectDirectory> is the location you specified for your Twin Builder projects.
Global Reference String in Twin Builder
A global reference property will process its value the same way as the netlist string and will place the result in the top-level (global) part of the circuit file.
<Simulator>GlobalRef=[string]
where <Simulator> is Simplorer, and so on
Examples:
SimplorerNetlist=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 even if you have not changed them. The A parameter uses the “*” conditional because its component definition value matches that of the engine and we just need to netlist it if you change the instance value.
SimplorerNetlist=R@ID %0 %1 @R ?TC1(TC1=@TC1 ?TC2(tc2=@TC2)) ?TJ(TJ=@TJ) ?TNOM(TNOM=@TNOM)
In this example, TC1 will be netlisted only if TC1 exists, and TC2 will be netlisted only if TC1 and TC2 exist.
SimplorerNetlist=MSBENDO:@ID %0 %1 w=@Length sub=@Substrate
W and Sub will always be netlisted.
SimplorerNetlist=MOSFET:@ID %0 %1 %2 %3 MODEL=@Model &($=#)^(Model)
Model will always be netlisted. The &($=#)^(Model) indicates to netlist all the parameters as name=value, except for Model.
SimplorerNetlist=D@ID %0 %1 1N914
SimplorerGlobalRef =.LIB $SYSLIB/Vendor/D.lib
which may netlist to:
D22 net_3 net_4 1N914
< rest of design netlists ...>
.LIB $SYSLIB/Vendor/D.lib
SimplorerNetlist=R:@ID %0 %1 R=\{\2\*@R\
If ID is 1 and R is 100, the netlist will be:
R:1 net_0 net_1 R={2*100}