sycan.components.blocks.transfer_function

Generic linear time-invariant transfer-function block.

Behavioural two-port that enforces

V(out_p) - V(out_m) = H * (V(in_p) - V(in_m))

where H is an arbitrary sympy expression in var (default s). Useful for signal-flow / loop-filter modelling — sigma-delta modulators, behavioural filters, control-system blocks — where the device-level realisation is irrelevant. The control inputs are high-impedance (no current is drawn) and the output drives like an ideal VCVS.

DC handling: H is evaluated at var = 0. If the result is finite the block stamps as a static VCVS with that DC gain; otherwise the output is left open (no MNA contribution and no auxiliary row), matching the way an ideal capacitor or integrator would behave at DC. Pass dc_gain to override either choice.

Classes

TransferFunction(name, in_p, in_m, out_p, ...)

class sycan.components.blocks.transfer_function.TransferFunction(name: 'str', in_p: 'str', in_m: 'str', out_p: 'str', out_m: 'str', H: 'cas.Expr', var: 'cas.Symbol' = <factory>, dc_gain: 'Optional[cas.Expr]' = None, *, include_noise: 'NoiseSpec' = None)[source]

Bases: Component

Parameters:
  • name (str)

  • in_p (str)

  • in_m (str)

  • out_p (str)

  • out_m (str)

  • H (Expr)

  • var (Symbol)

  • dc_gain (Expr | None)

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

name: str
in_p: str
in_m: str
out_p: str
out_m: str
H: Expr
var: Symbol
dc_gain: Expr | None = None
include_noise: None | str | list[str] | tuple[str, ...] | frozenset[str] = None
ports: ClassVar[tuple[str, ...]] = ('in_p', 'in_m', 'out_p', 'out_m')
has_aux: ClassVar[bool] = True
SUPPORTED_NOISE: ClassVar[frozenset[str]] = frozenset({})
aux_count(mode)[source]

Number of auxiliary branch currents the component needs in mode.

Parameters:

mode (str)

Return type:

int

stamp(ctx)[source]
Parameters:

ctx (StampContext)

Return type:

None