sycan.components.basic.current_source

Independent current source (SPICE I).

Supports DC, AC-phasor, and waveform modes: "sine", "pulse", "exp".

Classes

CurrentSource(name, n_plus, n_minus, value)

Ideal current source.

class sycan.components.basic.current_source.CurrentSource(name, n_plus, n_minus, value, ac_value=None, *, include_noise=None, waveform=None, amplitude=None, frequency=None, phase=0, v1=None, v2=None, td=None, pw=None, td1=None, tau1=None, td2=None, tau2=None)[source]

Bases: Component

Ideal current source.

Drives current value from n_plus to n_minus internally, so externally the source pulls current out of n_plus and injects it into n_minus (SPICE convention).

ac_value is the small-signal phasor used in AC analysis; if None, AC analysis reuses value. Ideal sources are noiseless; include_noise is accepted for interface uniformity.

Waveforms — set waveform to model time-varying sources:

  • "sine"amplitude * sin(2π·frequency·t + phase).

  • "pulse" — rectangular pulse with v1, v2, td (delay), pw (pulse width). DC is v1.

  • "exp" — exponential pulse with v1, v2, td1 (rise delay), tau1 (rise time constant), and optional td2 / tau2 (fall). DC is v1.

Parameters:
  • name (str)

  • n_plus (str)

  • n_minus (str)

  • value (Expr)

  • ac_value (Expr | None)

  • include_noise (None | str | list[str] | tuple[str, ...] | frozenset[str])

  • waveform (str | None)

  • amplitude (Expr | None)

  • frequency (Expr | None)

  • phase (Expr | None)

  • v1 (Expr | None)

  • v2 (Expr | None)

  • td (Expr | None)

  • pw (Expr | None)

  • td1 (Expr | None)

  • tau1 (Expr | None)

  • td2 (Expr | None)

  • tau2 (Expr | None)

name: str
n_plus: str
n_minus: str
value: Expr
ac_value: Expr | None = None
include_noise: None | str | list[str] | tuple[str, ...] | frozenset[str] = None
waveform: str | None = None
amplitude: Expr | None = None
frequency: Expr | None = None
phase: Expr | None = 0
v1: Expr | None = None
v2: Expr | None = None
td: Expr | None = None
pw: Expr | None = None
td1: Expr | None = None
tau1: Expr | None = None
td2: Expr | None = None
tau2: Expr | None = None
ports: ClassVar[tuple[str, ...]] = ('n_plus', 'n_minus')
SUPPORTED_NOISE: ClassVar[frozenset[str]] = frozenset({})
stamp(ctx)[source]
Parameters:

ctx (StampContext)

Return type:

None