What this error means

When this check is enabled, ERC tries to build a simulation model for every symbol, the same way the simulator does before a run. It reads the symbol's Sim.* fields (Sim.Library, Sim.Name, Sim.Device, Sim.Type, Sim.Params, Sim.Pins), resolves the library file path, and looks the named model up in that file. Every error the model builder reports becomes one violation on that symbol, with the loader's message as the violation text: "Simulation model library not found at …", "could not find base model 'X' in library 'Y'", and similar.

Two scoping rules keep it from flooding. Symbols with no Sim.* fields produce nothing: R, L and C get a model inferred from their value silently, and everything else is skipped without comment. Power symbols, references starting with #, and anything marked "Exclude from simulation" (symbol or sheet) are never checked.

The default severity is ignore in both KiCad 9 and 10, so you only see this error if the project raised it in Schematic Setup → Electrical Rules → Violation Severity, where it is listed as "SPICE model issue" under Miscellaneous.

Common causes

1. The model library file moved, or the path is stale

Sim.Library stores a file path. A relative path is resolved against the project directory, then against the SPICE_LIB_DIR environment variable; an absolute path has to exist as written. Move the project to another machine without the model file, rename it, or point at a directory the machine doesn't have, and loading fails.

2. Sim.Name doesn't match any model in the file

The file loads, but no .model or .subckt in it has the name Sim.Name says, typically after renaming the model in the file or swapping in a vendor file whose internal name differs. The message is "could not find base model 'X' in library 'Y'".

3. Half-configured Sim fields left on the symbol

A Sim.Library without a Sim.Name, or a Sim.Type whose device/type combination doesn't resolve, fails the model build even though the symbol was never meant to simulate. Leftovers from an abandoned simulation experiment are the usual source.

How to fix it

Re-point the model at a file that exists

  1. Double-click the symbol and click Simulation Model…
  2. Under 'SPICE model from file', browse to the model file and pick the model from its contents.
  3. Keep the file inside the project folder so a project-relative path survives moving the project.
  4. Re-run ERC (Inspect → Electrical Rules Checker).

Use when: You simulate this design and the model file moved, was renamed, or never shipped with the project.

Remove the Sim fields from symbols that shouldn't simulate

  1. Open Symbol Properties and delete the Sim.Library / Sim.Name (and other Sim.*) rows, or tick Exclude from simulation.
  2. Re-run ERC.

Use when: The fields are leftovers. Excluding from simulation also drops the symbol from the SPICE netlist, so prefer deleting the stale fields if you might simulate the part later.

Use a built-in model instead of a file

  1. In Simulation Model…, pick a built-in SPICE model (ideal R/C/L, sources, switches) instead of 'SPICE model from file'.
  2. The definition is stored in the symbol's own fields, so there is no file path left to break.

Use when: The part is simple enough for an ideal model and you'd rather not manage a model file.

When it’s safe to exclude

This check is opt-in: it ships at ignore severity in KiCad 9 and 10, so excluding it means leaving the default alone. If you never simulate, there is nothing to do.

If you do simulate, run it at error (Schematic Setup → Electrical Rules → Violation Severity → "SPICE model issue"). It is the same model build the simulator runs, so every violation here is a symbol that will fail when you next simulate; catching that at ERC time is the point. Excluding individual markers on a design you simulate moves the failure to simulation time, where it is harder to trace back to a field on a symbol.

Gotchas

  • The violation text is whatever the model loader reported, not the fixed title, and one marker can carry several lines (a path failure followed by the lookup failure it caused).
  • A broken Sim.Library on a power symbol will never be reported: power symbols, #-prefixed references, and excluded-from-sim symbols and sheets are skipped entirely.
Minimal reproduction

Two-minute version: place a resistor, double-click it, click Simulation Model…, choose "SPICE model from file" and browse to any model file, close, then rename or delete the file. Set "SPICE model issue" to error in Schematic Setup → Electrical Rules → Violation Severity (it defaults to ignore) and run ERC.

The checked-in sample in data/erc/samples/simulation_model_issue/ is a directory because the check is severity-gated: the .kicad_pro raises simulation_model_issue to error, and the schematic holds one resistor whose Sim.Library names a missing file. Under KiCad 9.0.3 the run reports:

[simulation_model_issue]: File '<project dir>/' does not exist.
Error loading simulation model: could not find base model 'RMOD' in library '<project dir>/'
    ; error

The embedded repro library also emits one lib_symbol_issues warning, an artifact of the self-contained sample. Creating models.lib containing .model RMOD R next to the project and pointing Sim.Library at it (fix #1 in file form) drops the error count to zero, as does deleting the two Sim fields (fix #2).

FAQ

Why is ERC complaining about simulation models when I'm not running a simulation?

Because the project raised this check's severity — in KiCad 9 and 10 it ships at ignore and says nothing until someone turns it on. Set "SPICE model issue" back to ignore in Schematic Setup → Electrical Rules → Violation Severity, or delete the stale Sim fields it points at; symbols with no Sim fields are never flagged.

Does a SPICE model issue affect my netlist or PCB if I ignore it?

No. The check only exercises the simulation model build. The PCB netlist, footprint assignments and board transfer don't read the Sim fields, so a design that never simulates loses nothing by leaving this at ignore.

The simulation worked on my other computer — why is the model library not found now?

The model file didn't travel with the project. KiCad resolves a relative Sim.Library path against the project directory and then against the SPICE_LIB_DIR environment variable; an absolute path has to exist as written. Copy the model files into the project folder and re-point the symbol at them, and the path works on both machines.

Sources