Source code for cbadc.circuit.components.integrator

from typing import Dict
from .. import Port, Terminal, _template_env, CircuitElement
from ..models.integrator import IntegratorModel


[docs]class Integrator(CircuitElement): def __init__( self, instance_name: str, model_name: str, input_offset: float = 0.0, gain: float = 1.0, out_lower_limit: float = -10.0, out_upper_limit: float = 10.0, limit_range: float = 1e-6, out_initial_condition: float = 0.0, ): if not instance_name or not isinstance(instance_name, str): raise TypeError(f'Expected str, got {type(instance_name)}') elif instance_name[0] != 'A': instance_name = 'A' + instance_name super().__init__( instance_name, [Terminal(), Terminal()], ) self.model = IntegratorModel( model_name, in_offset=input_offset, gain=gain, out_lower_limit=out_lower_limit, out_upper_limit=out_upper_limit, limit_range=limit_range, out_ic=out_initial_condition, )
[docs] def get_ngspice(self, connections: Dict[Terminal, Port]): return _template_env.get_template('ngspice/xspice.cir.j2').render( { 'instance_name': self.instance_name, 'terminals': self._get_terminal_names(connections), 'parameters': self._parameters_dict, 'comments': self.comments, 'model_instance_name': self.model.model_name, } )
[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, } )