Source code for cbadc.circuit.components.vcvs

from typing import Dict
from .. import (
    SPICE_VALUE,
    Port,
    Terminal,
    CircuitElement,
    _template_env,
)
from ..models.vcvs import VoltageControlledVoltageSourceModel


[docs]class VoltageControlledVoltageSource(CircuitElement): def __init__( self, instance_name: str, model_name: str, value: SPICE_VALUE, ): if not instance_name or not isinstance(instance_name, str): raise TypeError(f"Expected str, got {type(instance_name)}") elif instance_name[0] != "E": instance_name = "E" + instance_name super().__init__( instance_name, [ Terminal("VDD"), Terminal("VSS"), Terminal("IN_P"), Terminal("IN_N"), Terminal("OUT_P"), Terminal("OUT_N"), ], model_name, value=value, ) self.model = VoltageControlledVoltageSourceModel( model_name, value=float(value), )
[docs] def get_ngspice(self, connections: Dict[Terminal, Port]) -> str: return _template_env.get_template("ngspice/vcvs.cir.j2").render( { "instance_name": self.instance_name, "terminals": self._get_terminal_names(connections), "value": self._parameters_dict["value"], "comments": self.comments, } )
[docs] def get_spectre(self, connections: Dict[Terminal, Port]): return _template_env.get_template("spectre/verilog_ams.cir.j2").render( { "instance_name": self.instance_name, "terminals": self._get_terminal_names(connections), "comments": self.comments, "model_instance_name": self.model.model_name, } )