Okay. Lots of problems. This mostly comes from just being slightly ignorant about symbols and libraries and pin assignments in LTSpice. It's actually pretty easy, once someone clues you in.
- I started by downloading the ZIP file you mentioned, probably following the exact same process you did. I unzipped it and loaded the .LIB file into NOTEPAD to check it out and keep it visible for inspection. The text appeared to be valid syntax for LTSpice, with a fast, quick glance; so I assumed it was okay and took the next step.
- I now copied the .LIB file to a place where LTSpice can find it. If you don't know where that is, or if you want to add some handy directories, then go to Tools/Control Panel and select the "Sym. & Lib. Search Paths" tab. It's all there. You MUST put the .LIB file in a directory that LTSpice knows about. And this is the place where you find out and/or tell LTSpice about such things.
- Once the .LIB file was in place, the next thing to do is to download the datasheet and get it up and visible, as well. Now I have the .LIB file visible AND ALSO the datasheet visible. And I know that LTSpice can find the .LIB file, as well. Good.
- I fired up LTSpice and started a new schematic sheet. I hit F2 and dropped into the Misc folder and selected the DIP8 symbol and dropped it down on the schematic sheet.
- I right-clicked on the DIP8 symbol and hit the "Open Symbol" button in the upper left corner of the popup dialog box. This takes me to the symbol editor.
- At the bottom of the symbol, I see "Value" showing. You don't have a value and you don't need it. So use the scissors and delete it. Yes, I know you thought that INA129 was the value. But no. That's a SpiceModel, not a Value. So we are deleting this stupid thing from the symbol because you will NEVER use it. Instead, you will be putting down the SpiceModel onto the symbol in the next step.
- Now go to Edit/Attributes/Attibute Window (or else just hit ctrl-W) and a new popup dialog appears. Select "SpiceModel" (which you do want to show up on your schematic) and hit "OK". Now place that symbol where you saw "Value" before you deleted it. Or somewhere else you prefer. Your call. Just stick it somewhere.
- Now go to Edit/Attributes/Edit Attributes (or else just hit ctrl-A) and a new popup dialog appears. Edit the field there for SpiceModel to say (without the quotes!) "INA129". Note that there is no .LIB added to this name. All you want here is the actual name found on the actual .SUBCKT line. Then go down to the field there for ModelFile and say (without the quotes!) "INA129.LIB". Now hit "OK" and you are done with that part. You've told the symbol what .SUBCKT to use and you've told the symbol also the name of the library file (which can have MANY MORE parts in it than just one) so that it knows about where to find the model. (Note that INA129 is NOT a Value. It is a SpiceModel. There is a big difference.)
- No! You are not even CLOSE TO DONE yet. It would be a good idea at this point to label all the pins. Use Draw\Text to achieve this (or just hit 'T') and take note of the "justification" choices you have. Also the option for vertical text might be useful. Regardless, set about labeling your pins. You can leave the existing numbers there if you want. Or else just delete them. Your call.
- No. You are not done! Now, look at the 8 little, tiny squares where all the pins are. Those are the port pins. These MUST MATCH UP with your model file and with your schematic. Now you need those things. Here come the remaining instructions for the pins:
- Right click on pin 1's little blue square. This is pin 1. But it also says that the netlist order is also 1. BAD NEWS. Datasheet says this is one of the gain sense pins. Now go over to your NOTEPAD copy of the .LIB file and READ IT. Look at the line of text there for the .SUBCKT? See that it says the first gain sense is the 7th position there??? So set the netlist order to 7 and hit OK. Now pin 1, which the datasheet says is a gain resistor pin, matches up with what the .LIB file says is on the 7th netlist spot.
- Right click on pin 8's little blue square. This is pin 8. But it also says that the netlist order is also 8. GOOD NEWS. This is, as the datasheet confirms, the other gain sense pin. And if you go over to your copy of the .LIB file you will see that it says the second gain sense is the 8th position. So you got lucky here. They match up. No change.
- Right click on pin 2's little blue square. This is pin 2. But it also says that the netlist order is also 2. GOOD NEWS. The datasheet says this is the inverting input and reading the .LIB file it also says the same thing. So you got lucky here. They match up. No change.
I won't belabor the rest. You need to go to EACH AND EVERY single pin, verify that the netlist order for that pin matches up with the function shown in the datasheet and the netlist order shown in the .LIB file. There will be some more edits, as you just aren't lucky enough that they will all just match up nicely. So take each one of these carefully, study the datasheet for the meaning of the pin (if you didn't already label everything as I'd recommended before) and then study the .SUBCKT line to find out the netlist order for that pin. Change, as appropriate.
Short breather. Note that what you have done is to modify a default symbol. The .SUBCKT line specifies a bunch of function parameters (so to speak) in some ordering. It's just like a function in C, where the first parameter means one thing and the second parameter means something else, etc. You have to examine that parameter list to see what they mean. If no one placed any comments above, you might have a really hard time figuring that out. So you need to hope that someone did put down a description. LTSpice (any Spice, really) needs to figure out how to "call" this subroutine. To figure that out, it needs to know which wire is passed to which parameter of the .SUBCKT. When you create a symbol, you get to stick down "pads" there which Spice recognizes as "special" and allows wires to be attached to them. These pads get a "netlist" order number tied to them, too, so that when wires are attached to these "pads" then Spice knows which parameter is affected by that wire. Otherwise, Spice would just have to guess. And that would not be so good. So all you are doing here is telling Spice which parameter of the .SUBCKT model gets the value of the wire attached to it. This is called the "netlist order" by LTSpice. It also has a "pin number" which can be displayed, or not. The pin number doesn't really mean anything. It's just a display thing. It does NOT affect how the .SUBCKT is handled.
Now SAVE THIS SYMBOL!!!! I'd recommend that you save it in a handy place (like where it can be found again.) There is a symbol subdirectory for LTSpice. And inside that subdirectory there is another one for opamps. You could stuff it there. Or you could go to the Control Panel and that tab I mentioned and add a directory there for it to find symbols. But you need to save this symbol and probably with an appropriate name that is NOT "DIP8".
Now things will work. I stuck in your parts and it simulates.
Oh, and because you told the symbol about the name of .LIB file and told LTSpice where to find that .LIB file, you will never need a .include on your schematic. LTSpice has all the info it needs without it.
Oh. And if you didn't know it, suppose you have a whole BUNCH of .LIB files for a lot of DIP8 packaged instrumentation amplifiers, each of which have the same pinout? Well. Just paste all those .LIB files into a single, LONG .LIB file and save it with a new, special collection name. Link the ModelFile attribute to that file. Now, when you drop that part onto the schematic, you can right click it to change the SpiceModel there and a long dropdown list of all those .SUBCKT entries will show up, allowing you to pick and choose which of them you want to use today. You can make collections of PUJTs, UJTs, gas discharge tubes, pentode vacuum tubes, or... whatever you want. And LTSpice will just manage the entire lot of the models or subcircuits by name for you. Just as if you'd added an NPN. It's that easy.
For example, here you could also download the .LIB for the INA128, as well, and fold it into the same .LIB file. Arrange things in the new .LIB so that the INA128 .subckt appears before the INA129 .subckt, if you want a sorted list. Then save it.
Here's my output example:
You aren't allowed to change the prefix letter of a component however you like. Each prefix letter is hard-coded to create a certain type of component, and you can't change that. For example, all diodes must start with "D", and all resistors must start with "R".
By changing the prefix to "P" you told LTSpice that you're placing a transmission line in your circuit, rather than a diode.
But actually, your model is a subcircuit, rather than a single diode. So you must use the "X" prefix rather than "D".
For a more general tutorial on creating subcircuit models and inserting them into other designs, see this old question: How to make LTSpice sub-circuits available globally?.
Best Answer
Messing with the default installation files is a sure way to create confusion should you need to export a project to another computer, or to someone else, because they will not have your libraries, almost surely. It's not forbidden, either, but don't forget to only blame yourself if things go wrong.
Having said that, if you open up the manual under
Schematic Capture > Creating New Symbols > Adding Attributes
, you'll see this somewhere in the page:(emphasis mine) You could have found this out on your own in less than 5min. Try not to avoid the manual, even if it is rather spartan, it may have the answers you're looking for. Additionally, you could also search ltwiki for other, hidden explanations. But it really boils down to: know your tool before using it.
Try adding your subcircuit name in the
SpiceModel
line, and the path and name of the library in theModelFile
line, and it should work as you probably intended.This should be a new question, but models are not handled like subcircuits. Models reside in
LTspiceXVII/lib/cmp
, and there is no other default path where LTspice looks into. It's not recommended that you should modify these files, but it's not forbidden, also; if something goes wrong, don't forget o blame yourself, not others, or LTspice.The recommended ways of doing it are:
Add your model as a SPICE directive: press
s
and paste the.model
definition there, place it in the schematic, then rename the symbol as the.model
. You could use any symbol that has the correct number of pins, but it's easier to work with readily avaiable ones. For example, if you want aNPN
, you should choose the defaultNPN
symbol (orNPN2/3/4
), and only renameNPN
to whatever name the model has. If it's.model BC107 NPN(...)
, then renameNPN
toBC107
.Or, if your model definitions are stored elsewhere, LTspice also accepts full paths to that location in the form of
.inc /full/path/to/custom_models.txt
, or whatever path and name exists.So, for your case, if you have a transistor model, not a subcircuit, then place an appropriate symbol in the schematic, rename
NPN
, orNMOS
, or whatever to the desired.model <NAME> ...
, and make sure that the prefix is the correct one:N
forNPN
orPNP
,M
forNMOS
orPMOS
, etc. Then, either use the.inc
card to include an ASCII file with the model definition that resides on your storage, or copy-paste the definition and place it as a SPICE directive in the schematic by pressings
.