Example #1
0
def test_noise():
    psf = PSF('samples/pnoise.raw/noiref.noise')
    sweep = psf.get_sweep()
    assert sweep.name == 'freq', 'sweep'
    assert sweep.units == 'Hz', 'sweep'
    assert len(sweep.abscissa) == 121, 'sweep'
    assert isinstance(sweep.abscissa[0], float), 'sweep'

    signals = {
        'RESref:fn': ('V^2/Hz', 'float double'),
        'RESref:rn': ('V^2/Hz', 'float double'),
        'RESref:total': ('V^2/Hz', 'float double'),
        'RESva:flicker': ('V^2/Hz', 'float double'),
        'RESva:thermal': ('V^2/Hz', 'float double'),
        'RESva:total': ('V^2/Hz', 'float double'),
        'Rref:rn': ('V^2/Hz', 'float double'),
        'Rref:total': ('V^2/Hz', 'float double'),
        'Rva:rn': ('V^2/Hz', 'float double'),
        'Rva:total': ('V^2/Hz', 'float double'),
        'out': ('V/sqrt(Hz)', 'float double'),
    }
    for signal in psf.all_signals():
        name = signal.name
        assert name in signals, signal.name
        units, kind = signals.pop(name)
        assert units == signal.units, signal.name
        assert kind == signal.type.kind, signal.name
        if name == 'out':
            assert isinstance(signal.ordinate[0], float), signal.name
            assert len(signal.ordinate) == 121
            assert max(signal.ordinate) <= 6e-06
            assert min(signal.ordinate) >= 3e-10
    assert not signals
    signal = psf.get_signal('Rref:total')
    units = signal.units
    assert psf.units_to_unicode(units) == 'V²/Hz', signal.name
    assert psf.units_to_latex(units) == 'V^2/Hz', signal.name
    signal = psf.get_signal('out')
    units = signal.units
    assert psf.units_to_unicode(units) == 'V/√Hz', signal.name
    assert psf.units_to_latex(units) == 'V/sqrt(Hz)', signal.name
Example #2
0
def test_dc_oppoint():
    psf = PSF('samples/dcOpInfo.info.psfascii')
    signals = """
        NM0.beff        A/V²  real
        NM0.betaeff     A/V²  real
        NM0.cbb         F     real
        NM0.cbd         F     real
        NM0.cbdbi       F     real
        NM0.cbg         F     real
        NM0.cbs         F     real
        NM0.cbsbi       F     real
        NM0.cdb         F     real
        NM0.cdd         F     real
        NM0.cddbi       F     real
        NM0.cdg         F     real
        NM0.cds         F     real
        NM0.cgb         F     real
        NM0.cgbovl      F     real
        NM0.cgd         F     real
        NM0.cgdbi       F     real
        NM0.cgdovl      F     real
        NM0.cgg         F     real
        NM0.cggbi       F     real
        NM0.cgs         F     real
        NM0.cgsbi       F     real
        NM0.cgsovl      F     real
        NM0.cjd         F     real
        NM0.cjs         F     real
        NM0.csb         F     real
        NM0.csd         F     real
        NM0.csg         F     real
        NM0.css         F     real
        NM0.cssbi       F     real
        NM0.ft          Hz    real
        NM0.fug         Hz    real
        NM0.gbd         S     real
        NM0.gbs         S     real
        NM0.gds         S     real
        NM0.gm          S     real
        NM0.gmb         S     real
        NM0.gmbs        S     real
        NM0.gmoverid    1/V   real
        NM0.i1          A     real
        NM0.i3          A     real
        NM0.i4          A     real
        NM0.ib          A     real
        NM0.ibd         A     real
        NM0.ibe         A     real
        NM0.ibs         A     real
        NM0.ibulk       A     real
        NM0.id          A     real
        NM0.idb         A     real
        NM0.ide         A     real
        NM0.ids         A     real
        NM0.ig          A     real
        NM0.igb         A     real
        NM0.igcd        A     real
        NM0.igcs        A     real
        NM0.igd         A     real
        NM0.ige         A     real
        NM0.igidl       A     real
        NM0.igisl       A     real
        NM0.igs         A     real
        NM0.is          A     real
        NM0.isb         A     real
        NM0.ise         A     real
        NM0.isub        A     real
        NM0.pwr         W     real
        NM0.qb          Coul  real
        NM0.qbd         Coul  real
        NM0.qbi         Coul  real
        NM0.qbs         Coul  real
        NM0.qd          Coul  real
        NM0.qdi         Coul  real
        NM0.qg          Coul  real
        NM0.qgi         Coul  real
        NM0.qinv        Coul  real
        NM0.qsi         Coul  real
        NM0.qsrco       Coul  real
        NM0.region            integer
        NM0.reversed          integer
        NM0.ron         Ω     real
        NM0.rout        Ω     real
        NM0.self_gain         real
        NM0.tk          K     real
        NM0.type              integer
        NM0.ueff              real
        NM0.vbs         V     real
        NM0.vdb         V     real
        NM0.vds         V     real
        NM0.vdsat       V     real
        NM0.vdsat_marg  V     real
        NM0.vdss        V     real
        NM0.vearly      V     real
        NM0.vfbeff      V     real
        NM0.vgb         V     real
        NM0.vgd         V     real
        NM0.vgs         V     real
        NM0.vgsteff     V     real
        NM0.vgt         V     real
        NM0.vsat_marg   V     real
        NM0.vsb         V     real
        NM0.vth         V     real
        NM0.vth_drive   V     real
        V0.i            A     real
        V0.pwr          W     real
        V0.v            V     real
        V1.i            A     real
        V1.pwr          W     real
        V1.v            V     real
    """.strip()
    for line in signals.splitlines():
        components = line.split()
        if len(components) == 3:
            name, units, kind = components
        else:
            name, kind = components
            units = ''
        type_maps = dict(
            real='float double',
            complex='complex double',
            integer='int byte',
        )
        signal = psf.get_signal(name)
        assert name == signal.name, signal.name
        assert units == PSF.units_to_unicode(signal.units), signal.name
        assert type_maps[kind] == signal.type.kind, signal.name