Under the View menu option there is an entry called "SPICE Netlist" which creates a popup window where you can copy the text you want. You can also go into the File menu option and select New Symbol to create symbols you can associate with the .lib files you create, to provide a pretty image to go along with it. (You do need to match up pins and watch out for grounds.)
There is a very good group that can directly answer all these questions and more at LTspice group on Yahoo groups.
I have also written a schematic parser that can read up the LTspice schematics. I wrote it to generate ASCII schematics automatically from these files. It could be adapted to prepare a net list. But I think the LTspice program itself does enough already. Unless I misunderstood your goals.
First, make yourself a user directory under 'sym':
Before adding anything (I already did, but we will get to that).
Start LTSpice, start a new schematic and then select add component:
I get this view with my parts directory shown:
Close LTSpice for now.
For an opamp (which is what I did here), copy the OPAMP2.sym file from the sym\Opamps directory to your directory and rename it with the name you want (which is what I did in the first picture).
Now get the subcircuit file and save it in the lib\sub directory:
Now open the asy file in your user directory in a text editor:
Here is part of the file:
SYMATTR Value ADA4666
SYMATTR Prefix X
SYMATTR Description Micropower Rail to Rail amplifier
SYMATTR SpiceModel ADA4666.cir
If there are no SYMATTR lines, then add them:
Version 4
SymbolType CELL
LINE Normal -32 32 32 64
LINE Normal -32 96 32 64
LINE Normal -32 32 -32 96
LINE Normal -28 48 -20 48
LINE Normal -28 80 -20 80
LINE Normal -24 84 -24 76
LINE Normal 0 32 0 48
LINE Normal 0 96 0 80
LINE Normal 4 44 12 44
LINE Normal 8 40 8 48
LINE Normal 4 84 12 84
WINDOW 0 16 32 Left 2
WINDOW 3 16 96 Left 2
SYMATTR Value ADA4666
SYMATTR Prefix X
SYMATTR Description Micropower Rail to Rail amplifier
SYMATTR SpiceModel ADA4666.cir
PIN -32 80 NONE 0
PINATTR PinName In+
PINATTR SpiceOrder 1
PIN -32 48 NONE 0
PINATTR PinName In-
PINATTR SpiceOrder 2
PIN 0 32 NONE 0
PINATTR PinName V+
PINATTR SpiceOrder 3
PIN 0 96 NONE 0
PINATTR PinName V-
PINATTR SpiceOrder 4
PIN 32 64 NONE 0
PINATTR PinName OUT
PINATTR SpiceOrder 5
Add any SYMATTR lines immediately before the PIN and PINATTR statements.
I changed the SYMATTR values to give a correct display name (Value), the Description field for what LTSpice shows in the selector window and the SpiceModel to the model I added in the sub folder.
Here it is:
I then place it:
Right click on the part and you get this:
This can now be used in any schematic.
I went through this when I added the Wurth magnetics library a while back.
The keys are:
Put the subcircuit in the sub folder
Put the symbol file in a directory of your choosing
Make sure the SYMMATR statements point at the subcircuit properly, and edit the name and description to get an accurate representation of what it is.
Note that the subcircuit must be complete in its own right.
In your case, you are trying to create a hierarchical block; there is an excellent description at the link.
As links die, here is the procedure:
Make the schematic you desire to use as a hierarchical block and save it with a name
Now label all nets that must have external visibility and save again.
Create a new symbol. The pins on this symbol must have the same name as the labels you attached.
Save this symbol as (the names must be the same for the schematic and symbol).
If your schematic has external models or subcircuits, use the .include directive using full path names in the schematic before saving (so they do not have to be in a working directory).
You should now be able to instantiate your hierarchical block.
Best Answer
Hierarchical or subcircuits are the same, after LTspice flattens the netlist. You can see this by checking
Generate Expanded Listing
in the control panel, theOperation
tab.The advantage hierarchical schematics have is the direct graphical access through the symbol editing, where you can open its contents as if it were a schematic, and easily probe voltages, currents, powers (needs the two
Save subcircuit ...
options checked inControl Panel > Save Defaults
). You can also probe inside plain subcircuits, but you have to check the expanded listing in the error log; it's more cumbersome, but not impossible.Overall, hierarchical designs are more user-friendly, but the disadvantage is the lack of encryption. Subcircuits can be encrypted to protect the contents, hierarchical designs cannot be. The expanded listing does not work with encrypted libraries, which is to be expected, therefore you are not able to save and plot internal quantities. Also, a subcircuit is more compact, typically one file, hierarchical schematics can be more than one. Oh, and you won't see nice yellow symbols...
Both ways, hierarchical and plain subcircuits, allow for external parameters to be passed on, such as your
Vs={Vcc}
example.None is faster or slower than the other in terms of computations for same designs, since, as I mentioned before, LTspice flattens the whole schematic into a netlist, which is nothing more than a programming language for SPICE.
Which one to use? Take your pick. In general, if you're working on the design, choose hierarchical for easy, graphical access, so that the end result can be transformed into a subcircuit that's ready to be encrypted, if you so desire.
Those fields mean nothing in terms of netlist, and the names shown in the component attribute editor are also flattened: if you check the netlist, all the lines get cropped up into a single line that belongs to the subcircuit.
They are only meaningful as some combinations, in terms of the order in which they appear in that line, and which has differnent effects together with the symbol: in some cases, it's possible to prevent the symbol from being edited. See, for example, an opamp from the existing library and try
R-Click
, with or withoutCtrl
-- it will not let you. This goes hand-in-hand with the encryption of subcircuits, but not hierarchical designs.