SPICE Simulator Guide

Komplet teknisk dokumentation og historie

BASERET PÅ SPICE.TXT

Hvad er SPICE?

SPICE (Simulation Program with Integrated Circuit Emphasis) er et grundlæggende værktøj til at teste elektroniske kredsløb på computeren. Det analyserer spænding, strøm og frekvens ved at løse matematiske ligninger for komponenterne. SPICE kan simulere alt fra simple modstande til komplekse integrerede kredsløb med tusindvis af transistorer.

Programmet blev oprindeligt udviklet til mainframe-computere, men findes i dag i utallige varianter til både Windows, Linux og Mac. SPICE er industristandarden for kredsløbssimulation og bruges af elektronikingeniører over hele verden til at verificere design før dyre prototyper fremstilles.

Kernen i SPICE er "Modified Nodal Analysis" (MNA) - en matematisk metode til at opstille og løse de matrix-ligninger der beskriver kredsløbet. SPICE løser ikke ligningerne symbolsk, men numerisk ved hjælp af iterative metoder som Newton-Raphson.

Historien bag SPICE

CANCER (1969)

Startede som et studenterprojekt under Professor Ron Rohrer på University of California, Berkeley. Navnet var en provokation mod militær-finansierede simulatorer. CANCER var den første kredsløbssimulator der brugte "Sparse Matrix"-metoden til at løse de komplekse ligninger effektivt. Programmet kunne simulere både ikke-lineære DC og transient (tidsdomæne) problemer.

SPICE1 (1972)

Laurence Nagel omskrev CANCER og frigav det som "Public Domain" under navnet SPICE. Dette var en revolutionerende beslutning, da det sikrede teknisk fremgang gennem fri deling. Alle kunne bruge, modificere og forbedre koden. SPICE1 brugte stadig FORTRAN og havde begrænsede modeller for aktive komponenter. Det introducerede dog den første implementering af Gummel-Poon transistor-modellen.

SPICE2 (1975)

Introducerede "Modified Nodal Analysis" (MNA) som er den matematiske metode stadig bruges i dag. Forbedrede transistor-modeller betydeligt og tilføjede AC analyse (small-signal frekvensdomæne). Version 2g.6 fra 1983 er stadig grundlaget for mange moderne simulatorer og betragtes som den mest stabile og gennemtestede version nogensinde. SPICE2 kunne håndtere større kredsløb og havde bedre konvergens-algoritmer.

SPICE3 (1985)

Komplet omskrivning fra FORTRAN til C, hvilket gjorde programmet lettere at vedligeholde og udvide. Tilføjede grafisk brugerflade (X Window System) og interaktive kommandoer. Desværre led SPICE3 af stabilitetsproblemer i de tidlige versioner, hvilket gjorde at mange forblev ved SPICE2g.6. Senere versioner (3c1, 3d1, 3e2, 3f4, 3f5) forbedrede stabiliteten betydeligt.

Hvorfor bruge SPICE?

  • Økonomi: Undgå dyre fejl ved at teste kredsløb før produktion. En fejl fundet i simulationen koster næsten ingenting sammenlignet med en fejl i silicium.
  • Tid: Hurtigere end at bygge fysiske prototyper. Komplekse IC-design kan simuleres på timer frem for uger.
  • Præcision: Kan måle strømme og spændinger der er umulige at måle fysisk (f.eks. inde i en IC).
  • Parametrisk analyse: Test hvordan komponent-tolerancer påvirker kredsløbet (Monte Carlo analyse).
  • Frekvensanalyse: Se bode-plots og fasekarakteristikker uden signalgenerator og oscilloskop.
  • Støjanalyse: Beregn termisk støj, flicker støj og støjtal før hardware bygges.
  • Temperatur-analyse: Simuler kredsløbet ved -40°C til +125°C for at sikre drift over hele temperaturområdet.
  • Optimering: Automatisk justering af komponentværdier for at opnå ønskede specifikationer.

Matematisk baggrund

SPICE bruger Modified Nodal Analysis (MNA) til at formulere kredsløbsligningerne. For et kredsløb med N noder opstilles der N ligninger baseret på Kirchhoffs Current Law (KCL). Matrix-formen er:

Y × V = I

Hvor Y er admittance-matricen, V er node-spændingsvektoren, og I er strømkilde-vektoren. For ikke-lineære komponenter (dioder, transistorer) bruges Newton-Raphson iteration til at linearisere karakteristikkerne omkring det aktuelle arbejdspunkt.

For transient analyse bruges numerisk integration (trapezoidal eller Gear metoder) til at beregne kondensatorers og spolers reaktans som funktion af tid.