Skip to main content

Spice AST

The spice_ast module defines the Abstract Syntax Tree (AST) structures for SPICE netlists. Each element of a SPICE circuit (components, sources, subcircuits, etc.) is represented as a class with relevant attributes.

Base Classes

Ast

Base class for all AST elements.

class Ast(BaseModel):
pass

Component

Base class for circuit components with name, connections, and features.

class Component(Ast):
name: str
connections: list[str]
features: list[Feature]

Expression

Represents expressions with referenced identifiers and source span.

class Expression(Ast):
references: set[str]
span: Span

Feature

Represents a feature/parameter with name and value.

class Feature(Ast):
name: str
value: Expression

Lib

Library declaration with path and optional arguments.

class Lib(Ast):
path: Span
argument: Optional[Span]

Include

Include declaration with file path.

class Include(Ast):
path: Span

Circuit Definition

CircuitDef

Complete circuit definition with name, libraries, includes, parameters, components, connections, and formal parameters.

class CircuitDef(Ast):
name: str
libs: list[Lib]
includes: list[Include]
parameters: list[Feature]
components: list[Component]
connections: list[str]
formal_parameters: list[Feature]

Passive Components

Resistor

Resistor component with value and optional model.

class Resistor(Component):
value: Expression
model: Optional[str]

Capacitor

Capacitor component with optional value and model.

class Capacitor(Component):
value: Optional[Expression]
model: Optional[str]

Inductor

Inductor component with optional value and model.

class Inductor(Component):
value: Optional[Expression]
model: Optional[str]

CoupledInductors

Coupled inductors component with coupling value.

class CoupledInductors(Component):
value: Expression

Semiconductor Devices

Diode

Diode component with model name and on/off state.

class Diode(Component):
model: str
on: bool

Bjt

Bipolar junction transistor with model and state.

class Bjt(Component):
model: str
on: bool

Mosfet

MOSFET component with model and state.

class Mosfet(Component):
model: str
on: bool

Jfet

JFET component with model, optional area, and state.

class Jfet(Component):
model: str
area: Optional[Expression]
on: bool

Mesfet

MESFET component with model, optional area, and state.

class Mesfet(Component):
model: str
area: Optional[Expression]
on: bool

Sources

VoltageSource

Voltage source with DC, AC, distortion, and transient specifications.

class VoltageSource(Component):
dc_value: Optional[Expression]
ac_magnitude: Optional[Expression]
ac_phase: Optional[Expression]
distortion_f1: DistortionTerm
distortion_f2: DistortionTerm
transient_value: Optional[Expression]

CurrentSource

Current source with DC, AC, distortion, and transient specifications.

class CurrentSource(Component):
dc_value: Optional[Expression]
ac_magnitude: Optional[Expression]
ac_phase: Optional[Expression]
distortion_f1: DistortionTerm
distortion_f2: DistortionTerm
transient_value: Optional[Expression]

DistortionTerm

Distortion term with magnitude and phase components.

class DistortionTerm(BaseModel):
magnitude: Optional[Expression]
phase: Optional[Expression]

Controlled Sources

Vcvs

Voltage-controlled voltage source.

class Vcvs(Component):
value: Expression

Vccs

Voltage-controlled current source.

class Vccs(Component):
value: Expression

Cccs

Current-controlled current source with controlling voltage name.

class Cccs(Component):
vnam: str
value: Expression

Ccvs

Current-controlled voltage source with controlling voltage name.

class Ccvs(Component):
vnam: str
value: Expression

Transmission Lines

LosslessTransmissionLine

Lossless transmission line component.

class LosslessTransmissionLine(Component):
pass

LossyTransmissionLine

Lossy transmission line with model.

class LossyTransmissionLine(Component):
model: str

SingleLossyTransmissionLine

Single lossy transmission line with model.

class SingleLossyTransmissionLine(Component):
model: str

UniformRcLine

Uniform RC line with model.

class UniformRcLine(Component):
model: str

CoupledMulticonductorLine

Coupled multiconductor line with model.

class CoupledMulticonductorLine(Component):
model: str

Switches and Subcircuits

SwitchVC

Voltage-controlled switch with model and state.

class SwitchVC(Component):
model: str
on: bool

SwitchCC

Current-controlled switch with controlling voltage, model, and state.

class SwitchCC(Component):
vnam: str
model: str
on: bool

Subcircuit

Subcircuit instance with parent reference.

class Subcircuit(Component):
parent: str

Placeholders

XSpiceCodeModel

XSpice code model component (not yet implemented).

class XSpiceCodeModel(Component):
pass

BehaviouralSource

Behavioural source component (not yet implemented).

class BehaviouralSource(Component):
pass

VerilogDevice

Verilog device component (not yet implemented).

class VerilogDevice(Component):
pass